如果是多核多cpu,比如現在是2個cpu,每個cpu是1個核,那麼理論上總負載不能超過2。
2、如何查看CPU信息?
(1)查看單個cpu核數:
cat /proc/cpuinfo | grep "cpu cores"|uniq
(2)查看物理CPU個數:
cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l
(3)查看邏輯CPU的個數:
cat /proc/cpuinfo| grep "processor"| wc -l
註:Linux下top查看的CPU也是邏輯CPU個數,一般來說,物理CPU個數×每顆核數就應該等於邏輯CPU的個數,如果不相等的話,則表示伺服器的CPU支持超線程
在作業系統上我們可以使用top先查看目前負載狀態,通過命令:
ps -axjf 查看STAT中是否有D+的狀態進程存在,處於此狀態的進程無法終止,也無法退出。只能重啟或kill進程。就好比之前舉的例子中,公司只有一個廁所,外面沒人排隊,但有人在裡面上了半天或者更久,這說明了他遇到了意想不到的問題。
這表示cpu任務不多,但是執行時間長,排除正常計算任務,大概率和應用或者運行程序有關,生成了大量耗時短的計算任務。
4、如果cpu使用率到100%怎麼處理?
如果執行的是命令:
(1)通過top -c參數查看詳細信息
如果是執行的是java程序:
(1)先通過top命令查出cpu佔用高的進程及其pid號
(2)top -Hp pid找到佔用cpu高的線程ID
(3)將線程轉換為16進位,printf"0x%x\n" 線程PID ,得到線程字 符串
(4)通過jstack PID | grep 『線程字符串』 -C5 --color