CentOS下如何查看多核負載
添加時間:2020-2-10 21:34:19
添加:
思海網絡
1. Linux下,如何看每個CPU的使用率:
#top -M
之后按下數字1. (或者top之后按1也一樣)則顯示多個CPU 的信息,和內存信息:
[root@testpc ~]# top -M
top - 15:38:40 up 2 days, 2:05, 2 users, load average: 0.00, 0.00, 0.00
Tasks: 138 total, 1 running, 137 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 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu2 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu3 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 3725.047M total, 263.312M used, 3461.734M free, 45.711M buffers
Swap: 8095.992M total, 0.000k used, 8095.992M free, 55.977M cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 19228 1512 1224 S 0.0 0.0 0:00.61 init
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
2. 在Linux下,如何確認是多核或多CPU:
#cat /proc/cpuinfo
如果有多個類似以下的項目,則為多核或多CPU:
processor : 0
......
processor : 1
3. 如何察看某個進程在哪個CPU上運行:
#top -d 1
之后按下f.進入top Current Fields設置頁面:
選中:j: P = Last used cpu (SMP)
則多了一項:P 顯示此進程使用哪個CPU。
Sam經過試驗發現:同一個進程,在不同時刻,會使用不同CPU Core.這應該是Linux Kernel SMP處理的。
4. 配置Linux Kernel使之支持多Core:
內核配置期間必須啟用CONFIG_SMP選項,以使內核感知 SMP。
Processor type and features ---> Symmetric multi-processing support
察看當前Linux Kernel是否支持(或者使用)SMP
#uname -a
5. Kernel 2.6的SMP負載平衡:
在 SMP 系統中創建任務時,這些任務都被放到一個給定的 CPU 運行隊列中。通常來說,我們無法知道一個任務何時是短期存在的,何時需要長期運行。因此,最初任務到 CPU 的分配可能并不理想。
為了在 CPU 之間維護任務負載的均衡,任務可以重新進行分發:將任務從負載重的 CPU 上移動到負載輕的 CPU 上。Linux 2.6 版本的調度器使用負載均衡(load balancing) 提供了這種功能。每隔 200ms,處理器都會檢查 CPU 的負載是否不均衡;如果不均衡,處理器就會在 CPU 之間進行一次任務均衡操作。
這個過程的一點負面影響是新 CPU 的緩存對于遷移過來的任務來說是冷的(需要將數據讀入緩存中)。
記住 CPU 緩存是一個本地(片上)內存,提供了比系統內存更快的訪問能力。如果一個任務是在某個 CPU 上執行的,與這個任務有關的數據都會被放到這個 CPU 的本地緩存中,這就稱為熱的。如果對于某個任務來說,CPU 的本地緩存中沒有任何數據,那么這個緩存就稱為冷的。
不幸的是,保持 CPU 繁忙會出現 CPU 緩存對于遷移過來的任務為冷的情況。
6. 應用程序如何利用多Core :
開發人員可將可并行的代碼寫入線程,而這些線程會被SMP操作系統安排并發運行。
另外,Sam設想,對于必須順序執行的代碼。可以將其分為多個節點,每個節點為一個thread.并在節點間放置channel.節點間形如流水線。這樣也可以大大增強CPU利用率。
例如:
可以分為3個節點。
1.接受外部信息,聲稱數據 (1ms)
2.利用數據,物理運算(3ms)
3.將物理運算的結果展示出來。(2ms)
如果線性編程,整個流程需要6ms.
但如果將每個節點作為一個thread。但thread間又同步執行。則整個流程只需要3ms.
關鍵字:CentOS、多核、負載
新文章:
- CentOS7下圖形配置網絡的方法
- CentOS 7如何添加刪除用戶
- 如何解決centos7雙系統后丟失windows啟動項
- CentOS單網卡如何批量添加不同IP段
- CentOS下iconv命令的介紹
- Centos7 SSH密鑰登陸及密碼密鑰雙重驗證詳解
- CentOS 7.1添加刪除用戶的方法
- CentOS查找/掃描局域網打印機IP講解
- CentOS7使用hostapd實現無AP模式的詳解
- su命令不能切換root的解決方法
- 解決VMware下CentOS7網絡重啟出錯
- 解決Centos7雙系統后丟失windows啟動項
- CentOS下如何避免文件覆蓋
- CentOS7和CentOS6系統有什么不同呢
- Centos 6.6默認iptable規則詳解