1.CPU&進程
1.1 top命令
top - 20:07:00 up 186 days, 3:47, 3 users, load
average: 0.01, 0.02, 0.00
Tasks: 82 total, 1 running, 80
sleeping, 1 stopped, 0 zombie
Cpu(s): 3.7% us, 0.0% sy, 0.0% ni, 96.3%
id, 0.0% wa, 0.0% hi, 0.0% si
第1行 load average
系統負載,即任務佇列的平均長度。三個數值分別為 1分鐘、5分鐘、15分鐘前到現在的平均值。
第2行 進程情況
Tasks: 29 total 進程總數
1 running 正在運行的進程數
28 sleeping 睡眠的進程數
0 stopped 停止的進程數
0 zombie 僵屍進程數
Tasks: 29 total 進程總數
1 running 正在運行的進程數
28 sleeping 睡眠的進程數
0 stopped 停止的進程數
0 zombie 僵屍進程數
第3行
cpu利用情況
多顆cpu的系統按"1"查看每顆cpu利用率
Cpu(s):
us 用戶空間佔用CPU百分比
sy 內核空間佔用CPU百分比
ni 使用者進程空間內改變過優先順序的進程佔用CPU百分比
id 空閒CPU百分比
wa 等待輸入輸出的CPU時間百分比
hi 硬體中斷
si 軟體插斷
後面兩個參數我沒有深入瞭解過,也不是很明白.
多顆cpu的系統按"1"查看每顆cpu利用率
Cpu(s):
us 用戶空間佔用CPU百分比
sy 內核空間佔用CPU百分比
ni 使用者進程空間內改變過優先順序的進程佔用CPU百分比
id 空閒CPU百分比
wa 等待輸入輸出的CPU時間百分比
hi 硬體中斷
si 軟體插斷
後面兩個參數我沒有深入瞭解過,也不是很明白.
關於top命令的詳細情況,請查閱top命令詳解文章
2.Memory
2.1 top 命令
Mem: 4149144k total, 3832668k used,
316476k free, 277592k buffers
Swap: 2096440k total, 144k
used, 2096296k free, 2397028k cached
Mem:記憶體利用率
total 實體記憶體總量
used 使用的實體記憶體總量
free 空閒記憶體總量
buffers 用作內核緩存的記憶體量
Swap:記憶體交換區利用率Swap
total 交換區總量
used 使用的交換區總量
free 空閒交換區總量
cached 緩衝的交換區總量。記憶體中的內容被換出到交換區,而後又被換入到記憶體,但使用過的交換區尚未被覆蓋,
該數值即為這些內容已存在於記憶體中的交換區的大小。相應的記憶體再次被換出時可不必再對交換區寫入。
total 交換區總量
used 使用的交換區總量
free 空閒交換區總量
cached 緩衝的交換區總量。記憶體中的內容被換出到交換區,而後又被換入到記憶體,但使用過的交換區尚未被覆蓋,
該數值即為這些內容已存在於記憶體中的交換區的大小。相應的記憶體再次被換出時可不必再對交換區寫入。
2.2 free
free -m 記憶體資訊按照M單位顯示
total
used free
shared buffers cached
Mem: 4051 3744 307 0 271 2340
-/+ buffers/cache: 1132 2919
Swap: 2047 0 2047
Mem: 4051 3744 307 0 271 2340
-/+ buffers/cache: 1132 2919
Swap: 2047 0 2047
total: 記憶體總數
used: 已經使用的記憶體數
free: 空閒的記憶體數
shared: 當前已經廢棄不用,總是0
buffers: Buffer緩存記憶體數,是塊設備的讀寫緩衝區
cached: Page緩存記憶體數,檔案系統的cache
used: 已經使用的記憶體數
free: 空閒的記憶體數
shared: 當前已經廢棄不用,總是0
buffers: Buffer緩存記憶體數,是塊設備的讀寫緩衝區
cached: Page緩存記憶體數,檔案系統的cache
關係:total=used+free
第二部分(-/+ buffers/cache):
(-buffers/cache) used記憶體數:(指的第一部分Mem行中的used - buffers-cached)
(+buffers/cache) free記憶體數: (指的第一部分Mem行中的free + buffers+cached)
-buffers/cache反映的是被程式實實在在吃掉的記憶體
+buffers/cache反映的是可以挪用的記憶體總數
對應用程式來講是(-/+ buffers/cach).buffers/cached 是等同可用的,因為buffer/cached是為了提高程式執行的性能,當程式使用記憶體時,buffer/cached會很快地被使用。
第二部分(-/+ buffers/cache):
(-buffers/cache) used記憶體數:(指的第一部分Mem行中的used - buffers-cached)
(+buffers/cache) free記憶體數: (指的第一部分Mem行中的free + buffers+cached)
-buffers/cache反映的是被程式實實在在吃掉的記憶體
+buffers/cache反映的是可以挪用的記憶體總數
對應用程式來講是(-/+ buffers/cach).buffers/cached 是等同可用的,因為buffer/cached是為了提高程式執行的性能,當程式使用記憶體時,buffer/cached會很快地被使用。
關於buffer與cache的區別
A buffer is something that has yet to be "written" to disk
buffer為有待寫入磁片的資料的緩衝區(供塊設備訪問,即隨機訪問資料片的設備)
A buffer is something that has yet to be "written" to disk
buffer為有待寫入磁片的資料的緩衝區(供塊設備訪問,即隨機訪問資料片的設備)
A cache is something that has been "read" from the disk
and stored for later use
cache為已經被從磁片讀取和存儲有待使用的緩衝區
cache為已經被從磁片讀取和存儲有待使用的緩衝區
第三部分為虛擬記憶體緩衝區(swap),與windows不同的是,linux在實體記憶體沒有耗盡的情況下,swap是不使用的.我曾經在做性能測試的過程中監控,發現伺服器物理free記憶體只剩下
15m時候,swap換入換出都仍然為0
2.3 vmstat n 動態監控記憶體使用情況(n為採樣間隔時間)
在性能測試過程中,n最好不設置過小,以免耗費不必要的系統資源影響測試結果.
procs
-----------memory-------------
-----swap--- ----io---- --system-- ------cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
1 0 144 312628 277612 2397268 0 0 1 9 1 0 2 0 98 0
0 0 144 312628 277628 2397252 0 0 0 19 1006 869 5 0 95 0
r b swpd free buff cache si so bi bo in cs us sy id wa
1 0 144 312628 277612 2397268 0 0 1 9 1 0 2 0 98 0
0 0 144 312628 277628 2397252 0 0 0 19 1006 869 5 0 95 0
procs:
r:在運行佇列中等待的進程數
b:在等待io的進程數
r:在運行佇列中等待的進程數
b:在等待io的進程數
memory
swpd 切換到記憶體交換區的記憶體數量(k表示)。如果swpd的值不為0,或者比較大(比如超過了100m),代表曾經使用虛擬記憶體的數量,只要si、so的值長期為0,說明資料從磁片到記憶體無換入換出,系統性能還是正常的.
free 當前的空閒頁面清單中記憶體數量(k表示)
buff 作為buffer cache的記憶體數量,一般對塊設備的讀寫才需要緩衝。
cache: 作為page cache的記憶體數量(k),一般作為檔案系統的cache,如果cache較大,說明用到cache的檔較多,如果此時IO中bi比較小,說明檔案系統效率比較好。
swap
si: 從磁片交換到記憶體的交換頁數量,單位:KB/秒
so: 從記憶體交換到磁片的交換頁數量,單位:KB/秒
io
bi: 發送到塊設備的塊數,單位:塊/秒
bo: 從塊設備接收到的塊數,單位:塊/秒
以上兩項數值高,表示磁片讀寫頻繁,排除是否程式在大量讀取檔。可以使用iostat進一步觀察磁片情況
system系統:
in: 每秒的中斷數,包括時鐘中斷。
cs: 每秒的環境(上下文)切換次數。
如以上兩項數值持續走高,說明程式引起的cpu調度出現問題,考慮程式處理邏輯的問題
cpu
us 列顯示了使用者方式下所花費 CPU 時間的百分比。us的值比較高時,說明使用者進程消耗的cpu時間多,但是如果長期大於50%,需要考慮優化使用者的程式。
sy 列顯示了內核進程所花費的cpu時間的百分比。這裡us + sy的參考值為80%,如果us+sy 大於 80%說明可能存在CPU不足。
wa 列顯示了IO等待所佔用的CPU時間的百分比。這裡wa的參考值為30%,如果wa超過30%,說明IO等待嚴重,這可能是磁片大量隨機訪問造成的,也可能磁片或者磁片存取控制器的頻寬瓶頸造成的(主要是塊操作)
us 列顯示了使用者方式下所花費 CPU 時間的百分比。us的值比較高時,說明使用者進程消耗的cpu時間多,但是如果長期大於50%,需要考慮優化使用者的程式。
sy 列顯示了內核進程所花費的cpu時間的百分比。這裡us + sy的參考值為80%,如果us+sy 大於 80%說明可能存在CPU不足。
wa 列顯示了IO等待所佔用的CPU時間的百分比。這裡wa的參考值為30%,如果wa超過30%,說明IO等待嚴重,這可能是磁片大量隨機訪問造成的,也可能磁片或者磁片存取控制器的頻寬瓶頸造成的(主要是塊操作)
沒有留言:
張貼留言