我在 Linux 服务器上使用了多少个核心?

我在 Linux 服务器上使用了多少个核心?

我只是想知道如何在 bash 中找出用户现在在 Linux 服务器上使用了多少个 CPU 内核?

我正在向服务器提交大量后台作业,因此我想编写一个 bash 脚本,在提交作业之前检查我提交的正在运行的作业(进程)是否太多,因为我必须让其他用户有足够的核心来用于他们的作业。我想知道哪个 bash 命令可以告诉我我的作业现在使用了多少个核心。

感谢致敬!

答案1

为了获得CPU 数量核心每个 CPU:

grep "^core id" /proc/cpuinfo | sort -u | wc -l

或者获取数量身体的CPU

grep "^physical id" /proc/cpuinfo | sort -u | wc -l

答案2

我不知道这是否有帮助,但您可以使用该mpstat实用程序来获取单个处理器(或核心)的 CPU 使用情况明细。例如:

$ mpstat -P ALL 1

12:49:59 PM  CPU   %user   %nice    %sys %iowait    %irq   %soft  %steal   %idle    intr/s
12:50:00 PM  all    7.89    0.00    1.25    0.88    0.00    0.00    0.00   89.97   1359.00
12:50:00 PM    0   14.00    0.00    0.00    0.00    0.00    0.00    0.00   86.00   1043.00
12:50:00 PM    1   15.84    0.00    7.92    3.96    0.00    0.99    0.00   71.29    297.00
12:50:00 PM    2    3.96    0.00    0.00    1.98    0.00    0.99    0.00   93.07      0.00
12:50:00 PM    3    3.96    0.00    0.99    2.97    0.00    0.00    0.00   92.08      0.00
12:50:00 PM    4    4.00    0.00    0.00    0.00    0.00    0.00    0.00   96.00      0.00
12:50:00 PM    5    4.95    0.00    0.99    0.00    0.00    0.00    0.00   94.06     18.00
12:50:00 PM    6   10.89    0.00    0.99    0.00    0.00    0.00    0.00   88.12      0.00
12:50:00 PM    7    5.05    0.00    0.00    0.00    0.00    0.00    0.00   94.95      0.00

在此示例中,您可以看到 CPU 016正在执行比其他 CPU 更多的工作。有时您会看到单个 CPU 接近(或达到)100%,而其他 CPU 则为零。这可能表明程序(或程序的一部分)是单线程的,并且一次只能使用一个 CPU。

mpstat要在 Fedora、RHEL 或 CentOS 系统上安装,请使用yum install sysstat

答案3

除非明确配置为不这样做(即,将进程固定到特定 CPU),否则可以假定所有核心始终处于使用状态。调度程序将为进程分配下一个可用核心。例如,“系统监视器”(GNOME 的一部分)显示我的机器的所有 4 个核心的负载几乎相同。

答案4

如果您想这样做以使其在 Linux 和 OS X 上运行,您可以执行以下操作:

CORES=$(grep -c ^processor /proc/cpuinfo 2>/dev/null || sysctl -n hw.ncpu)

相关内容