Contents

Linux 怎麼看 CPU 不夠用

最近看到認識CPU | 沉迷思考的魚
就好奇怎麼看CPU不夠力
最後來整理一下

相關 CPU文章

  1. 認識CPU | 沉迷思考的魚
  2. 理解Linux系統負荷 - 阮一峰的網絡日誌
  3. CPU的load和使用率傻傻分不清 - 昀溪 - 博客園

查詢 CPU 核心和線程

Linux

1
2
3
4
5
6
7
8
# 查看 cpu 型號
sudo dmidecode -s processor-version
# 查看 cpu 個數
grep 'physical id' /proc/cpuinfo | sort -u | wc -l
# 查看核心數
grep 'core id' /proc/cpuinfo | sort -u | wc -l
# 查看線程數
grep 'processor' /proc/cpuinfo | sort -u | wc -l

Mac

1
2
3
4
# 查看核心數
sysctl hw.physicalcpu
# 查看線程數
sysctl hw.logicalcpu

系統負荷怎麼看

系統負荷簡單就能看 CPU 能不能夠用

1
2
top
uptime

都可以看到 load average: 0.09, 0.04, 0.00
這邊注意有三個數字,相當 5分鐘, 10 分鐘 ,15 分鐘系統負載
我們通常注意最後一個數字(15分鐘的)
怎樣數字能判斷?

系統負荷的經驗法則

1.0是系統負荷的理想值嗎?
不一定,系統管理員往往會留一點餘地,當這個值達到0.7,就應當引起注意了。經驗法則是這樣的:
當系統負荷持續大於0.7,你必須開始調查了,問題出在哪裡,防止情況惡化。
當系統負荷持續大於1.0,你必須動手尋找解決辦法,把這個值降下來。
當系統負荷達到5.0,就表明你的系統有很嚴重的問題,長時間沒有響應,或者接近死機了。你不應該讓系統達到這個值。
參考: 認識CPU | 沉迷思考的魚

這邊要注意,這邊 1 全部是單指單核心、單一進程
下面會講一下多線程

多核心怎麼看系統負荷夠用?

總核數 = 物理CPU個數 * 每個物理CPU的核心數
總邏輯CPU數 = 物理CPU個數 * 每個物理CPU的核心數 * 超線程數量
參考CPU的load和使用率傻傻分不清 - 昀溪 - 博客園

簡單來看把最上面三個指令執行一下相乘後,就可以看到系統負載最大值

1
2
3
4
5
6
7
8
9
# 查看 cpu 個數
grep 'physical id' /proc/cpuinfo | sort -u | wc -l
2
# 查看核心數
grep 'core id' /proc/cpuinfo | sort -u | wc -l
4
# 查看線程數
grep 'processor' /proc/cpuinfo | sort -u | wc -l
6

這邊相乘就是 48

PS: 所以在多核心 Linux 下的 CPU 使用率超過 100% 是正常的

實際觀察

我目前某一個排程主機 Jenkins 上板會把所有排程打開,這樣會有一個嚴重問題,當下記憶體、CPU 過重
需要人工去開啟未成功排程
最近看了這篇文章
top 指令當下是

./img1.jpg

這邊也有看到文章說 5分鐘系統負載持續飆高 後面 10,15 分鐘的系統將會持續飆高
所以系統負載會不會好轉,可以從這邊看出來

然後在系統負載小於 48 時候,我在 2x 開啟排程都能順利執行

番外篇 記憶體怎麼看

之前我在玩樹莓派開很久會發現我 RAM 怎麼沒有降下去
後來看鳥哥文章看到 Linux RAM 不會馬上釋放掉
之後有看到文章說 swap 吃太多的時候,就要考慮到是不是記憶體不足?
有想到再補

手動清除 Linux 記憶體快取. /proc/sys/vm/drop_caches | by Yu-Hsin Hung | Hungys.blog() | Medium
尋找當下 Linux OS 效能瓶頸 - Phil Workspace