如何在Linux中監(jiān)視IO系統(tǒng)性能
dd其實(shí)是工作于比較低層的一個(gè)數(shù)據(jù)拷貝和轉(zhuǎn)換的*nix平臺(tái)的工具,但是因?yàn)閐d命令支持*nix平臺(tái)的一些特殊設(shè)備,因此我們可以利用dd命令的這個(gè)特性來簡(jiǎn)單的測(cè)試磁盤的性能。
本文引用地址:http://www.ex-cimer.com/article/150908.htmdd命令
先說一下兩個(gè)相關(guān)的特殊設(shè)備
/dev/null
空設(shè)備,通常用作輸出設(shè)備,這個(gè)是*nix系統(tǒng)上面的黑洞,所有送到這個(gè)空設(shè)備上的內(nèi)容都會(huì)憑空消失。
/dev/zero
空字符,通常用作輸入,從/dev/zero中讀取時(shí),它能源源不斷的提供空字符(ASCII NUL, 0×00)出來,要多少有多少。
于是就有了下面的用法:
測(cè)試磁盤的寫入:/usr/bin/time dd if=/dev/zero of=/tmp/foo bs=4k count=1024000
這個(gè)命令時(shí)往磁盤的文件/tmp/foo中寫入一個(gè)4G大小的文件,當(dāng)然文件的內(nèi)容全部是空字符了,同時(shí)用/usr/bin/time來對(duì)命令的執(zhí)行進(jìn)行計(jì)時(shí),命令中的bs指的是寫入文件時(shí)的塊大小,其實(shí)就相當(dāng)于Oracle中的block大小了,count是寫入的塊數(shù)。采取這種方法來寫入數(shù)據(jù)時(shí)只是測(cè)試的連續(xù)讀磁盤的性能,而不是隨機(jī)讀的性能,不能采取這種方法檢查一個(gè)機(jī)器的IOPS的,只能檢查磁盤的吞吐率。
測(cè)試磁盤的讀?。?usr/bin/time dd if=/tmp/foo of=/dev/null bs=4k
上面的命令是從/tmp/foo文件中讀取數(shù)據(jù),然后扔掉,這里bs用的是讀取時(shí)塊的大小。和上面寫入的命令一樣,這樣測(cè)試的僅僅是最大的讀取性能,而不是隨機(jī)IO的性能。
還能讀寫同時(shí)測(cè)試:/usr/bin/time dd if=/tmp/foo of=/tmp/foo2 bs=4k
在上面的命令中都用到了time命令對(duì)操作進(jìn)行計(jì)時(shí),這樣才能正確的進(jìn)行判斷。要記住的一點(diǎn)是dd命令只能夠提供一個(gè)大概的測(cè)試,通過這個(gè)簡(jiǎn)單的命令可以對(duì)磁盤系統(tǒng)的最大性能有一個(gè)大概的了解,要了解更詳細(xì)的信息還要通過其他方法來查看。
理解iostat的各項(xiàng)輸出
在Linux中,我們執(zhí)行一個(gè)iostat -x命令,我們能看到如下的輸出
$iostat -x
Linux 2.4.21-50a6smp (linux) 11/03/2009
avg-cpu: %user %nice %sys %iowait %idle
0.42 0.00 0.26 0.47 98.86
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util
hdc 0.01 0.00 0.00 0.00 0.07 0.00 0.03 0.00 24.48 0.00 4.90 4.57 0.00
hda 0.89 8.54 0.74 4.49 12.60 104.22 6.30 52.11 22.32 0.03 5.41 1.01 0.53
我們先列舉一下各個(gè)性能指標(biāo)的簡(jiǎn)單說明。
rrqm/s:每秒進(jìn)行merge的讀操作數(shù)目。
wrqm/s:每秒進(jìn)行merge的寫操作數(shù)目。
r/s:每秒完成的讀I/O設(shè)備次數(shù)。
w/s:每秒完成的寫I/O設(shè)備次數(shù)。
rsec/s:每秒讀扇區(qū)數(shù)。
wsec/s:每秒寫扇區(qū)數(shù)。
rkB/s:每秒讀K字節(jié)數(shù)。
wkB/s:每秒寫K字節(jié)數(shù)。
avgrq-sz:平均每次設(shè)備I/O操作的數(shù)據(jù)大小(扇區(qū))。
avgqu-sz:平均I/O隊(duì)列長(zhǎng)度。
await:平均每次設(shè)備I/O操作的等待時(shí)間(毫秒)。
svctm:平均每次設(shè)備I/O操作的服務(wù)時(shí)間(毫秒)。
%util:一秒中有百分之多少的時(shí)間用于I/O操作,或者說一秒中有多少時(shí)間I/O隊(duì)列是非空的。
評(píng)論