Answers:
要获取每个CPU 的CPU 核心数:
grep "^core id" /proc/cpuinfo | sort -u | wc -l
或获得的数量物理 CPU的:
grep "^physical id" /proc/cpuinfo | sort -u | wc -l
我不知道它是否有帮助,但是您可以使用该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的0
,1
和6
正在做更多的工作比他们的休息。有时您会看到单个CPU接近(或处于100%),而其他CPU则为零。这可以指示单线程的程序(或程序的一部分),并且一次只能使用一个CPU。
要mpstat
在Fedora,RHEL或CentOS系统上安装,请使用yum install sysstat
。
# aptitude search mpstat #
。
aptitude search systat
代替。
除非明确配置为不将其固定(即,将进程固定到特定的CPU),否则可以假定所有内核一直处于使用状态。调度程序将为进程分配下一个可用内核。举例来说,“系统监视器”(GNOME的一部分)显示了我的机器所有4个内核的负载几乎相同。
因此,您将在此处看到一些响应,这些响应将告诉您如何利用内核。
但是-这并不是真正为您提供服务。您已经做出了一个基本假设,即该假设不成立-您的工作将倾向于将自己归为一组核心。
取而代之的是,您的工作将分散在所有核心中,除非您执行某种使它们“固定”下来的工作。(注意:我不建议这样做;只是说“除非”)
这是一种替代策略:当您认为其他用户“可以接受”添加更多作业时,为您的特定系统确定LOAD级别是什么。然后,构建一些仅在负载水平低于该限制时才提交新的后台作业的东西。
这样,该解决方案将是独立于核数的,更可移植的,更灵活的并且也更容易“调整”。
您可以通过运行top
,敲击' U
'并指定您的用户名,然后将前几个进程的CPU利用率相加,来获得大致的估算值。
top
可以使用-b开关以批处理模式运行。将其与-n开关结合使用以获得所需的迭代次数。
top
输出来编写这样的脚本,要么要通过Google来查看是否有人已经完成了该脚本。但是,我不认为这样做值得付出努力,因为考虑到上下文切换发生的速度,我认为每次运行都会获得不同的输出。系统负载指标不够好吗?它有效地告诉您处理进程队列(等待CPU的进程)需要多少个虚拟核。