1. 程式人生 > >linux 中檢視記憶體使用情況

linux 中檢視記憶體使用情況

用 'top -i' 看看有多少程序處於 Running 狀態,可能系統存在記憶體或 I/O 瓶頸,用 free 看看系統記憶體使用情況,swap 是否被佔用很多,用 iostat 看看 I/O 負載情況...

還有一種辦法是 ps -ef | sort -k7 ,將程序按執行時間排序,看哪個程序消耗的cpu時間最多。

top:
主要引數 :
d:指定更新的間隔,以秒計算。 
q:沒有任何延遲的更新。如果使用者有超級使用者,則top命令將會以最高的優先序執行。 
c:顯示程序完整的路徑與名稱。 
S:累積模式,會將己完成或消失的子行程的CPU時間累積起來。 
s:安全模式。 
i:不顯示任何閒置(Idle)或無用(Zombie)的行程。 
n:顯示更新的次數,完成後將會退出to 
顯示引數::


PID(Process ID):程序標示號。 
USER:程序所有者的使用者名稱。 
PR:程序的優先級別。 
NI:程序的優先級別數值。 
VIRT:程序佔用的虛擬記憶體值。 
RES:程序佔用的實體記憶體值。 
SHR:程序使用的共享記憶體值。 
S:程序的狀態,其中S表示休眠,R表示正在執行,Z表示僵死狀態,N表示該程序優先值是負數。 
%CPU:該程序佔用的CPU使用率。 
%MEM:該程序佔用的實體記憶體和總記憶體的百分比。 
TIME+:該程序啟動後佔用的總的CPU時間。 
Command:程序啟動的啟動命令名稱,如果這一行顯示不下,程序會有一個完整的命令列。 


top命令使用過程中,還可以使用一些互動的命令來完成其它引數的功能。這些命令是通過快捷鍵啟動的。 
<空格>:立刻重新整理。 
P:根據CPU使用大小進行排序。 
T:根據時間、累計時間排序。 
q:退出top命令。 
m:切換顯示記憶體資訊。 
t:切換顯示程序和CPU狀態資訊。 
c:切換顯示命令名稱和完整命令列。 
M:根據使用記憶體大小進行排序。 
W:將當前設定寫入~/.toprc檔案中。這是寫top配置檔案的推薦方法。 


free
1.作用 
free命令用來顯示記憶體的使用情況,使用許可權是所有使用者。 
2.格式 
free [-b-k-m] [-o] [-s delay] [-t] [-V] 
3.主要引數 
-b -k -m -g:分別以位元組(KB、MB、GB)為單位顯示記憶體使用情況。 
-s delay:顯示每隔多少秒數來顯示一次記憶體使用情況。 
-t:顯示記憶體總和列。 
-o:不顯示緩衝區調節列。 

uptime
18:59:15 up 25 min, 2 users, load average: 1.23, 1.32, 1.21 
現在的時間 
系統開機運轉到現在經過的時間 
連線的使用者數量 
最近一分鐘,五分鐘和十五分鐘的系統負載 
引數: -V 顯示版本資訊。 

vmstat


procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu---- 
r b swpd free buff cache si so bi bo in cs us sy id wa 
0 1 24980 10792 8296 47316 5 19 205 52 1161 698 26 3 1 70 
1 觀察磁碟活動情況 
磁碟活動情況主要從以下幾個指標瞭解: 
bi:表示從磁碟每秒讀取的塊數(blocks/s)。數字越大,表示讀磁碟的活動越多。 
bo:表示每秒寫到磁碟的塊數(blocks/s)。數字越大,表示寫磁碟的活動越多。 
wa:cpu等待磁碟I/O(未決的磁碟IO)的時間比例。數字越大,表示檔案系統活動阻礙cpu的情況越嚴重,因為cpu在等待慢速的磁碟系統提供資料。wa為0是最理想的。如果wa經常大於10,可能檔案系統就需要進行效能調整了。 
2 觀察cpu活動情況 
vmstat比top更能反映出cpu的使用情況: 
us:使用者程式使用cpu的時間比例。這個數字越大,表示使用者程序越繁忙。 
sy: 系統呼叫使用cpu的時間比例。注意,NFS由於是在核心裡面執行的,所以NFS活動所佔用的cpu時間反映在sy裡面。這個數字經常很大的話,就需要注 意是否某個核心程序,比如NFS任務比較繁重。如果us和sy同時都比較大的話,就需要考慮將某些使用者程式分離到另外的伺服器上面,以免互相影響。 
id:cpu空閒的時間比例。 
wa:cpu等待未決的磁碟IO的時間比例。 

iostat
用於統計CPU的使用情況及tty裝置、硬碟和CD-ROM的I/0量 
引數: 
-c 只顯示CPU行 
-d 顯示磁碟行 
-k 以千位元組為單位顯示磁碟輸出 
-t 在輸出中包括時間戳 
-x 在輸出中包括擴充套件的磁碟指標 
avg-cpu: %user %nice %sys %iowait %idle 
20.25 0.18 2.61 76.39 0.57 
%iowait 等待本地I/O時CPU空閒時間的百分比 
%idle 未等待本地I/O時CPU空閒時間的百分比 
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn 
hda 9.86 284.34 84.48 685407 2036 
每秒傳輸數(tps)、每秒512位元組塊讀取數(Blk_read/s)、每秒512位元組塊寫入數(Blk_wrtn/s)和512位元組塊讀取(Blk_read)和寫入(Blk_wrtn)的總數量。

系統
# uname -a # 檢視核心/作業系統/CPU資訊 
# head -n 1 /etc/issue # 檢視作業系統版本 
# cat /proc/cpuinfo # 檢視CPU資訊 
# hostname # 檢視計算機名 
# lspci -tv # 列出所有PCI裝置 
# lsusb -tv # 列出所有USB裝置 
# lsmod # 列出載入的核心模組 
# env # 檢視環境變數 
資源
# free -m # 檢視記憶體使用量和交換區使用量 
# df -h # 檢視各分割槽使用情況 
# du -sh # 檢視指定目錄的大小 
# grep MemTotal /proc/meminfo # 檢視記憶體總量 
# grep MemFree /proc/meminfo # 檢視空閒記憶體量 
# uptime # 檢視系統執行時間、使用者數、負載 
# cat /proc/loadavg # 檢視系統負載 
磁碟和分割槽
# mount | column -t # 檢視掛接的分割槽狀態 
# fdisk -l # 檢視所有分割槽 
# swapon -s # 檢視所有交換分割槽 
# hdparm -i /dev/hda # 檢視磁碟引數(僅適用於IDE裝置) 
# dmesg | grep IDE # 檢視啟動時IDE裝置檢測狀況 
網路
# ifconfig # 檢視所有網路介面的屬性 
# iptables -L # 檢視防火牆設定 
# route -n # 檢視路由表 
# netstat -lntp # 檢視所有監聽埠 
# netstat -antp # 檢視所有已經建立的連線 
# netstat -s # 檢視網路統計資訊 
程序
# ps -ef # 檢視所有程序 
# top # 實時顯示程序狀態 
使用者
# w # 檢視活動使用者 
# id # 檢視指定使用者資訊 
# last # 檢視使用者登入日誌 
# cut -d: -f1 /etc/passwd # 檢視系統所有使用者 
# cut -d: -f1 /etc/group # 檢視系統所有組 
# crontab -l # 檢視當前使用者的計劃任務 
服務
# chkconfig --list # 列出所有系統服務 
# chkconfig --list | grep on # 列出所有啟動的系統服務 
程式
# rpm -qa # 檢視所有安裝的軟體包