《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 通信與網(wǎng)絡(luò) > 設(shè)計應(yīng)用 > 如何在Linux中監(jiān)視IO系統(tǒng)性能
如何在Linux中監(jiān)視IO系統(tǒng)性能
it168網(wǎng)站
摘要: 如何在Linux中監(jiān)視IO系統(tǒng)性能,dd其實是工作于比較低層的一個數(shù)據(jù)拷貝和轉(zhuǎn)換的*nix平臺的工具,但是因為dd命令支持*nix平臺的一些特殊設(shè)備,因此我們可以利用dd命令的這個特性來簡單的測試磁盤的性能。dd命令先說一下兩個相關(guān)的特殊設(shè)備/dev
Abstract:
Key words :

dd其實是工作于比較低層的一個數(shù)據(jù)拷貝和轉(zhuǎn)換的*nix平臺的工具,但是因為dd命令支持*nix平臺的一些特殊設(shè)備,因此我們可以利用dd命令的這個特性來簡單的測試磁盤的性能" title="性能">性能。

dd命令

先說一下兩個相關(guān)的特殊設(shè)備

  /dev/null

空設(shè)備,通常用作輸出設(shè)備,這個是*nix系統(tǒng)" title="系統(tǒng)">系統(tǒng)上面的黑洞,所有送到這個空設(shè)備上的內(nèi)容都會憑空消失。

  /dev/zero

空字符,通常用作輸入,從/dev/zero中讀取時,它能源源不斷的提供空字符(ASCII NUL, 0×00)出來,要多少有多少。

于是就有了下面的用法:

測試磁盤的寫入:/usr/bin/time dd if=/dev/zero of=/tmp/foo bs=4k count=1024000

這個命令時往磁盤的文件/tmp/foo中寫入一個4G大小的文件,當然文件的內(nèi)容全部是空字符了,同時用/usr/bin/time來對命令的執(zhí)行進行計時,命令中的bs指的是寫入文件時的塊大小,其實就相當于Oracle中的block大小了,count是寫入的塊數(shù)。采取這種方法來寫入數(shù)據(jù)時只是測試的連續(xù)讀磁盤的性能,而不是隨機讀的性能,不能采取這種方法檢查一個機器的IO" title="IO">IOPS的,只能檢查磁盤的吞吐率。

測試磁盤的讀?。?usr/bin/time dd if=/tmp/foo of=/dev/null bs=4k

上面的命令是從/tmp/foo文件中讀取數(shù)據(jù),然后扔掉,這里bs用的是讀取時塊的大小。和上面寫入的命令一樣,這樣測試的僅僅是最大的讀取性能,而不是隨機IO的性能。

還能讀寫同時測試:/usr/bin/time dd if=/tmp/foo of=/tmp/foo2 bs=4k

在上面的命令中都用到了time命令對操作進行計時,這樣才能正確的進行判斷。要記住的一點是dd命令只能夠提供一個大概的測試,通過這個簡單的命令可以對磁盤系統(tǒng)的最大性能有一個大概的了解,要了解更詳細的信息還要通過其他方法來查看。

理解iostat的各項輸出

Linux" title="Linux">Linux中,我們執(zhí)行一個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

我們先列舉一下各個性能指標的簡單說明。

  rrqm/s:每秒進行merge的讀操作數(shù)目。
  wrqm/s:每秒進行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隊列長度。
  await:平均每次設(shè)備I/O操作的等待時間(毫秒)。
  svctm:平均每次設(shè)備I/O操作的服務(wù)時間(毫秒)。
  %util:一秒中有百分之多少的時間用于I/O操作,或者說一秒中有多少時間I/O隊列是非空的。


 

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。