鍍金池/ 教程/ Linux/ sar 找出系統(tǒng)瓶頸的利器
進(jìn)程管理工具
objdump 二進(jìn)制文件分析
scp 跨機(jī)遠(yuǎn)程拷貝
crontab 定時(shí)任務(wù)
readelf elf文件格式分析
pstack 跟蹤進(jìn)程棧
系統(tǒng)管理及IPC資源管理
vmstat 監(jiān)視內(nèi)存使用情況
strace 跟蹤進(jìn)程中的系統(tǒng)調(diào)用
sar 找出系統(tǒng)瓶頸的利器
ipcs 查詢進(jìn)程間通信狀態(tài)
ps 進(jìn)程查看器
性能優(yōu)化
wget 文件下載
top linux下的任務(wù)管理器
磁盤管理
size 查看程序內(nèi)存映像大小
free 查詢可用內(nèi)存
文件及目錄管理
iostat 監(jiān)視I/O子系統(tǒng)
性能監(jiān)控
程序構(gòu)建
學(xué)會(huì)使用命令幫助
gdb 調(diào)試?yán)?/span>
網(wǎng)絡(luò)工具
nm 目標(biāo)文件格式分析
lsof 一切皆文件
用戶管理工具
程序調(diào)試
ldd 查看程序依賴庫
文本處理

sar 找出系統(tǒng)瓶頸的利器

sar是System Activity Reporter(系統(tǒng)活動(dòng)情況報(bào)告)的縮寫。sar工具將對(duì)系統(tǒng)當(dāng)前的狀態(tài)進(jìn)行取樣,然后通過計(jì)算數(shù)據(jù)和比例來表達(dá)系統(tǒng)的當(dāng)前運(yùn)行狀態(tài)。它的特點(diǎn)是可以連續(xù)對(duì)系統(tǒng)取樣,獲得大量的取樣數(shù)據(jù);取樣數(shù)據(jù)和分析的結(jié)果都可以存入文件,所需的負(fù)載很小。sar是目前Linux上最為全面的系統(tǒng)性能分析工具之一,可以從14個(gè)大方面對(duì)系統(tǒng)的活動(dòng)進(jìn)行報(bào)告,包括文件的讀寫情況、系統(tǒng)調(diào)用的使用情況、串口、CPU效率、內(nèi)存使用狀況、進(jìn)程活動(dòng)及IPC有關(guān)的活動(dòng)等,使用也是較為復(fù)雜。

sar是查看操作系統(tǒng)報(bào)告指標(biāo)的各種工具中,最為普遍和方便的;它有兩種用法;

  1. 追溯過去的統(tǒng)計(jì)數(shù)據(jù)(默認(rèn))
  2. 周期性的查看當(dāng)前數(shù)據(jù)

追溯過去的統(tǒng)計(jì)數(shù)據(jù)

默認(rèn)情況下,sar從最近的0點(diǎn)0分開始顯示數(shù)據(jù);如果想繼續(xù)查看一天前的報(bào)告;可以查看保存在/var/log/sysstat/下的sa日志; 使用sar工具查看::

$sar -f /var/log/sysstat/sa28 \| head sar -r -f
/var/log/sysstat/sa28

http://wiki.jikexueyuan.com/project/linux-tools/images/1.1.png" alt="" />

查看CPU使用率

sar -u : 默認(rèn)情況下顯示的cpu使用率等信息就是sar -u;

http://wiki.jikexueyuan.com/project/linux-tools/images/1.2.png" alt="" />

可以看到這臺(tái)機(jī)器使用了虛擬化技術(shù),有相應(yīng)的時(shí)間消耗; 各列的指標(biāo)分別是:

  • %user 用戶模式下消耗的CPU時(shí)間的比例;
  • %nice 通過nice改變了進(jìn)程調(diào)度優(yōu)先級(jí)的進(jìn)程,在用戶模式下消耗的CPU時(shí)間的比例
  • %system 系統(tǒng)模式下消耗的CPU時(shí)間的比例;
  • %iowait CPU等待磁盤I/O導(dǎo)致空閑狀態(tài)消耗的時(shí)間比例;
  • %steal 利用Xen等操作系統(tǒng)虛擬化技術(shù),等待其它虛擬CPU計(jì)算占用的時(shí)間比例;
  • %idle CPU空閑時(shí)間比例;

查看平均負(fù)載

sar -q: 查看平均負(fù)載

指定-q后,就能查看運(yùn)行隊(duì)列中的進(jìn)程數(shù)、系統(tǒng)上的進(jìn)程大小、平均負(fù)載等;與其它命令相比,它能查看各項(xiàng)指標(biāo)隨時(shí)間變化的情況;

  • runq-sz:運(yùn)行隊(duì)列的長(zhǎng)度(等待運(yùn)行的進(jìn)程數(shù))
  • plist-sz:進(jìn)程列表中進(jìn)程(processes)和線程(threads)的數(shù)量
  • ldavg-1:最后1分鐘的系統(tǒng)平均負(fù)載 ldavg-5:過去5分鐘的系統(tǒng)平均負(fù)載
  • ldavg-15:過去15分鐘的系統(tǒng)平均負(fù)載

http://wiki.jikexueyuan.com/project/linux-tools/images/1.3.png" alt="" />

查看內(nèi)存使用狀況

sar -r: 指定-r之后,可查看物理內(nèi)存使用狀況;

http://wiki.jikexueyuan.com/project/linux-tools/images/1.4.png" alt="" />

  • kbmemfree:這個(gè)值和free命令中的free值基本一致,所以它不包括buffer和cache的空間.
  • kbmemused:這個(gè)值和free命令中的used值基本一致,所以它包括buffer和cache的空間.
  • %memused:物理內(nèi)存使用率,這個(gè)值是kbmemused和內(nèi)存總量(不包括swap)的一個(gè)百分比.
  • kbbuffers和kbcached:這兩個(gè)值就是free命令中的buffer和cache.
  • kbcommit:保證當(dāng)前系統(tǒng)所需要的內(nèi)存,即為了確保不溢出而需要的內(nèi)存(RAM+swap).
  • %commit:這個(gè)值是kbcommit與內(nèi)存總量(包括swap)的一個(gè)百分比.

查看頁面交換發(fā)生狀況

sar -W:查看頁面交換發(fā)生狀況

頁面發(fā)生交換時(shí),服務(wù)器的吞吐量會(huì)大幅下降;服務(wù)器狀況不良時(shí),如果懷疑因?yàn)閮?nèi)存不足而導(dǎo)致了頁面交換的發(fā)生,可以使用這個(gè)命令來確認(rèn)是否發(fā)生了大量的交換;

http://wiki.jikexueyuan.com/project/linux-tools/images/1.5.png" alt="" />

  • pswpin/s:每秒系統(tǒng)換入的交換頁面(swap page)數(shù)量
  • pswpout/s:每秒系統(tǒng)換出的交換頁面(swap page)數(shù)量

要判斷系統(tǒng)瓶頸問題,有時(shí)需幾個(gè) sar 命令選項(xiàng)結(jié)合起來;

  • 懷疑CPU存在瓶頸,可用 sar -u 和 sar -q 等來查看
  • 懷疑內(nèi)存存在瓶頸,可用sar -B、sar -r 和 sar -W 等來查看
  • 懷疑I/O存在瓶頸,可用 sar -b、sar -u 和 sar -d 等來查看

安裝

  1. 有的linux系統(tǒng)下,默認(rèn)可能沒有安裝這個(gè)包,使用apt-get install sysstat 來安裝;
  2. 安裝完畢,將性能收集工具的開關(guān)打開: vi /etc/default/sysstat 設(shè)置 ENABLED="true"
  3. 啟動(dòng)這個(gè)工具來收集系統(tǒng)性能數(shù)據(jù): /etc/init.d/sysstat start

sar參數(shù)說明

  • -A 匯總所有的報(bào)告
  • -a 報(bào)告文件讀寫使用情況
  • -B 報(bào)告附加的緩存的使用情況
  • -b 報(bào)告緩存的使用情況
  • -c 報(bào)告系統(tǒng)調(diào)用的使用情況
  • -d 報(bào)告磁盤的使用情況
  • -g 報(bào)告串口的使用情況
  • -h 報(bào)告關(guān)于buffer使用的統(tǒng)計(jì)數(shù)據(jù)
  • -m 報(bào)告IPC消息隊(duì)列和信號(hào)量的使用情況
  • -n 報(bào)告命名cache的使用情況
  • -p 報(bào)告調(diào)頁活動(dòng)的使用情況
  • -q 報(bào)告運(yùn)行隊(duì)列和交換隊(duì)列的平均長(zhǎng)度
  • -R 報(bào)告進(jìn)程的活動(dòng)情況
  • -r 報(bào)告沒有使用的內(nèi)存頁面和硬盤塊
  • -u 報(bào)告CPU的利用率
  • -v 報(bào)告進(jìn)程、i節(jié)點(diǎn)、文件和鎖表狀態(tài)
  • -w 報(bào)告系統(tǒng)交換活動(dòng)狀況
  • -y 報(bào)告TTY設(shè)備活動(dòng)狀況