top命令

概念:top命令是Linux下經常使用的系統性能分析工具,能實時查看系統中各個進程資源佔用狀況。java

參數:mysql

-p	指定進程號
	eg:top -p PID	查看進程ID爲PID的進程
-H	查看各個線程資源佔用的狀況。
	eg:top			查看各個進程 資源佔用的狀況。
		top	-H 		查看各個線程 資源佔用的狀況。
		top -Hp	PID	查看進程ID爲PID的進程中 全部線程 的資源佔用狀況。
		
-c	查看進程的完整命令(COMMAND)
	eg:top -c		查看各個進程 資源佔用的狀況,其中命令(COMMAND)項顯示詳細信息。
	
-n	更新n次後,退出top命令。
	eg:top -n 5	更新5次後,中止更新並退出top命令。

1)系統資源佔用狀況:linux

top - 15:17:57 up 366 days, 21:32,  1 user,  load average: 0.03, 0.17, 0.14
Tasks: 724 total,   1 running, 723 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.4%us,  0.1%sy,  0.0%ni, 99.5%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:  132042876k total, 101359588k used, 30683288k free,   171176k buffers
Swap: 20971512k total,   407892k used, 20563620k free, 26919260k cached


top:當前時間、系統啓動時間、當前系統登陸用戶數目、平均負載
Tasks:進程總數、運行進程數、睡眠進程數、終止進程數、僵死進程數。
Cpu(s):
	us	用戶空間佔用cpu百分比
	sy	內核空間佔用cpu百分比
	ni	用戶進程空間內改變過優先級的進程佔用cpu百分比
	id	空閒cpu百分比
	wa	等待輸入輸出(I/O)的cpu百分比
	hi	cpu處理硬件中斷的時間
	si	cpu處理軟件中斷的時間
	st	用於有虛擬cpu的狀況,表示被虛擬機偷掉的cpu時間
	
	說明:
		us高的解決方法:CPU us 高的緣由主要是執行的線程不須要任何掛起動做,且一直執行,致使CPU沒有機會去調度執行其它的線程。
		sy高的解決方法:CPU sy 高的緣由主要是線程的運行狀態要常常切換,對於這種狀況,常見的一種優化方法是減小線程數。
	
補充:
	1)查看每一個CPU的性能數據:使用top的交互命令數字1
		注:若是機器的cpu個數較多時,按1會提示"Sorry, terminal is not big enough",這時,咱們可使用mpstat命令來查看每一個cpu的狀況。
	
	2)查看每一個線程的性能信息:使用top的交互命令H	或	使用top -H
		常見狀況:
		1>某個線程CPU利用率一直100%,則說明是這個線程有可能有死循環,將PID記錄下來。
		2>某個線程一直在TOP 10的位置,這說明這個線程可能有性能問題。
		3>CPU利用率高的幾個線程在不停變化,說明並非由某一個線程致使CPU偏高。
	
Mem:
	total	總的物理內存
	used	使用物理內存大小
	free	空閒物理內存
	buffers	用內核緩存的內存大小
Swap:
	total	總的交換空間大小
	used	已經使用交換空間大小
	free	空間交換空間大小
	cached	緩衝的交換空間大小
	補充:buffers於cached區別:buffers指的是塊設備的讀寫緩衝區,cached指的是文件系統自己的頁面緩存。

2)每一個進程的資源佔用狀況:redis

PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 43997 tomcat_a  20   0 50460  26m 1988 S 19.6  0.0 739:54.12 dataservice 
 20227 mysql     20   0 77.9g  54g 6248 S  3.3 43.5  99046:41 mysqld     
 52786 root      20   0 4318m 429m  736 S  1.7  0.3  13389:54 redis-server
 44077 tomcat_a  20   0 26440  19m 1908 S  0.3  0.0  23:02.34 dataservice      
 77400 root      20   0  194m 3012 1020 S  0.3  0.0 275:09.63 snmpd   
124158 tomcat_a  20   0 15560 1784  948 R  0.3  0.0   0:03.82 top
	 1 root      20   0 19356  540  316 S  0.0  0.0   0:02.66 init  
	 2 root      20   0     0    0    0 S  0.0  0.0   0:00.01 kthreadd  


PID		進程號
USER	運行用戶
PR		優先級,說明:PR其實就是進程調度器分配給進程的時間片長度,單位是時鐘個數,linux下一個時鐘約爲10ms,PR值爲20則表示這個進程的時間片爲200ms
NI		任務nice值
VIRT	進程使用的虛擬內存總量,單位kb。VIRT=SWAP+RES
RES		物理內存用量
SHR		共享內存用量
S		進程的狀態。
			S	睡眠狀態
			D	不可中斷的睡眠狀態
			R	運行狀態
			Z	僵死狀態
			T	中止或跟蹤狀態
%CPU	從上一次刷新到如今,該進程佔用cpu時間和總時間的百分比
%MEM	佔用的物理內存與總內存的百分比
TIME+	累計cpu佔用時間
COMMAND	該進程的命令名稱

3)每一個線程的資源佔用狀況:sql

PID   USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
22855 tomcat_a  20   0 5650m  56m 2036 S  0.0  0.4   0:00.00 java
22856 tomcat_a  20   0 5650m  56m 2036 S  0.0  0.4   0:01.79 java
22857 tomcat_a  20   0 5650m  56m 2036 S  0.0  0.4   1:20.30 java
相關文章
相關標籤/搜索