Linux系統下快取使用率檢查指令碼

來源:互聯網
上載者:User

Linux的快取pagecache對效能的影響至關重要,但是實際系統中我們的利用率如何呢,特別是具體到每個裝置的利用情況。

從下圖我們可以很清楚的看到:

我們知道IO請求由vfs發起,經過pagecache緩衝,擋不住的就落實到io裝置去,那麼統計這個利用率就很簡單。 我們只要知道擋不住的IO的比例就好了。

我寫了個systemtap指令碼來解決這個問題:

 代碼如下 複製代碼


$ uname -r
2.6.18-164.el5
 
$ sudo rpm -i kernel-debuginfo-common-2.6.18-164.el5.x86_64.rpm
$ sudo rpm -i kernel-debuginfo-2.6.18-164.el5.x86_64.rpm 

$ cat >pcmr.stp
global io_stat, blk_stat

global RD_CNT=2, WR_CNT=3

probe vfs.read.return {
  if ($return>0 && devname!="N/A") {
      io_stat[devname, 0] += $return
      io_stat[devname, RD_CNT] ++;
  }
}

probe ioblock.request {
  blk_stat[devname, rw] += size
  blk_stat[devname, rw+RD_CNT] ++;
}

probe vfs.write.return {
  if ($return>0 && devname!="N/A") {
      io_stat[devname, 1] += $return
      io_stat[devname, WR_CNT] ++;
  }
}


global _io,_blk

probe timer.ms(5000) {

foreach ([devname, action] in io_stat)
{
        _io[action] += io_stat[devname, action];
        _blk[action] += blk_stat[devname, action]
}

  if (_io[0] + _io[1]) {

    printf("n%-25s, %s%db/%d, %s%db/%d, %s%db/%d, %s%db/%d, %s%d%%nn",
           ctime(gettimeofday_s()),
           "IO Read:", _io[0], _io[RD_CNT],
           "IO Write:", _io[1],_io[WR_CNT],
           "Blk Read:", _blk[0], _blk[RD_CNT],
           "Blk Write:", _blk[1],_blk[WR_CNT],
           "PCMR:", (_blk[0]+_blk[1]) * 100 / (_io[0] + _io[1]))

        delete _io
        delete _blk
   
    /* print header */
    printf("%8s %2s %19s %19s %5sn",
           "DEVICE","T", "IO", "BLK", "PCMR")
  }

  /* print top ten I/O */
  foreach ([devname, action] in io_stat- limit 10)
     if(action < RD_CNT)
        printf("%8s %2s %11db/%6d %11db/%6d %4d%%n",
           devname, action?"W":"R",
           io_stat[devname, action],io_stat[devname, action+RD_CNT],
           blk_stat[devname, action],blk_stat[devname, action+RD_CNT],
           (blk_stat[devname, action] * 100) / io_stat[devname, action]
           )

  /* clear data */
  delete io_stat
  delete blk_stat
}

probe begin
{
println("::");
}

CTRL+D

參數我們來解釋下:
IO Read: vfs層面看到的IO讀/次數
IO Write: vfs層面看到的IO寫/次數
Blk Read: 塊層面看到的IO讀/次數
Blk Write: 塊層面看到的IO寫/次數
PCMR: pagecache miss rate =100 * blk / io, 由於檔案讀寫是以page為單位,所以可能>100%
第一行是匯總統計,每隔5秒列印一次。
總結: PCMR越小越好,說明快取利用率高。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.