linux高速缓存服务器,Linux高速缓存使用率调查

Linux的高速缓存pagecache对性能的影响至关重要,但是实际系统中我们的利用率如何呢,特别是具体到每个设备的利用情况。

从下图我们可以很清楚的看到:

583e2be8d6396e9bc6f0d5364877bac4.png

我们知道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%%\n\n",

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 %5s\n",

"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

我们来演示下:

$ sudo stap pcmr.stp

::

...

Wed Jun 1 09:16:16 2011 , IO Read:551320328b/124024, IO Write:0b/0, Blk Read:103219200b/17536, Blk Write:0b/0, PCMR:18%

DEVICE T IO BLK PCMR

fioa R 493284566b/119460 103219200b/ 17536 20%

sda2 R 41100816b/ 624 0b/ 0 0%

sda5 R 16934946b/ 3940 0b/ 0 0%

Wed Jun 1 09:16:21 2011 , IO Read:554808170b/123568, IO Write:2295b/9, Blk Read:101883904b/17296, Blk Write:135168b/33, PCMR:18%

DEVICE T IO BLK PCMR

fioa R 491003095b/118908 101543936b/ 17259 20%

sda3 R 42119596b/ 136 0b/ 0 0%

sda5 R 17730097b/ 4061 163840b/ 18 0%

sda1 R 2399374b/ 33 0b/ 0 0%

sda2 R 1543938b/ 424 176128b/ 19 11%

sda6 R 12070b/ 6 0b/ 0 0%

sda3 W 2295b/ 9 135168b/ 33 5889%

...

参数我们来解释下:

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越小越好,说明高速缓存利用率高。

玩得开心!

Post Footer automatically generated by wp-posturl plugin for wordpress.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值