linux下如何檢視多核負載情況

2021-05-25 04:43:38 字數 2265 閱讀 1032

首先宣告出處:sam的技術blog

1. linux下,如何看每個cpu的使用率:

#top -d 1

(此時會顯示以1s的頻率重新整理系統負載顯示,可以看到總的cpu的負載情況,以及佔cpu最高的程序id,程序名字等資訊)

(切換按下數字1,則可以在顯示多個cpu和總cpu中切換)

之後按下數字1. 則顯示多個cpu   (top後按1也一樣)

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

這裡對us,sy,ni,id,wa,hi,si,st進行分別說明:

us 列顯示了使用者模式下所花費 cpu 時間的百分比。us的值比較高時,說明使用者程序消耗的cpu時間多,但是如果長期大於50%,需要考慮優化使用者的程式。

sy 列顯示了核心程序所花費的cpu時間的百分比。這裡us + sy的參考值為80%,如果us+sy 大於 80%說明可能存在cpu不足。

ni  列顯示了使用者程序空間內改變過優先順序的程序占用cpu百分比。

id  列顯示了cpu處在空閒狀態的時間百分比。

wa 列顯示了io等待所占用的cpu時間的百分比。這裡wa的參考值為30%,如果wa超過30%,說明io等待嚴重,這可能是磁碟大量隨機訪問造成的,也可能磁碟或者磁碟訪問控制器的頻寬瓶頸造成的(主要是塊操作)。

hisi

st2. 在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.

linux負載檢視

pip3 install i psutil1.按記憶體排序從大到小,顯示前五行 ps e o c p z a sort k5 nr head 52.按程序id 從小到大 ps e o c p z a sort k3 n head 53.按cpu 利用率 從大到小 ps e o c p z a sor...

Linux下檢視CPU資訊, 包括位數和多核資訊

以redhat6.0為例 檢視當前作業系統發行版資訊 cat etc issue red hat enterprise linux server release 6.0 santiago kernel r on an m 檢視cpu型號 cat proc cpuinfo grep name cut ...

Linux下檢視CPU資訊, 包括位數和多核資訊

1.檢視linux的作業系統和硬體cpu位數 linux 作業系統的位數檢視 getconf long bit如果是32表示是32位 eg root db getconf long bit 32 root db getconf word bit 32或者通過cat proc cpuinfo也可以檢視...