一、last 指令
last 顯示系統開機以來獲是從每月初登入者的訊息
-R 省略 hostname 的欄位
-num 展示前 num 個 如:last -3 展示前三行
username 展示 username 的登入訊息
tty 限制登入訊息包含終端機代号
範例:
[root@elain ~]# last -R -2
root pts/0 Fri Oct 22 14:23 still logged in
root pts/0 Fri Oct 22 12:10 - 14:23 (02:13)
wtmp begins Sat Sep 4 00:38:05 2010
[root@elain ~]# last -2 root
root pts/0 192.168.8.87 Fri Oct 22 14:23 still logged in
root pts/0 192.168.8.87 Fri Oct 22 12:10 - 14:23 (02:13)
二、top 指令
top 是Linux下常用的性能分析工具,能夠實時顯示系統中各個程序的資源占用狀況,類似于Windows的任務管理器。
top - 14:34:14 up 4 days, 16:20, 2 users, load average: 0.56, 0.23, 0.32
Tasks: 75 total, 1 running, 74 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.0%us, 0.0%sy, 0.0%ni, 99.8%id, 0.2%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 1026824k total, 917580k used, 109244k free, 124708k buffers
Swap: 2096472k total, 0k used, 2096472k free, 664320k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
3078 root 15 0 12720 1032 800 R 0.7 0.1 0:00.02 top
2463 root 16 0 10232 676 584 S 0.3 0.1 1:33.69 hald-addon-stor
1 root 15 0 10352 692 584 S 0.0 0.1 0:00.61 init
2 root RT -5 0 0 0 S 0.0 0.0 0:00.35 migration/0
3 root 34 19 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/0
統計資訊區前五行是系統整體的統計資訊。
第一行是任務隊列資訊,同 uptime 指令的執行結果。其内容如下:
14:34:14 目前時間
up 4 days 系統已運作時間
2 users 目前登入使用者數
0.56, 0.23, 0.32 系統負載,即任務隊列的平均長度。三個數值分别為1分鐘、5分鐘、15分鐘前到現在的平均值。
第二行為程序資訊,内容如下:
Tasks: 75 total 程序總數
1 running 正在運作的程序數
74 sleeping 睡眠的程序數
0 stopped 停止的程序數
0 zombie 僵屍程序數
第三行為CPU資訊,當有多個CPU時,這些内容可能會超過兩行。内容如下:
Cpu(s): 0.0%us 使用者空間占用CPU百分比
0.0% sy 核心空間占用CPU百分比
0.0% ni 使用者程序空間内改變過優先級的程序占用CPU百分比
98.8% id 空閑CPU百分比
0.2% wa 等待輸入輸出(IO)的CPU時間百分比
0.0% hi cpu處理硬體中斷的時間;
0.0% si cpu處理軟中斷的時間;
第四行為記憶體資訊,内容如下:
Mem: 1026824k total 實體記憶體總量
917580k used 使用的實體記憶體總量
109244k free 空閑記憶體總量
124708k buffers 用作核心緩存的記憶體量
第五行為SWAP資訊
Swap: 2096472k total 交換區總量
2096472k free 空閑交換區總量
664320k cached 緩沖的交換區總量。
第六行往後是程序清單,常見的這幾列的意義分别為:
PID(程序号), USER(運作使用者),PR(優先級),NI(任務nice值),VIRT(虛拟記憶體用量),RES(實體記憶體用量),
SHR(共享記憶體用量),S(程序狀态),%CPU(CPU占用比),%MEM(記憶體占用比),TIME+(累計CPU占用時間)。
除了這些資訊之外,top還提供了很多指令能幫我們更好的解讀這些資訊,例如按”M”鍵可以按記憶體用量進行排序;
按”P”可以按CPU使用量進行排序,這樣一來對于分析系統瓶頸很有幫助;此外,按“f”可以進入互動頁面,選擇指定的列顯示,
例如可以按“b”選擇顯示PPID,再按一次“b”即可取消顯示。”r”可以改變一個程序的nice值;”k”可以向一個程序發信号;
”z”可以使用彩色顯示。程序資訊區統計資訊區域的下方顯示了各個程序的詳細資訊。首先來認識一下各列的含義。
序号 列名 含義
a PID 程序id
b PPID 父程序id
c RUSER Real user name
d UID 程序所有者的使用者id
e USER 程序所有者的使用者名
f GROUP 程序所有者的組名
g TTY 啟動程序的終端名。不是從終端啟動的程序則顯示為 ?
h PR 優先級
i NI nice值。負值表示高優先級,正值表示低優先級
j P 最後使用的CPU,僅在多CPU環境下有意義
k %CPU 上次更新到現在的CPU時間占用百分比
l TIME 程序使用的CPU時間總計,機關秒
m TIME+ 程序使用的CPU時間總計,機關1/100秒
n %MEM 程序使用的實體記憶體百分比
o VIRT 程序使用的虛拟記憶體總量,機關kb。VIRT=SWAP+RES
p SWAP 程序使用的虛拟記憶體中,被換出的大小,機關kb。
q RES 程序使用的、未被換出的實體記憶體大小,機關kb。RES=CODE+DATA
r CODE 可執行代碼占用的實體記憶體大小,機關kb
s DATA 可執行代碼以外的部分(資料段+棧)占用的實體記憶體大小,機關kb
t SHR 共享記憶體大小,機關kb
u nFLT 頁面錯誤次數
v nDRT 最後一次寫入到現在,被修改過的頁面數。
w S 程序狀态。
x COMMAND 指令名/指令行
y WCHAN 若該程序在睡眠,則顯示睡眠中的系統函數名
z Flags 任務标志,參考 sched.h
D=不可中斷的睡眠狀态
R=運作
S=睡眠
T=跟蹤/停止
Z=僵屍程序
預設情況下僅顯示比較重要的 PID、USER、PR、NI、VIRT、RES、SHR、S、%CPU、%MEM、TIME+、COMMAND 列。可以通過下面的快捷鍵來更改顯示内容。
更改顯示内容通過 f 鍵可以選擇顯示的内容。按 f 鍵之後會顯示列的清單,按 a-z 即可顯示或隐藏對應的列,最後按Enter鍵确定。
按 o 鍵可以改變列的顯示順序。按小寫的 a-z 可以将相應的列向右移動,而大寫的 A-Z 可以将相應的列向左移動。最後按Enter鍵确定。
按大寫的 F 或 O 鍵,然後按 a-z 可以将程序按照相應的列進行排序。而大寫的 R 鍵可以将目前的排序倒轉。
三、free 指令
free
[root@elain ~]# free
total used free shared buffers cached
Mem: 1026824 917764 109060 0 124908 664328
-/+ buffers/cache: 128528 898296
Swap: 2096472 0 2096472
第1行
total 記憶體總數: 1026824
used 已經使用的記憶體數: 917764
free 空閑的記憶體數: 109060
shared 目前已經廢棄不用,總是0
buffers Buffer Cache記憶體數: 124908
cached Page Cache記憶體數: 664328
第2行:
-/+ buffers/cache的意思相當于:
-buffers/cache 的記憶體數:1128528 (等于第1行的 used - buffers - cached)
+buffers/cache 的記憶體數: 2752124 (等于第1行的 free + buffers + cached)
第3行:
total 交換分區總數: 2096472
used 已經使用的: 0
free 空閑的數: 2096472
free -m 大小以M來顯示
四、dstat 指令
yum install -y dstat
dstat
-c 顯示CPU情況
-d 顯示磁盤情況
-g 顯示通信情況
-m 顯示記憶體情況
-n 顯示網絡情況
-p 顯示程序情況
-s 顯示swap情況
-t 顯示系統時鐘
-y 顯示系統統計
-f 使用 -C, -D, -I, -N and -S 顯示
-v 使用-pmgdsc -D 顯示
--ipc 報告IPC消息隊列和信号量的使用情況
--lock enable lock stats
--raw enable raw stats
--tcp enable tcp stats
--udp enable udp stats
--unix enable unix stats
--mods stat1,stat2
--integer show integer values Bbs.Svn8.Com
--nocolor disable colors (implies --noupdate) Bbs.Svn8.Com
--noheaders 隻顯示一次表頭以後就不顯示了,使用重定向寫入檔案時很有用 Bbs.Svn8.Com
--noupdate disable intermediate updates Svn中文網
--output file 寫入到CVS檔案中
推薦使用 date && dstat -tclmdny 60 一分鐘監視一次(注意調節顯示的寬度,或去掉-t選項)。
五、iostat 指令
# cat /proc/partitions
[root@elain ~]# cat /proc/partitions
major minor #blocks name
8 0 20971520 sda
8 1 200781 sda1
8 2 8193150 sda2
8 3 2096482 sda3
8 4 1 sda4
8 5 10474348 sda5
major: 主裝置号。8 代表 sda。
minor: 次裝置号。5 代表 No.5 分區。
#blocks: 裝置總塊數
name: 裝置名稱。如 sda3。
[root@elain ~]# iostat -x
Linux 2.6.18-194.11.3.el5 (elain) 2010年10月22日
avg-cpu: %user %nice %system %iowait %steal %idle
0.17 0.10 0.12 0.05 0.00 99.55
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
sda 0.17 1.14 0.07 0.35 3.38 11.80 35.72 0.03 59.56 3.64 0.15
sda1 0.00 0.00 0.00 0.00 0.00 0.00 18.96 0.00 8.47 6.65 0.00
sda2 0.05 1.11 0.06 0.35 3.19 11.68 36.24 0.02 60.31 3.64 0.15
sda3 0.00 0.00 0.00 0.00 0.00 0.00 31.65 0.00 8.21 6.47 0.00
sda4 0.00 0.00 0.00 0.00 0.00 0.00 2.00 0.00 6.00 6.00 0.00
sda5 0.11 0.04 0.01 0.01 0.18 0.12 21.11 0.00 39.66 4.71 0.01
rrqm/s: 每秒進行 merge 的讀操作數目。即 delta(rmerge)/s
wrqm/s: 每秒進行 merge 的寫操作數目。即 delta(wmerge)/s
r/s: 每秒完成的讀 I/O 裝置次數。即 delta(rio)/s
w/s: 每秒完成的寫 I/O 裝置次數。即 delta(wio)/s
rsec/s: 每秒讀扇區數。即 delta(rsect)/s
wsec/s: 每秒寫扇區數。即 delta(wsect)/s
avgrq-sz: 平均每次裝置I/O操作的資料大小 (扇區)。即 delta(rsect+wsect)/delta(rio+wio)
avgqu-sz: 平均I/O隊列長度。即 delta(aveq)/s/1000 (因為aveq的機關為毫秒)。
await: 平均每次裝置I/O操作的等待時間 (毫秒)。即 delta(ruse+wuse)/delta(rio+wio)
svctm: 平均每次裝置I/O操作的服務時間 (毫秒)。即 delta(use)/delta(rio+wio)
%util: 一秒中有百分之多少的時間用于 I/O 操作,或者說一秒中有多少時間 I/O 隊列是非空的。
即 delta(use)/s/1000 (因為use的機關為毫秒)
如果 %util 接近 100%,說明産生的I/O請求太多,I/O系統已經滿負荷,該磁盤可能存在瓶頸。
svctm 一般要小于 await (因為同時等待的請求的等待時間被重複計算了),
svctm 的大小一般和磁盤性能有關,CPU/記憶體的負荷也會對其有影響,請求過多
也會間接導緻 svctm 的增加。await 的大小一般取決于服務時間(svctm) 以及
I/O 隊列的長度和 I/O 請求的發出模式。如果 svctm 比較接近 await,說明
I/O 幾乎沒有等待時間;如果 await 遠大于 svctm,說明 I/O 隊列太長,應用
得到的響應時間變慢,如果響應時間超過了使用者可以容許的範圍,這時可以考慮
更換更快的磁盤,調整核心 elevator 算法,優化應用,或者更新 CPU。
隊列長度(avgqu-sz)也可作為衡量系統 I/O 負荷的名額,但由于 avgqu-sz 是
按照機關時間的平均值,是以不能反映瞬間的 I/O 洪水。
六、vmstat 指令
vmstat 指令報告虛拟記憶體統計資訊和CPU負荷:頁面排程,交換,任務交換,CPU使用率。指令的文法是:
vmstat
-swap 現時可用的交換記憶體(k表示)
-free 空閑的記憶體(k表示)
-disk 顯示每秒的磁盤操作。 s表示scsi盤,0表示盤号
[root@elain ~]# vmstat 1 3
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 109036 123156 664444 0 0 1 3 37 12 0 0 100 0 0
0 0 0 109036 123156 664444 0 0 0 0 1022 28 0 0 100 0 0
0 0 0 109036 123156 664444 0 0 0 0 1003 17 0 0 100 0 0
如果 r經常大于 4 ,且id經常少于40,表示cpu的負荷很重。
目前說來,對于伺服器監控有用處的度量主要有:
r(運作隊列)
us(使用者CPU)
sy(系統CPU)
id(空閑)
通過VMSTAT識别CPU瓶頸
r(運作隊列)展示了正在執行和等待CPU資源的任務個數。當這個值超過了CPU數目,就會出現CPU瓶頸了。
獲得CPU個數的指令(LINUX環境):
cat /proc/cpuinfo|grep processor|wc -l
當r值超過了CPU個數,就會出現CPU瓶頸,解決辦法大體幾種:
1. 最簡單的就是增加CPU個數
2. 通過調整任務執行時間,如大任務放到系統不繁忙的情況下進行執行,進爾平衡系統任務
3. 調整已有任務的優先級
通過VMSTAT識别CPU滿負荷
首先需要聲明一點的是,vmstat中CPU的度量是百分比的。當us+sy的值接近100的時候,表示CPU正在接近滿負荷工作。
但要注意的是,CPU 滿負荷工作并不能說明什麼,UNIX總是試圖要CPU盡可能的繁忙,使得任務的吞吐量最大化。唯一能夠确定CPU瓶頸的還是r(運作隊列)的值。
通過VMSTAT識别RAM瓶頸
資料庫伺服器都隻有有限的RAM,出現記憶體争用現象是Oracle的常見問題。
首先察看RAM的數量,指令如下(LINUX環境):
Mem: 1026824 918284 108540 0 123180 664448
-/+ buffers/cache: 130656 896168
當然可以使用top等其他指令來顯示RAM。
當記憶體的需求大于RAM的數量,伺服器啟動了虛拟記憶體機制,通過虛拟記憶體,可以将RAM段移到SWAP DISK的特殊磁盤段上,
這樣會出現虛拟記憶體的頁導出和頁導入現象,頁導出并不能說明RAM瓶頸,虛拟記憶體系統經常會對記憶體段進行頁導出,
但頁導入操作就表明了伺服器需要更多的記憶體了,頁導入需要從SWAP DISK上将記憶體段複制回RAM,導緻伺服器速度變慢。
解決的辦法有幾種:
1. 最簡單的,加大RAM
2. 改小SGA,使得對RAM需求減少
3. 減少RAM的需求(如:減少PGA)
vmstat各項:
procs:
r-->在運作隊列中等待的程序數
b-->在等待io的程序數
w-->可以進入運作隊列但被替換的程序
memoy
swap-->現時可用的交換記憶體(k表示)
free-->空閑的記憶體(k表示)
pages
re--》回收的頁面
mf--》非嚴重錯誤的頁面
pi--》進入頁面數(k表示)
po--》出頁面數(k表示)
fr--》空餘的頁面數(k表示)
de--》提前讀入的頁面中的未命中數
sr--》通過時鐘算法掃描的頁面
disk 顯示每秒的磁盤操作。 s表示scsi盤,0表示盤号
fault 顯示每秒的中斷數
in--》裝置中斷
sy--》系統中斷
cy--》cpu交換
cpu 表示cpu的使用狀态
cs--》使用者程序使用的時間
sy--》系統程序使用的時間
id--》cpu空閑的時間
如果pi,po 長期不等于0,表示記憶體不足。
如果disk 經常不等于0, 且在 b中的隊列 大于3, 表示 io性能不好。
七、mpstat 指令
mpstat是MultiProcessor Statistics的縮寫,是實時系統監控工具。其報告與CPU的一些統計資訊,這些資訊存放在/proc/stat檔案中。
在多CPUs系統裡,其不但能檢視所有CPU的平均狀況資訊,而且能夠檢視特定CPU的資訊。mpstat的文法如下:
[root@elain ~]# mpstat
16時13分59秒 CPU %user %nice %sys %iowait %irq %soft %steal %idle intr/s
16時13分59秒 all 0.17 0.10 0.07 0.05 0.02 0.03 0.00 99.56 1018.86
%user 在internal時間段裡,使用者态的CPU時間(%),不包含 nice值為負 程序 (usr/total)*100
%nice 在internal時間段裡,nice值為負程序的CPU時間(%) (nice/total)*100
%sys 在internal時間段裡,核心時間(%) (system/total)*100
%iowait 在internal時間段裡,硬碟IO等待時間(%) (iowait/total)*100
%irq 在internal時間段裡,硬中斷時間(%) (irq/total)*100
%soft 在internal時間段裡,軟中斷時間(%) (softirq/total)*100
%idle 在internal時間段裡,CPU除去等待磁盤IO操作外的因為任何原因而空閑的時間閑置時間(%)(idle/total)*100
%intr/s 在internal時間段裡,每秒CPU接收的中斷的次數intr/total)*100
total_cur=user+system+nice+idle+iowait+irq+softirq
total_pre=pre_user+ pre_system+ pre_nice+ pre_idle+ pre_iowait+ pre_irq+ pre_softirq
user=user_cur – user_pre
total=total_cur-total_pre
其中_cur 表示目前值,_pre表示interval時間前的值。上表中的所有值可取到兩位小數點。
執行個體: 每2秒産生了2個處理器的統計資料報告
下面的指令可以每2秒産生了2個處理器的統計資料報告,一共産生三個interval 的資訊,然後再給出這三個interval的平
均資訊。預設時,輸出是按照CPU 号排序。第一個行給出了從系統引導以來的所有活躍資料。接下來每行對應一個處理器的
活躍狀态。。
[root@elain ~]# mpstat -P ALL 2 3
16時17分43秒 CPU %user %nice %sys %iowait %irq %soft %steal %idle intr/s
16時17分45秒 all 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 1036.36
16時17分45秒 0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 1036.36
16時17分45秒 1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 0.00
16時17分45秒 CPU %user %nice %sys %iowait %irq %soft %steal %idle intr/s
16時17分47秒 all 0.00 0.00 0.00 0.00 0.00 0.25 0.00 99.75 1045.27
16時17分47秒 0 0.00 0.00 0.00 0.00 0.50 0.00 0.00 99.50 1045.27
16時17分47秒 1 0.50 0.00 0.00 0.00 0.00 0.00 0.00 99.50 0.00
16時17分47秒 CPU %user %nice %sys %iowait %irq %soft %steal %idle intr/s
16時17分49秒 all 0.00 0.00 0.25 0.50 0.00 0.00 0.00 99.25 1031.84
16時17分49秒 0 0.00 0.00 0.50 1.49 0.00 0.00 0.00 98.01 1031.84
16時17分49秒 1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 0.00
Average: CPU %user %nice %sys %iowait %irq %soft %steal %idle intr/s
Average: all 0.00 0.00 0.08 0.17 0.00 0.08 0.00 99.67 1037.83
Average: 0 0.00 0.00 0.17 0.50 0.17 0.00 0.00 99.17 1037.83
Average: 1 0.17 0.00 0.00 0.00 0.00 0.00 0.00 99.83 0.00
八、sar 指令
該指令是系統維護 的重要工具,主要幫助我們掌握系統資源的使用情況,特别是記憶體和CPU 的使用情況, 是UNIX系統使用者應該掌握的工具之 一。
sar
-A:所有報告的總和。
-u:CPU使用率
-v:程序、I節點、檔案和鎖表狀态。
-d:硬碟使用報告。
-r:沒有使用的記憶體頁面和硬碟塊。
-g:序列槽I/O的情況。
-b:緩沖區使用情況。
-a:檔案讀寫情況。
-c:系統調用情況。
-R:程序的活動情況。
-y:終端裝置活動情況。
-w:系統交換活動。
執行個體1:每60秒采樣一次,連續采樣5次,觀察CPU的使用情況,并将采樣結果以二進制形式存入目前目錄下的檔案/sar中,需鍵入如下指令:
[root@elain ~]# sar -u -o sar 60 5
16時28分47秒 CPU %user %nice %system %iowait %steal %idle
16時29分47秒 all 0.00 0.00 0.00 1.00 0.00 99.00
16時30分47秒 all 0.00 0.00 0.00 1.00 0.00 99.00
16時31分47秒 all 0.00 0.00 0.00 1.50 0.00 98.50
16時32分47秒 all 0.00 0.00 0.00 1.00 0.00 99.00
16時33分57秒 all 0.00 0.00 0.00 1.00 0.00 99.00
Average: all 0.00 0.00 0.00 1.10 0.00 98.90
在顯示内容包括:
%usr: CPU處在使用者模式下的時間百分比。
%sys: CPU處在系統模式下的時間百分比。
%iowait:CPU等待輸入輸出完成時間的百分比。
%idle: CPU空閑時間百分比。
我們應主要注意%wio和%idle,%wio的值過高,表示硬碟存在I/O瓶頸,%idle值高,表示CPU較空閑,如果%idle值高 但系統響應慢時,有可能是CPU等待配置設定記憶體,
此時應加大記憶體容量。%idle值如果持續低于10,那麼系統的CPU處理能力相對較低,表明系統中最需要 解決的資源是CPU。
檢視二進制檔案sar中的内容,則需鍵入如下sar指令:
sar -u -f sar
執行個體2:每30秒采樣一次,連續采樣5次,觀察核心表的狀态,需鍵入如下指令:
[root@elain ~]# sar -v 60 5
16時32分54秒 dentunusd file-sz inode-sz super-sz %super-sz dquot-sz %dquot-sz rtsig-sz %rtsig-sz
16時33分54秒 60602 510 50659 0 0.00 0 0.00 0 0.00
16時34分54秒 60602 510 50659 0 0.00 0 0.00 0 0.00
16時35分54秒 60602 510 50659 0 0.00 0 0.00 0 0.00
16時36分54秒 60602 510 50659 0 0.00 0 0.00 0 0.00
16時37分54秒 60602 510 50659 0 0.00 0 0.00 0 0.00
Average: 60602 510 50659 0 0.00 0 0.00 0 0.00
顯示内容表示,核心使用完全正常,三個表沒有出現溢出現象,核心參數不需調整,如果出現溢出時,要調整相應的核心參數,将對應的表項數加大。
小提示:
懷疑CPU存在瓶頸,可用sar -u 和sar -q來看,懷疑I/O存在 瓶頸,可用sar -b、sar -u和sar-d來看。
本文轉自 elain2012 51CTO部落格,原文連結:http://blog.51cto.com/elain/619144