1. 在Linux下,如何確認是多核或多CPU:
#cat /proc/cpuinfo
如果有多個類似以下的項目,則爲多核或多CPU:
processor : 0
......
processor : 1
2. Linux下,如何看每個CPU的使用率:
#top -d 1
之後按下1. 則顯示多個CPU
Cpu0 : 1.0%us, 3.0%sy, 0.0%ni, 96.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
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利用率。
Linux 下多核CPU知識
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
Linux 開機(腳本)啓動順序
Uchen
2019-02-24 13:53:20
Linux基本操作命令
wbzjacky
2019-02-24 13:12:38
tar Command Daily Work Summary
海膽階段
2019-02-24 12:58:10
SSH and SCP Daily Work Summary
海膽階段
2019-02-24 12:58:10
Linux積累-安裝與配置Hadoop
lftong
2019-02-23 14:00:30
centos ***
samplelife
2019-02-23 13:57:36
新手學習Linux系統的一點見解
jackieban
2019-02-23 13:57:24
CentOS 6.4下PXE+Kickstart無人值守安裝操作系統
paul8339
2019-02-23 13:56:09
Linux學習之旅 - 第一天
lichen_zt
2019-02-23 13:55:58
Linux I/O重定向以及正則表達式
zhongqijian916
2019-02-23 13:54:50
Linux---facl以及終端
zhongqijian916
2019-02-23 13:54:50
Linux---YUM
zhongqijian916
2019-02-23 13:54:50
Linux---LVM硬盤管理以及LVM的擴展
zhongqijian916
2019-02-23 13:54:50
Linux---LVM補充
zhongqijian916
2019-02-23 13:54:50
Linux---make
zhongqijian916
2019-02-23 13:54:50