Linux性能分析——分析系統性能相關的命令 摘要:本文主要學習了Linux系統中分析性能相關的命令。 ps命令 ps命令用來顯示系統中進程的運行情況,顯示的是當前系統的快照。 基本語法 選項說明 使用舉例 使用ps命令: 顯示執行的命令: 顯示所有進程以及執行的命令,可以查看進程的父進程ID: 顯 ...
Linux性能分析——分析系統性能相關的命令
摘要:本文主要學習了Linux系統中分析性能相關的命令。
ps命令
ps命令用來顯示系統中進程的運行情況,顯示的是當前系統的快照。
基本語法
1 ps [選項]
選項說明
1 -e:顯示所有進程。 2 -f:顯示完整格式的進程信息。 3 -a:所有與終端相關的進程。 4 -u:所有與終端無關的進程。 5 -x:以用戶為中心組織進程狀態信息顯示。 6 -l:顯示長列表。
使用舉例
使用ps命令:
1 [root@localhost ~]# ps 2 PID TTY TIME CMD 3 8742 pts/0 00:00:00 bash 4 9405 pts/0 00:00:00 ps 5 [root@localhost ~]#
顯示執行的命令:
1 [root@localhost ~]# ps -f 2 UID PID PPID C STIME TTY TIME CMD 3 root 8742 8738 0 01:09 pts/0 00:00:00 -bash 4 root 9412 8742 0 05:06 pts/0 00:00:00 ps -f 5 [root@localhost ~]#
顯示所有進程以及執行的命令,可以查看進程的父進程ID:
1 [root@localhost ~]# ps -ef 2 UID PID PPID C STIME TTY TIME CMD 3 root 8742 8738 0 01:09 pts/0 00:00:00 -bash 4 root 9415 8742 0 05:08 pts/0 00:00:00 ps -ef 5 ... 6 [root@localhost ~]#
顯示目前所有在記憶體中的進程,可以查看進程的CPU占用率和記憶體占用率:
1 [root@localhost ~]# ps -aux 2 USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND 3 root 8742 0.0 0.2 115508 2120 pts/0 Ss 01:09 0:00 -bash 4 root 9417 0.0 0.1 139492 1652 pts/0 R+ 05:13 0:00 ps -aux 5 ... 6 [root@localhost ~]#
結果說明
使用 ps -ef 命令的結果說明:
1 F:表示這個程式的旗標,是內核分配給進程的系統標記。 2 S:表示進程的狀態。 3 常用的值如下: 4 R:運行 runnable (on run queue)。 5 D:不可中斷 uninterruptible sleep (usually IO)。 6 S:中斷 sleeping。 7 T:停止 traced or stopped。 8 Z:僵死 zombie process。 9 UID:表示啟動進程的用戶ID。 10 PID:表示進程ID。 11 PPID:表示父進程ID。 12 C:表示進程CPU使用的資源百分比。 13 PRI:表示進程的執行優先權,其值越小越早被執行。 14 NI:表示進程的nice值,其表示進程可被執行的優先順序的修正數值。 15 ADDR:表示這是內核函數,指出該程式在記憶體的那個部分。如果是個執行的程式,一般就是“-”。 16 SZ:表示使用掉的記憶體大小。 17 WCHAN:表示目前這個程式是否正在運作當中,若為“-”表示正在運作。 18 TTY:表示登入者的終端機位置。 19 TIME:表示使用掉的CPU時間。 20 CMD:表示所下達的指令名稱。
使用 ps -aux 命令的結果說明:
1 USER:表示進程屬於那個使用者。 2 PID:表示進程ID。 3 %CPU:表示進程使用掉的CPU資源百分比。 4 %MEM:表示進程所占用的物理記憶體百分比。 5 VSZ:表示進程使用掉的虛擬記憶體量,單位是Kbytes。 6 RSS:表示進程占用的固定的記憶體量,單位是Kbytes。 7 TTY:表示進程運行的終端機位置。 8 STAT:表示進程目前的狀態。 9 常用的值如下: 10 R:運行,指進程正在運行或在運行隊列中等待。 11 D:不可中斷,指線程收到信號不喚醒和不可運行,進程必須等待直到有中斷發生。 12 S:中斷,指進程在休眠中或者被阻塞,在等待某個條件的形成或接收到信號。 13 T:停止,指進程收到SIGSTOP、SIGSTP、SIGTIN、SIGTOU信號後停止運行運行。 14 Z:僵死,指進程已終止,但進程描述符存在,直到父進程調用wait4()系統調用後釋放。 15 START:表示進程被觸發啟動的時間。 16 TIME:表示進程實際使用CPU運作的時間。 17 COMMAND:表示進程的實際指令。
top命令
top命令提供了實時的對系統處理器的狀態監視,能夠實時顯示系統中各個進程的資源占用狀況。
基本語法
1 top [選項]
選項說明
1 i:使top不顯示任何閑置或者僵死進程。 2 d:指定每兩次屏幕信息刷新之間的時間間隔。當然用戶可以使用s交互命令來改變之。 3 p:通過指定監控進程ID來僅僅監控某個進程的狀態。 4 q:該選項將使top沒有任何延遲的進行刷新。如果調用程式有超級用戶許可權,那麼top將以儘可能高的優先順序運行。 5 s:使top命令在安全模式中運行。這將去除交互命令所帶來的潛在危險。 6 c:顯示整個命令行而不只是顯示命令名。 7 S:指定累計模式。
交互參數
1 i:忽略閑置和僵死進程。這是一個開關式命令。 2 l:關閉或開啟第一部分第一行top信息的表示。 3 t:關閉或開啟第一部分第二行Tasks和第三行Cpus信息的表示。 4 m:關閉或開啟第一部分第四行Mem和第五行Swap信息的表示。 5 P:根據CPU使用百分比大小進行排序。 6 T:根據時間/累計時間進行排序。 7 N:根據PID大小進行排序。 8 M:根據記憶體占用率大小進行排序。 9 c:切換顯示命令名稱和完整命令行。 10 n:設置在進程列表所顯示進程的數量。 11 k:終止一個進程。系統將提示用戶輸入需要終止的進程PID,以及需要發送給該進程什麼樣的信號。一般的終止進程可以使用15信號,如果不能正常結束那就使用信號9強制結束該進程。預設值是信號15。在安全模式中此命令被屏蔽。 12 r:重新安排一個進程的優先順序別。系統提示用戶輸入需要改變的進程PID以及需要設置的進程優先順序值。輸入一個正值將使優先順序降低,反之則可以使該進程擁有更高的優先權。預設值是10。 13 s:改變兩次刷新之間的延遲時間。系統將提示用戶輸入新的時間,單位為s。如果有小數,就換算成ms。輸入0值則系統將不斷刷新,預設值是5s。 14 q:退出程式。 15 W:將當前設置寫入~/.toprc文件中。這是寫top配置文件的推薦方法。 16 S:切換到累計模式。 17 f或者F:從當前顯示中添加或者刪除項目。 18 o或者O:改變顯示項目的順序。
使用舉例
1 [root@localhost ~]# top 2 top - 01:09:20 up 1 day, 13:28, 2 users, load average: 0.00, 0.01, 0.05 3 Tasks: 354 total, 1 running, 353 sleeping, 0 stopped, 0 zombie 4 %Cpu(s): 0.2 us, 0.0 sy, 0.0 ni, 99.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st 5 KiB Mem : 1001360 total, 441332 free, 160592 used, 399436 buff/cache 6 KiB Swap: 2097148 total, 2097148 free, 0 used. 661448 avail Mem 7 8 PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 9 1 root 20 0 44516 7184 2612 S 0.0 0.7 0:07.99 systemd 10 2 root 20 0 0 0 0 S 0.0 0.0 0:00.28 kthreadd 11 3 root 20 0 0 0 0 S 0.0 0.0 0:00.55 ksoftirqd/0 12 5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H 13 7 root rt 0 0 0 0 S 0.0 0.0 0:00.44 migration/0 14 8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh 15 9 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/0 16 10 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/1 17 11 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/2 18 12 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/3 19 ... 20 [root@localhost ~]#
資源概況欄位說明
top視圖的上半部分是資源概況。
1)第一行是系統的一些信息。
1 01:09:20:表示系統當前時間。 2 up 1 day, 13:28:表示系統運行了1天13個小時28分鐘。 3 2 users:表示系統當前有2個用戶連接。 4 load average: 0.00, 0.01, 0.05:表示系統最近1分鐘、5分鐘、15分鐘的平均負載。
2)第二行是系統進程的預覽信息。
1 n total:表示進程總數。 2 n running:表示正在運行的進程數。 3 n sleeping:表示休眠的進程數。 4 n stopped:表示停止的進程。 5 n zombie:表示僵屍進程。
3)第三行是CPU的運行信息,當有多個CPU時,內容可能會超過兩行。
1 n us:表示用戶空間占用CPU時間百分比。 2 n sy:表示內核空間占用CPU時間百分比。 3 n ni:表示用戶進程空間內改變過優先順序的進程占用CPU時間百分比。 4 n id:表示空閑時間占用CPU百分比。 5 n wa:表示等待輸入輸出占用CPU時間百分比。 6 n hi:表示硬體中斷占用CPU時間百分比。 7 n si:表示軟體中斷占用CPU時間百分比。 8 n st:表示虛擬機占用CPU時間百分比。
4)第四行是記憶體空間的使用情況。
1 n total:表示記憶體總量。 2 n free:表示剩餘的記憶體數量。 3 n used:表示使用的記憶體數量。 4 n buff/cache:表示緩衝的記憶體數量。
5)第五行是交換空間的使用情況。
1 n total:表示交換區總量。 2 n free:表示空閑的交換區數量。 3 n used:表示使用的交換區數量。 4 n avail Mem:表示緩衝的交換區數量。
進程信息欄位說明
top視圖的下半部分是進程信息。
1 PID:進程id。 2 PPID:父進程id。 3 UID:進程所有者的id。 4 USER:進程所有者的用戶名。 5 GROUP:進程所有者的組名。 6 TTY:啟動進程的終端名,不是從終端啟動的進程則顯示為?。 7 PR:優先順序。 8 NI:nice值。負值表示高優先順序,正值表示低優先順序。 9 P:最後使用的CPU,僅在多CPU環境下有意義。 10 %CPU:上次更新到現在的CPU時間占用百分比。 11 TIME:進程使用的CPU時間總計,單位秒。 12 TIME+:進程所使用的CPU時間總計,單位1/100秒。 13 %MEM:進程使用的物理記憶體百分比。 14 VIRT:進程使用的虛擬記憶體總量,單位kb。VIRT=SWAP+RES。 15 SWAP:進程使用的虛擬記憶體中被被換出的大小。 16 RES:進程使用的、未被換出的物理記憶體的大小。 17 CODE:可執行代碼占用的物理記憶體大小。 18 DATA:可執行代碼以外的部分(數據段+棧)占用的物理記憶體大小。 19 SHR:共用記憶體大小。 20 nFLT:頁面錯誤次數。 21 nDRT:最後一次寫入到現在,被修改過的頁面數。 22 S:進程狀態(D=不可中斷的睡眠狀態,R=運行,S=睡眠,T=跟蹤/停止,Z=僵屍進程)。 23 COMMAND:命令名/行。 24 WCHAN:若該進程在睡眠,則顯示睡眠中的系統函數名。 25 Flags:任務標誌。