前言
有的時候趟济,我們要通過對系統的cpu負載等性能數值的查看稼虎,來判排查系統產生某種故障(經常死機或者運行速度突然變慢)的原因庐杨。但是选调,簡單的top,uptime,w等命令只可以查看當前的負載辑莫,而無法查看過去的某一時間段的cpu的負載情況学歧。
下面就介紹一個用于性能分析的命令罩引,其可以用于查看過去的某一時間段的cpu的負載情況(系統性能)各吨。
查看某一時間段的cpu使用情況,請直接跳到第七節(jié)袁铐。
一揭蜒、sar概念
sysstat是Linux 系統中的常用工具包,而sar 是 Linux中sysstat工具包中的用于監(jiān)控Linux系統性能的工具之一剔桨。
sysstat 工具包中包含兩種類型的工具:即時查看工具(iostat屉更、mpstat、sar)洒缀;累計統計工具(sar)
因此sar命令瑰谜,又叫做系統活動情況報告。不僅可以實時查看服務器的性能树绩,還可以做累計統計萨脑。
二、sar可監(jiān)控的范圍
文件的讀寫情況
系統調用的使用情況
磁盤I/O使用情況
CPU的使用統計
內存使用狀況
進程活動
IPC有關的活動
三饺饭、sar命令使用環(huán)境
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 :收集系統的動態(tài)數據的數據并寫入一個二進制的文件中积瞒,其作為 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/sa15Linux3.10.0-327.el7.x86_64(ops-node7)07/15/2018_x86_64_(24CPU)12:00:01AMCPU%user%nice%system%iowait%steal%idle12:10:01AMall1.350.000.850.120.0097.6712:20:01AMall1.320.000.860.110.0097.7112:30:02AMall1.370.000.870.110.0097.6512:40:01AMall1.320.000.910.110.0097.6612:50:01AMall1.350.000.890.110.0097.6501:00:01AMall1.360.000.870.110.0097.6601:10:01AMall1.360.000.850.110.0097.6801:20:01AMall1.350.000.890.100.0097.6601:30:01AMall1.320.000.890.110.0097.6801:40:01AMall1.290.000.950.110.0097.6501:50:01AMall1.350.000.880.120.0097.6402:00:01AMall1.340.000.880.110.0097.6802:10:01AMall1.330.000.900.110.0097.6502:20:01AMall1.360.000.870.120.0097.6502:30:01AMall1.350.000.850.120.0097.6802:40:01AMall1.410.000.920.120.0097.5602:50:01AMall1.570.000.950.130.0097.3503:00:01AMall4.210.000.810.160.0094.8103:10:01AMall2.500.000.870.130.0096.5003:20:01AMall1.370.000.870.120.0097.6503:30:01AMall1.360.000.950.130.0097.5603:40:01AMall1.480.000.970.240.0097.3003:50:01AMall1.350.010.910.130.0097.6004:00:01AMall1.390.000.950.190.0097.4704:10:01AMall1.360.000.990.130.0097.52
注意:
sar查看性能或其日志時揩瞪,使用的12/24小時制;日志的切割是昨天晚上12點到今天12點為一天篓冲;默認只保留一個月的日志
六李破、sar命令參數及輸出項詳解
【1】格式
用法:sar + 選項 + 時間間隔(可選) + 次數 (可選)
interval: 取樣周期,單位是秒count:取樣次數壹将,默認值為1options:命令行選項
【2】常用選項
-A? ? ? ? ? 所有報告的總和-B? ? ? ? ? 輸出內存頁面的統計信息-b? ? ? ? ? 輸出I/O和傳送速率的統計信息-C? ? ? ? ? 輸出進程統計信息及每秒創(chuàng)建的進程數-d? ? ? ? ? 輸出每一個塊設備的活動信息-H? ? ? ? ? 輸出交換空間利用率信息-h? ? ? ? ? 輸出幫助信息-p? ? ? ? ? 輸出友好設備名字嗤攻,以方便查看,常與-d和-n參數結合使用-q? ? ? ? ? 輸出進程隊列長度和系統平均負載狀態(tài)統計信息-R? ? ? ? ? 輸出內存頁面的統計信息-r? ? ? ? ? 輸出內存和交換空間的統計信息-S? ? ? ? ? 輸出交換空間利用率信息-t? ? ? ? ? 讀取 /var/log/sa/下的某日志的數據時顯示其中記錄的原始時間-u? ? ? ? ? 輸出整體CPU使用情況的統計信息-V? ? ? ? ? 輸出版本信息-v? ? ? ? ? 輸出內核表狀況統計信息(inode诽俯、文件和其他內核表的統計信息)-W? ? ? ? ? 輸出系統交換的統計信息-w? ? ? ? ? 輸出任務創(chuàng)建與系統轉換統計信息-y? ? ? ? ? 輸出終端設備的活動信息-----------I? ? ? ? ? 輸出指定中斷的統計信息妇菱,后方可加參數{...|SUM|ALL|XALL}? ...? ? ? ? ? 指定中斷號SUM? ? ? ? ? 指定輸出每秒接收到的中斷總數ALL? ? ? ? ? 指定輸出前16個中斷XALL? ? ? ? 指定輸出全部的中斷信息-----------P? ? ? ? ? 輸出指定的部分的CPU的統計信息,后方可加參數{cpu|ALL}cpu? ? ? ? ? 指定cpuALL? ? ? ? ? 輸出單個和整體cpu的統計數據-----------n? ? ? ? ? 輸出網絡設備(網卡)狀態(tài)統計信息,后方可加參數{DEV|EDEV|NFS|NFSD|SOCK|ALL}? ? DEV? ? ? ? ? 輸出網絡設備的統計信息EDEV? ? ? ? 輸出網絡設備的錯誤統計信息NFS? ? ? ? ? 輸出NFS客戶端的活動統計信息NFSD? ? ? ? 輸出NFS服務器的活動統計信息SOCK? ? ? ? 輸出網絡套接字的使用統計信息ALL? ? ? ? ? 輸出所有類型的網絡活動統計信息-----------f? ? ? ? ? 從文件中讀取數據信息暴区。一般讀取sar日志闯团,也可讀取-o選項生成的文件,后方要加文件名-o? ? ? ? ? 將sar的輸出信息保存到文件中仙粱,后方要加文件名-i? ? ? ? ? 指定間隔時長房交,單位為秒-s? ? ? ? ? 指定輸出統計數據的起始時間(格式為hh:mm:ss;例如01:00:00)? -e? ? ? ? ? 指定輸出統計數據的截至時間伐割,通常與-S選項連用候味。無數值時默認為18:00:00(格式為hh:mm:ss;例如09:00:00)
【3】輸出項
<1>cpu的輸出
sar -u
%usr? ? ? ? ? ? ? CPU在用戶模式下隔心,執(zhí)行進程的時間百分比 %nice? ? ? ? ? ? ? CPU在用戶模式下白群,用于nice操作,所占用CPU總時間的百分比 %system? ? ? ? ? ? CPU處在系統模式(內核態(tài))下济炎,執(zhí)行進程的時間百分比 %iowait? ? ? ? ? ? CPU用于等待I/O操作完成(等待輸入輸出完成),占用CPU總時間的百分比 %steal? ? ? ? ? ? 管理程序為另一個虛擬進程提供服務而等待虛擬CPU的百分比%idle? ? ? ? ? ? ? CPU空閑時間百分比
注意:
如果%iowait的值過高川抡,表示硬盤存在I/O瓶頸 如果%idle值高,表示CPU較空閑如果%idle 的值高但系統響應慢時,有可能是 CPU 等待分配內存崖堤,此時應加大內存容量 如果%idle 的值持續(xù)低于10侍咱,則系統的 CPU 處理能力相對較低,表明系統中最需要解決的資源是 CPU
<2>I/O和傳送速率輸出
sar -b
tps? ? ? ? ? ? ? ? 每秒向磁盤設備請求數據的次數密幔,包括讀楔脯、寫請求,其為rtps與wtps的和胯甩。每一次IO下發(fā)后會先將多個請求合并為一個I/O磁盤請求昧廷,這里tps指請求合并后的請求計數rtps? ? ? ? ? ? ? 每秒向磁盤設備的讀請求次數 wtps? ? ? ? ? ? ? 每秒向磁盤設備的寫請求次數 bread/s? ? ? ? ? ? 每秒鐘從物理設備讀入的數據量,單位為 塊/s bwrtn/s? ? ? ? ? ? 每秒鐘向物理設備寫入的數據量偎箫,單位為 塊/s
<3>設備使用情況輸出
sar -d
DEV? ? ? ? ? ? ? ? 磁盤設備木柬,加上用參數-p可以打印出sda等磁盤設備名稱;如不加參數-p,設備則顯示為dev253-0等tps? ? ? ? ? ? ? ? 每秒向磁盤設備請求數據的次數淹办,包括讀眉枕、寫請求,其為rtps與wtps的和怜森。每一次IO下發(fā)后會先將多個請求合并為一個I/O磁盤請求速挑,這里tps指請求合并后的請求計數rd_sec/s? ? ? ? ? 每秒讀扇區(qū)的次數wr_sec/s? ? ? ? ? 每秒寫扇區(qū)的次數avgrq-sz? ? ? ? ? 平均每次設備I/O操作的數據大小(扇區(qū))avgqu-sz? ? ? ? ? 磁盤請求隊列的平均長度await? ? ? ? ? ? ? 從請求磁盤到系統處理完,每次請求的平均消耗時間,包括請求隊列等待時間(單位是毫秒)svctm? ? ? ? ? ? ? 系統處理每次請求的平均時間,不包括在請求隊列中消耗的時間%util? ? ? ? ? ? ? I/O請求占CPU的百分比
<4>網絡設備統計信息輸出
sar -n EDEV
IFACE? ? ? ? ? ? ? 網絡設備名rxpck/s? ? ? ? ? ? 每秒接收的包數量txpck/s? ? ? ? ? ? 每秒傳輸的包數量rxbyt/s? ? ? ? ? ? 每秒接收的字節(jié)數(單位為byte)txbyt/s? ? ? ? ? ? 每秒傳輸的字節(jié)數(單位為byte)rxkB/s? ? ? ? ? ? 每秒收的數據量(單位為kB)txkB/s? ? ? ? ? ? 每秒發(fā)的數據量(單位為kB)rxcmp/s? ? ? ? ? ? 每秒接收壓縮包的數量txcmp/s? ? ? ? ? ? 每秒傳輸壓縮包的數量rxmcst/s? ? ? ? ? 每秒接收的多播(multicast)包的總數排查網絡設備故障
<5>網絡設備故障信息輸出
EDEV |egrep ‘eth0|IFACE’ (本次指定了網卡etho0,可填入其他網卡)
IFACE網絡設備名rxerr/s每秒接收的壞包數量txerr/s傳輸包時每秒發(fā)生錯誤的數量coll/s傳輸包時每秒發(fā)生沖突的數量rxdrop/s接收包時,每秒丟棄的包的數量(缺乏緩存導致)txdrop/s傳輸包時副硅,每秒丟棄的包的數量(缺乏緩存導致)txcarr/s傳輸包時姥宝,每秒發(fā)生的傳輸錯誤的數量rxfram/s接收包時,每秒發(fā)生幀校驗錯誤的數量rxfifo/s接收包時恐疲,每秒鐘緩沖區(qū)溢出錯誤的數量txfifo/s傳輸包時腊满,每秒鐘緩沖區(qū)溢出錯誤的數量
<6>內存分頁狀態(tài)輸出
sar -B
pgpgin/s每秒從磁盤空間或交換空間置換到內存的字節(jié)數(單位為KB)pgpgout/s每秒從內存置換到磁盤空間或交換空間的字節(jié)數(單位為KB)fault/s每秒鐘系統產生的缺頁數(主缺頁加次缺頁)majflt/s每秒鐘產生的主缺頁數pgfree/s每秒被放入空閑隊列中的頁個數pgscank/s每秒被kswapd掃描的頁個數pgscand/s每秒直接被掃描的頁個數pgsteal/s每秒鐘從cache中被清除來滿足內存需要的頁個數%vmeff每秒清除的頁占總掃描頁的百分比
<7>進程隊列長度和平均負載狀態(tài)輸出
sar -q
runq-sz? ? ? ? ? 運行隊列的長度,等待運行的進程數量
plist-sz? ? ? ? 進程列表中進程和線程的數量
ldavg-1? ? ? ? ? 最后1分鐘的系統平均負載
ldavg-5? ? ? ? ? 過去5分鐘的系統平均負載
ldavg-15? ? ? ? 過去15分鐘的系統平均負載
<8>內存和交換空間狀態(tài)輸出
sar -r
kbmemfree空閑的內存數量(單位為KB)kbmemused已使用的內存數量,不包含內核使用的內存(單位為KB)%memused已使用內存的百分數kbbuffers內核緩沖區(qū)buffer,使用的內存數量(單位為KB)kbcached內核高速緩存cache數據使用的內存數量(單位為KB)kbcommit保證當前系統所需要的內存,即為了確保不溢出而需要的內存(RAM+swap)%commitkbcommit與所有內存總量的百分比
<9>系統交換活動信息輸出
sar -W
pswpin/s? ? ? ? ? 每秒系統換入的交換頁面數量
pswpout/s? ? ? ? ? 每秒系統換出的交換頁面數量
七流纹、sar使用實例-查看某一時間段的情況
<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的日志(第五節(jié)已經介紹一次)
默認只保存一個月的
sar查看性能或其日志時违诗,注意自己的使用的是12還是24小時制
日志的切割是昨天晚上12點到今天12點為一天
cd/var/log/sa/sar -f sa03