在 Linux 上,如何判断机器有多少个核心处于活动状态?我假设对此的测试也适用于 Android。我需要知道是否有多个核心处于活动状态。想知道通过让进程创建多个线程来测试这一点。线程是否可以查询它在哪个处理器上?这样就可以判断在重负载下是否会使用多个核心。不确定我是否走在正确的轨道上。
答案1
您可以使用top
列出每个核心的利用率。如有必要,请按 1 将 CPU 行拆分为每个核心的单独行。
您还可以添加一列来显示每个进程最后使用的核心。按 f 键调出字段列表,然后按 j 键激活“P”列。然后按空格键返回实时视图。
答案2
ps
有一个字段用来psr
告诉您作业正在哪个处理器上运行。
因此你可以使用类似如下的方法:
ps -e -o psr= | sort | uniq | wc -l
请注意,仅仅这样运行ps
当然会使至少一个核心处于活动状态。
可能更好的方法是运行这个:
tmp=/tmp/ps.$$
ps -e -o psr= > /tmp/ps.$$
sort -u "$tmp" | wc -l
rm "$tmp"
这样,sort
就wc
不会增加计数。
答案3
答案4
您可以使用:
cat /sys/devices/system/cpu/possible
或者
cat /sys/devices/system/cpu/online
可能主要是因为你已隔离 CPU 来运行某个特定程序。