linux如何查看cpu 內存運行頻率(top命令詳解CPU內存)
2023-05-29 14:12:14
top的使用方法top命令主要用於分析Linux伺服器當前的實時CPU和內存消耗情況,以及進程的運行情況統計。
命令使用:top ,具體top命令的使用方法和以下截圖的各個信息的含義,可通過man top命令來查看。
其中比較常用的是:按1顯示各個核的統計,使用-p參數指定所要監控的進程號。
從上到下分析:
系統整體負載統計第一行:top - 11:32:29 up 109 days, 20:46, 1 user, load average: 0.24, 0.36, 0.44
11:32:29:當前伺服器時間
up 109 days:伺服器運行了多久
1 user:當前的登錄用戶數量
load average: 0.24, 0.36, 0.44系統1分鐘,5分鐘,15分鐘的負載統計,這個數字在單核和多核之間是存在差別的,
(1)如果是單核,則值在0.0~1.0之間表示正常,一般不要超過0.7,多核類似。
(2)如果是多核,則值在0.0~CPU核心數表示正常,如2核是0到2,4核是0到4。多核參照單核的標準的話,是:數值 / CPU核數,在0.00-1.00之間正常。當使用這個數值除以CPU核數,即:數值 / CPU核數,之後,如果大於5則表示系統負載太高。
CPU的核心數查看:
查看物理CPU的個數#cat /proc/cpuinfo |grep "physical id"|sort |uniq|wc –l查看邏輯CPU的個數#cat /proc/cpuinfo |grep "processor"|wc –l查看CPU是幾核#cat /proc/cpuinfo |grep "cores"|uniq查看CPU的主頻#cat /proc/cpuinfo |grep MHz|uniq直接獲得CPU核心數 (該命令即可全部算出多少核)#grep 'model name' /proc/cpuinfo | wc -l
第二行:Tasks: 113 total, 2 running, 111 sleeping, 0 stopped, 0 zombie
113 total:當前系統一共有113個進程
2 running:2個進程正在運行
111 sleeping:111個進程在休眠
0 stopped:停止進程的個數
0 zombie:殭屍進程的個數
CPU的各個核統計第三、四行:兩個CPU核的統計信息
Cpu0 : 27.2%us, 16.4%sy, 0.0%ni, 46.0%id, 0.0%wa, 0.0%hi, 3.7%si, 6.7%st
Cpu1 : 20.2%us, 12.8%sy, 0.0%ni, 55.9%id, 0.0%wa, 0.0%hi, 3.7%si, 7.4%st
us:用戶空間進程所用CPU佔比sy:系統空間進程所用CPU佔比ni:調整了進程優先級的進程所用CPU佔比id:空閒CPU佔比wa:等待輸入輸出的進程所用CPU佔比hi:硬中斷所用CPU佔比si軟中斷所用CPU佔比內存和交換分區統計第五行:Mem: 5991036k total, 5878620k used, 112416k free, 39464k buffers
total:物理內存總量used:已使用的物理內存量free:空閒的物理內存量buffers:用作內核緩存的內存量,即內核頁緩存,作業系統儘可能地將從磁碟讀出的內容或者要寫到磁碟的內容通過頁緩存來進行緩衝,在規定的時間或者當緩存到達一定量時,再刷到磁碟,減少磁碟的讀寫操作,提高系統性能。第六行:Swap: 4194300k total, 51312k used, 4142988k free, 1663552k cached
total:交換分區總大小,即分了多少磁碟用作交換分區used:已使用的交換分區總量free:空閒的交換分區量cached:緩衝的交換分區使用量,即內存的內容可以交換到交換分區,然後再從交換分區加載會內存,加載回之後,交換分區對應的內容不刪掉,而是緩衝起來,故之後內存內容再交換出來時,如果該內容沒有修改過,則不需要再對交換分區進行寫出,減少數據讀寫量。當交換分區不夠時,則可以刪除該緩衝的內容來騰出空間。對於當前的可用內存量 為:free buffers cached
進程統計PID USER PR NI VIRT RES SHR S %CPU %MEM TIME COMMAND 8960 root 20 0 4437m 1.2g 5888 S 56.6 20.8 46006:20 java 26114 root 20 0 4709m 2.3g 8400 S 26.4 40.0 2379:41 java 15076 root 20 0 2790m 110m 2332 S 4.5 1.9 4633:09 java
PID:進程IDUSER:進程的owner,即是在以該用戶登錄的身份時啟動的。PR NI:進程優先級,其中PR為整數,NI為負數,絕對值越大,進程優先級越高。VIRT:進程的虛擬內存大小,VIRT = RES SHR,即進程申請了多少內存,但是不一定使用了這麼多,具體使用了多少物理內存是RES顯示的。RES:進程所用的實際物理內存大小,即進程實際使用了多少物理內存,包含進程自身的內存和與其他進程共享的內存,但不包括swap out的。在分析進程是否佔用太多內存時,關注這個值。SHR:進程所用的共享內存大小,如共享庫,如果需要知道該進程自身獨立使用的內存大小,則使用RES-SHR。當共享內存swap out到交換分區之後,則SHR的值會減小。S:進程狀態,對應的值:D = 不可中斷的睡眠狀態, R = 運行, S = 睡眠, T = 跟蹤/停止, Z=殭屍進程%CPU:上次更新到現在所使用的CPU的佔比,即該進程在各個CPU核運行的佔比相加,如果是多核,可能超過100%%MEM:進程所用的物理內存佔比,即對於系統正在被使用的物理內存中,該進程使用了多少,如系統物理內存重量為8G,當前共使用了2G,當前進程為30%,則該進程使用了0.6G。TIME :進程運行了多久,這個是百秒為單位,即需要乘以100來轉為秒,另外一個TIME則是秒為單位。COMMAND:進程的啟動命令,如Java進程是通過java命令啟動的。,