在 Linux 上,如何判断机器有多少个内核处于活动状态?

lik*_*udo 14 linux core

在 Linux 上,如何判断机器有多少个内核处于活动状态?我假设对此的测试也适用于 Android。我需要知道是否有多个核心处于活动状态。想通过让进程创建多个线程来测试这一点。线程是否可以查询它在哪个处理器上?这样就可以判断是否会在重负载下使用多个内核。不确定我是否在正确的轨道上。

Bri*_*ian 24

您可以使用top来列出每个内核的利用率。如有必要,按 1 将 CPU 行拆分为每个内核的单独行。

您还可以添加一列,显示每个进程上次使用的核心。按 f 调出字段列表,然后按 j 激活“P”列。然后按空格键返回实时取景。


Mik*_*kel 6

ps有一个字段psr可以告诉您作业在哪个处理器上运行。

所以你可以使用类似的东西:

ps -e -o psr= | sort | uniq | wc -l
Run Code Online (Sandbox Code Playgroud)

请注意,仅仅ps像这样运行当然会使至少一个核心处于活动状态。

可能更好的是运行这个:

tmp=/tmp/ps.$$
ps -e -o psr= > /tmp/ps.$$
sort -u "$tmp" | wc -l
rm "$tmp"
Run Code Online (Sandbox Code Playgroud)

这种方式,sort并且wc不增加计数。