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

Tim*_*Tim 31 linux cpu bash core

我只是想知道如何在 bash 中找出用户现在在 Linux 服务器上使用的 CPU 核数?

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

感谢致敬!

Ali*_*xel 39

要获取每个 CPU的 CPU内核数:

grep "^core id" /proc/cpuinfo | sort -u | wc -l
Run Code Online (Sandbox Code Playgroud)

或获得的数量物理CPU的

grep "^physical id" /proc/cpuinfo | sort -u | wc -l
Run Code Online (Sandbox Code Playgroud)


Mat*_*nit 26

我不知道它是否有帮助,但您可以使用该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
Run Code Online (Sandbox Code Playgroud)

在这个例子中,你可以看到,CPU的016正在做更多的工作比他们的休息。有时您会看到单个 CPU 接近(或处于)100%,而其他 CPU 则为零。这可以指示程序(或程序的一部分)是单线程的并且一次只能使用一个 CPU。

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

  • @AlixAxel 尝试使用 `aptitude search sysstat`。 (2认同)

Emm*_*Eff 2

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

  • 我认为你没有理解我的回答。正在使用的核心数量始终是可用核心的总数。使用整体系统负载作为一个因素来确定是否应限制您的作业提交。 (3认同)