查看某一時間段的系統性能使用情況


前言



有的時候,我們要通過對系統的cpu負載等性能數值的查看,來判排查系統產生某種故障(經常死機或者運行速度突然變慢)的原因。但是,簡單的top,uptime,w等命令只可以查看當前的負載,而無法查看過去的某一時間段的cpu的負載情況。

下面就介紹一個用於性能分析的命令,其可以用於查看過去的某一時間段的cpu的負載情況(系統性能)。

更多使用實例,隨時更新。如急需使用方法(例如:查看某一時間段的cpu),請直接跳到第七節。



一、sar概念


sysstat是Linux 系統中的常用工具包,而sar 是 Linux中sysstat工具包中的用於監控Linux系統性能的工具之一。

sysstat 工具包中包含兩種類型的工具:即時查看工具(iostat、mpstat、sar);累計統計工具(sar)

因此sar命令,又叫做系統活動情況報告。不僅可以實時查看服務器的性能,還可以做累計統計。



二、sar可監控的范圍


文件的讀寫情況
系統調用的使用情況
磁盤I/O使用情況
CPU的使用統計
內存使用狀況
進程活動
IPC有關的活動



三、sar命令使用環境


sar命令使用格式:
sar + 命令行選項(可選) + 間隔時間(可選) + 次數(可選)


常用來判斷一個系統瓶頸問題

查詢CPU
可用 sar -u 和 sar -q 等來查看

查詢內存
可用 sar -B、sar -r 和 sar -W 等來查看

查詢io
可用 sar -b、sar -u 和 sar -d 等來查看



四、sar命令累計統計的實現過程


系統會通過調用 /usr/lib64/sa/ 中的三個工具(sa1 sa2 sadc)來實現,周期地記錄當時的系統性能的信息的功能。

  • sa1 :收集並將每天的系統性能的信息寫入一個二進制的文件中,它是sadc的前端程序

  • sa2 :收集每天的系統活躍的信息並寫入總結性的文件中,其作為 sar的前端程序

  • sadc :收集系統的動態數據的數據並寫入一個二進制的文件中,其作為 sar 工具的后端


這里寫圖片描述



五、sar的日志


sar是由有類似日志切割的功能的,它會依據/etc/cron.d/sysstat中的計划任務,將日志放入/var/log/sa/中
(其日志為二進制文件,不可使用more、less、vim工具查看,必須使用sar或sadf )。

可以根據需求修改該計划任務.


這里寫圖片描述



如要查看某一時間段的服務器的性能的其中一個方法就是:使用sar命令,查看當天的日志文件

sar -f /var/log/sa/sa15

[root@    lib64]# sar -f /var/log/sa/sa15
Linux 3.10.0-327.el7.x86_64 (ops-node7)     07/15/2018  _x86_64_    (24 CPU)

12:00:01 AM     CPU     %user     %nice   %system   %iowait    %steal     %idle
12:10:01 AM     all      1.35      0.00      0.85      0.12      0.00     97.67
12:20:01 AM     all      1.32      0.00      0.86      0.11      0.00     97.71
12:30:02 AM     all      1.37      0.00      0.87      0.11      0.00     97.65
12:40:01 AM     all      1.32      0.00      0.91      0.11      0.00     97.66
12:50:01 AM     all      1.35      0.00      0.89      0.11      0.00     97.65
01:00:01 AM     all      1.36      0.00      0.87      0.11      0.00     97.66
01:10:01 AM     all      1.36      0.00      0.85      0.11      0.00     97.68
01:20:01 AM     all      1.35      0.00      0.89      0.10      0.00     97.66
01:30:01 AM     all      1.32      0.00      0.89      0.11      0.00     97.68
01:40:01 AM     all      1.29      0.00      0.95      0.11      0.00     97.65
01:50:01 AM     all      1.35      0.00      0.88      0.12      0.00     97.64
02:00:01 AM     all      1.34      0.00      0.88      0.11      0.00     97.68
02:10:01 AM     all      1.33      0.00      0.90      0.11      0.00     97.65
02:20:01 AM     all      1.36      0.00      0.87      0.12      0.00     97.65
02:30:01 AM     all      1.35      0.00      0.85      0.12      0.00     97.68
02:40:01 AM     all      1.41      0.00      0.92      0.12      0.00     97.56
02:50:01 AM     all      1.57      0.00      0.95      0.13      0.00     97.35
03:00:01 AM     all      4.21      0.00      0.81      0.16      0.00     94.81
03:10:01 AM     all      2.50      0.00      0.87      0.13      0.00     96.50
03:20:01 AM     all      1.37      0.00      0.87      0.12      0.00     97.65
03:30:01 AM     all      1.36      0.00      0.95      0.13      0.00     97.56
03:40:01 AM     all      1.48      0.00      0.97      0.24      0.00     97.30
03:50:01 AM     all      1.35      0.01      0.91      0.13      0.00     97.60
04:00:01 AM     all      1.39      0.00      0.95      0.19      0.00     97.47
04:10:01 AM     all      1.36      0.00      0.99      0.13      0.00     97.52
 

注意:

sar查看性能或其日志時,使用的12/24小時制;日志的切割是昨天晚上12點到今天12點為一天;默認只保留一個月的日志



六、sar命令參數及輸出項詳解


這里寫圖片描述

這里寫圖片描述

這里寫圖片描述


【1】格式


用法:
sar + 選項 + 時間間隔(可選) + 次數 (可選)

interval: 取樣周期,單位是秒
count:取樣次數,默認值為 1
options:命令行選項



【2】常用選項


-A 所有報告的總和 
-B 輸出內存頁面的統計信息 
-b 輸出I/O和傳送速率的統計信息 
-C 輸出進程統計信息及每秒創建的進程數 
-d 輸出每一個塊設備的活動信息 
-H 輸出交換空間利用率信息 
-h 輸出幫助信息 
-p 輸出友好設備名字,以方便查看,常與-d和-n參數結合使用 
-q 輸出進程隊列長度和系統平均負載狀態統計信息 
-R 輸出內存頁面的統計信息 
-r 輸出內存和交換空間的統計信息 
-S 輸出交換空間利用率信息 
-t 讀取 /var/log/sa/下的某日志的數據時顯示其中記錄的原始時間 
-u 輸出整體CPU使用情況的統計信息 
-V 輸出版本信息 
-v 輸出內核表狀況統計信息(inode、文件和其他內核表的統計信息) 
-W 輸出系統交換的統計信息 
-w 輸出任務創建與系統轉換統計信息 
-y 輸出終端設備的活動信息 

---------- 
-I 輸出指定中斷的統計信息,后方可加參數{...|SUM|ALL|XALL} ...          指定中斷號
SUM          指定輸出每秒接收到的中斷總數
ALL          指定輸出前16個中斷
XALL         指定輸出全部的中斷信息

---------- 
-P 輸出指定的部分的CPU的統計信息,后方可加參數{cpu|ALL} cpu          指定cpu
ALL          輸出單個和整體cpu的統計數據

---------- 
-n 輸出網絡設備(網卡)狀態統計信息,后方可加參數{DEV|EDEV|NFS|NFSD|SOCK|ALL} DEV          輸出網絡設備的統計信息
EDEV         輸出網絡設備的錯誤統計信息
NFS          輸出NFS客戶端的活動統計信息
NFSD         輸出NFS服務器的活動統計信息
SOCK         輸出網絡套接字的使用統計信息
ALL          輸出所有類型的網絡活動統計信息

---------- 
-f 從文件中讀取數據信息。一般讀取sar日志,也可讀取-o選項生成的文件,后方要加文件名 
-o 將sar的輸出信息保存到文件中,后方要加文件名 
-i 指定間隔時長,單位為秒 
-s 指定輸出統計數據的起始時間(格式為hh:mm:ss;例如010000
-e 指定輸出統計數據的截至時間,通常與-S選項連用。無數值時默認為18:00:00(格式為hh:mm:ss;例如09:0000
 

【3】輸出項



<1>cpu的輸出

sar -u

這里寫圖片描述

%usr               CPU在用戶模式下,執行進程的時間百分比 
%nice              CPU在用戶模式下,用於nice操作,所占用CPU總時間的百分比 
%system            CPU處在系統模式(內核態)下,執行進程的時間百分比 
%iowait            CPU用於等待I/O操作完成(等待輸入輸出完成),占用CPU總時間的百分比 
%steal             管理程序為另一個虛擬進程提供服務而等待虛擬CPU的百分比
%idle              CPU空閑時間百分比
 

注意:

如果%iowait的值過高,表示硬盤存在I/O瓶頸 
如果%idle值高,表示CPU較空閑
如果%idle 的值高但系統響應慢時,有可能是 CPU 等待分配內存,此時應加大內存容量 
如果%idle 的值持續低於10,則系統的 CPU 處理能力相對較低,表明系統中最需要解決的資源是 CPU
 

 


<2>I/O和傳送速率輸出

sar -b

這里寫圖片描述

tps                每每秒向磁盤設備請求數據的次數,包括讀、寫請求,其為rtps與wtps的和。每一次IO下發后會先將多個請求合並為一個I/O磁盤請求,這里tps指請求合並后的請求計數
rtps               每秒向磁盤設備的讀請求次數 
wtps               每秒向磁盤設備的寫請求次數 
bread/s            每秒鍾從物理設備讀入的數據量,單位為 塊/s 
bwrtn/s            每秒鍾向物理設備寫入的數據量,單位為 塊/s
 

<3>設備使用情況輸出

sar -d

這里寫圖片描述

DEV                磁盤設備,加上用參數-p可以打印出sda等磁盤設備名稱;如不加參數-p,設備則顯示為dev253-0等
tps                每秒向磁盤設備請求數據的次數,包括讀、寫請求,其為rtps與wtps的和。每一次IO下發后會先將多個請求合並為一個I/O磁盤請求,這里tps指請求合並后的請求計數
rd_sec/s           每秒讀扇區的次數
wr_sec/s           每秒寫扇區的次數
avgrq-sz           平均每次設備I/O操作的數據大小(扇區)
avgqu-sz           磁盤請求隊列的平均長度
await              從請求磁盤到系統處理完,每次請求的平均消耗時間,包括請求隊列等待時間(單位是毫秒)
svctm              系統處理每次請求的平均時間,不包括在請求隊列中消耗的時間
%util              I/O請求占CPU的百分比
 

<4>網絡設備統計信息輸出

sar -n EDEV

這里寫圖片描述


IFACE              網絡設備名
rxpck/s            每秒接收的包數量
txpck/s            每秒傳輸的包數量
rxbyt/s            每秒接收的字節數(單位為byte)
txbyt/s            每秒傳輸的字節數(單位為byte)
rxkB/s             每秒收的數據量(單位為kB)
txkB/s             每秒發的數據量(單位為kB)
rxcmp/s            每秒接收壓縮包的數量
txcmp/s            每秒傳輸壓縮包的數量
rxmcst/s           每秒接收的多播(multicast)包的總數排查網絡設備故障
 

<5>網絡設備故障信息輸出

EDEV |egrep ‘eth0|IFACE’ (本次指定了網卡etho0,可填入其他網卡)

這里寫圖片描述


IFACE              網絡設備名
rxerr/s            每秒接收的壞包數量
txerr/s            傳輸包時每秒發生錯誤的數量
coll/s             傳輸包時每秒發生沖突的數量
rxdrop/s           接收包時,每秒丟棄的包的數量(缺乏緩存導致)
txdrop/s           傳輸包時,每秒丟棄的包的數量(缺乏緩存導致)
txcarr/s           傳輸包時,每秒發生的傳輸錯誤的數量
rxfram/s           接收包時,每秒發生幀校驗錯誤的數量
rxfifo/s           接收包時,每秒鍾緩沖區溢出錯誤的數量
txfifo/s           傳輸包時,每秒鍾緩沖區溢出錯誤的數量
 

<6>內存分頁狀態輸出

sar -B

這里寫圖片描述


pgpgin/s         每秒從磁盤空間或交換空間置換到內存的字節數(單位為KB)
pgpgout/s        每秒從內存置換到磁盤空間或交換空間的字節數(單位為KB)
fault/s          每秒鍾系統產生的缺頁數(主缺頁加次缺頁)
majflt/s         每秒鍾產生的主缺頁數
pgfree/s         每秒被放入空閑隊列中的頁個數
pgscank/s        每秒被kswapd掃描的頁個數
pgscand/s        每秒直接被掃描的頁個數
pgsteal/s        每秒鍾從cache中被清除來滿足內存需要的頁個數
%vmeff           每秒清除的頁占總掃描頁的百分比
 

<7>進程隊列長度和平均負載狀態輸出

sar -q

這里寫圖片描述


runq-sz          運行隊列的長度,等待運行的進程數量
plist-sz         進程列表中進程和線程的數量
ldavg-1          最后1分鍾的系統平均負載
ldavg-5          過去5分鍾的系統平均負載
ldavg-15         過去15分鍾的系統平均負載
 

 


<8>內存和交換空間狀態輸出

sar -r

這里寫圖片描述


kbmemfree          空閑的內存數量(單位為KB)
kbmemused          已使用的內存數量,不包含內核使用的內存(單位為KB)
%memused           已使用內存的百分數
kbbuffers          內核緩沖區buffer,使用的內存數量(單位為KB)
kbcached           內核高速緩存cache數據使用的內存數量(單位為KB)
kbcommit           保證當前系統所需要的內存,即為了確保不溢出而需要的內存(RAM+swap)
%commit            kbcommit與所有內存總量的百分比
 

<9>系統交換活動信息輸出

sar -W

這里寫圖片描述


pswpin/s           每秒系統換入的交換頁面數量
pswpout/s          每秒系統換出的交換頁面數量
 

七、sar使用實例


【1】查看某一時間段的情況


<1>查看凌晨1點到3點的cpu
sar -s 01:00:00 -e 03:00:00

這里寫圖片描述


<2>查看凌晨1點到3點的系統的平均負載

若要看某時間段其他性能,加上對應選項


sar -s 01:00:00 -e 03:00:00 -q

這里寫圖片描述

<3>查看本月3號的cpu


注意:
該操作需要去查看sar的日志(第五節已經介紹一次)
默認只保存一個月的
sar查看性能或其日志時,注意自己的使用的是12還是24小時制
日志的切割是昨天晚上12點到今天12點為一天


cd /var/log/sa/
sar -f sa03

這里寫圖片描述

這里寫圖片描述


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM