top之前一直都是一知半解,今天周末加班,我的工作已經完成,在等同事吃飯,就把這個寫下來。
第一行:
top - 20:42:47 up 57 days, 1:25, 4 users, load average: 0.00, 0.00, 0.00
現在時間20:42:47,啟動了57 days, 1:25分鍾。4個用戶在線,1,5,15分鍾的load情況
第二行:
Tasks: 199 total, 1 running, 198 sleeping, 0 stopped, 0 zombie
不用解釋,至於為什么stopped還存着,不清楚。已經google清楚,一個前端進程被ctrl+z,變成stopped,同時可以用kill -STOP 1234產生效果。可以用fg恢復到前台,也可以用bg恢復到后台,也可以用kill -CONT 1234恢復。在STOPPED狀態下,可以kill進程。
第三行:
Cpu(s): 3.4%us, 0.8%sy, 0.5%ni, 94.8%id, 0.0%wa, 0.0%hi, 0.6%si, 0.0%st 這都是占用時長的百分比
3.4的未nice過的用戶空間線程執行時間,0.8的內核空間執行時間,0.5的用戶進程空間內被nice過的進程的執行時間,94.8 idle,0.0的等待IO時間,0.6的hardware interruption時間,0.0的software interruption時間。
第四/五行:
Mem: 16467920k total, 11401804k used, 5066116k free, 598016k buffers
Swap: 0k total, 0k used, 0k free, 2988464k cached
cached和Swap沒關系,就是mem里邊cache住的。used值包括buffers和cached,真正在used是這個used減去(buffers+cached),而這個free是減去(buffers+cached)后的free,真正的free是加上(buffers+cached)的,因為(buffers+cached)是用來緩存程序可能用到的內容。
[root@localhost ~]# free -m (拿這個來說,第二行的-/+后的結果才是真正的used和free)
total used free shared buffers cached
Mem: 24030 8939 15091 0 192 3641
-/+ buffers/cache: 5105 18925
具體buffers和cache,buffers不僅存着數據,還會存數據的來源、權限,跟蹤去處。cache只存數據。見參考
第六行:
PID,USER進程號,用戶名。
NI,nice,好看不好看。。動態修正CPU調度。范圍(-20~19)。越大,cpu調度越一般,越小,cpu調度越偏向它。一般用於后台進程,調整也是往大了調,用來給前台進程讓出CPU資源。
PR:優先級,會有兩種格式,一種是數字(默認20),一種是RT字符串。
PR默認是20,越小,優先級越高。修改nice可以同時修改PR,測試過程:先開一個窗口,運行wc,另開一個窗口運行top,按N按照PID倒序排,按r輸入要renice的PID,然后輸入-19~20之間的值,可以看到NI變成輸入的值,PR=PR+NI。修改NI得到PR的范圍是0~39。優先級由高到低
RT是real-time。只能用chrt -p (1~99) pid來修改。chrt -p 1 1234會將1234的PR改成-2,chrt -p 98 1234變成-99。chrt -p 99 1234會變成RT......只要chrt過,修改nice后PR不會再更改。修改chrt得到的PR范圍是RT~-2。優先級由高到低
VIRT:一個進程瞬時可以訪問的所有內存總和大小,包括RES自己在使用的,共享的類庫,和其他進程共享的內存,內存中的文件數據。共享的類庫,一個大文件,只有一個程序片段被用到,這個文件會被 map到VIRT和SHR中,程序片段會在RES中。
S:狀態S -- Process Status. The status of the task which can be one of:
D Uninterruptible sleep (usually IO)
R Running or runnable (on run queue)
S Interruptible sleep (waiting for an event to complete)
T Stopped, either by a job control signal or because it is being traced.
W paging (not valid since the 2.6.xx kernel)
X dead (should never be seen)
Z Defunct ("zombie") process, terminated but not reaped by its parent.
%CPU,總體CPU百分比,按H可以顯示所有線程。8個核,從0~800%。
%mem,RES占總MEM的百分比
TIME+,自啟動到現在占用的CPU時間。