在我的环境中,我们遇到了超过200%的高CPU使用率问题但我们使用的是14cpus服务器。主要是在Tomcat进程的情况下。你能解释一下cpu如何分配给一个进程吗?
答案 0 :(得分:1)
我从未在Windows上看到过> 100%,所以我假设您在某些Unix / Linux发行版上运行。
在14核机器上,您可能会看到CPU爬升率高达1400% - 因为您的14个内核中的每个核心都拥有0 - > 100%的容量。
使用top
,然后按下数字1
,将显示每个核心的使用情况。
top - 02:10:29 up 124 days, 4:52, 1 user, load average: 0.25, 0.29, 0.28
Tasks: 153 total, 1 running, 152 sleeping, 0 stopped, 0 zombie
%Cpu0 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu1 : 1.2 us, 0.0 sy, 0.0 ni, 98.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu2 : 1.2 us, 0.0 sy, 0.0 ni, 98.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu3 : 1.2 us, 1.2 sy, 0.0 ni, 97.6 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 16431812 total, 716508 free, 5590424 used, 10124880 buff/cache
KiB Swap: 8265724 total, 7145596 free, 1120128 used. 10221956 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
25836 mclark 20 0 146100 2028 1412 R 1.2 0.0 0:00.02 top
32532 root 20 0 0 0 0 S 1.2 0.0 0:02.18 kworker/2:0
1 root 20 0 310388 123720 2764 S 0.0 0.8 50:34.97 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:05.13 kthreadd
显然,如果您的流程使用> 100%,则为multithreading
,如果流程仅使用单个线程,则只能在单个核心上运行。