Saturday, November 25, 2006

Processing vxstat to read into R

I got bored with my iostat data, and found some interesting looking vxstat logs to browse with the Cockcroft Headroom Plot. To get them into a regular format I wrote a short Awk script that is shown below. It skips the first record, adds a custom header and drops the time field into the first column.


# process vxstat file into regular csv format
BEGIN { skipping=1; printf("time,vol,reads,writes,breads,bwrites,tread,twrite\n"); }
NR < 4 {next} # skip header
NF > 0 && skipping==1 {next} # skip first record of totals since boot
NF == 0 {skipping=0}
NF == 5 {time=$0}
NF == 8 {printf("%s,%s,%s,%s,%s,%s,%s,%s\n",time,$2,$3,$4,$5,$6,$7,$8);}


It turns a file that looks like this:

OPERATIONS BLOCKS AVG TIME(ms)
TYP NAME READ WRITE READ WRITE READ WRITE

Mon May 01 19:00:01 2000
vol home 88159 346799 17990732 3680604 13.7 15.6
vol local 64308 103869 3848746 410899 6.0 22.0
vol orahome 80240 208372 18931823 886870 11.9 21.1
vol rootvol 336544 537741 21325442 8566302 4.8 323.1
vol swapvol 32857 339 4199304 58160 13.8 22.5
vol usr 396221 174834 11766646 2872832 3.5 547.6
vol var 316340 1688518 25138480 19275428 11.1 53.7

Mon May 01 19:00:31 2000
vol home 1 28 4 129 10.0 34.3
vol local 0 2 0 8 0.0 330.0
vol orahome 4 20 24 88 10.0 84.0
vol rootvol 0 80 0 720 0.0 9.4
vol swapvol 0 0 0 0 0.0 0.0
vol usr 0 1 0 16 0.0 20.0
vol var 4 235 54 2498 15.0 13.7

... and so on


into

% awk -f vx.awk < vxstat.out
time,vol,reads,writes,breads,bwrites,tread,twrite
Mon May 01 19:00:31 2000,home,1,28,4,129,10.0,34.3
Mon May 01 19:00:31 2000,local,0,2,0,8,0.0,330.0
Mon May 01 19:00:31 2000,orahome,4,20,24,88,10.0,84.0
Mon May 01 19:00:31 2000,rootvol,0,80,0,720,0.0,9.4
Mon May 01 19:00:31 2000,swapvol,0,0,0,0,0.0,0.0
Mon May 01 19:00:31 2000,usr,0,1,0,16,0.0,20.0
Mon May 01 19:00:31 2000,var,4,235,54,2498,15.0,13.7
... and so on


This can easily be read into R and plotted using


> vx <- read.csv("~/vxstat.csv", header=T)
> vxhome <- vx[vx$vol=="home",]
> chp(vxhome$reads,vxhome$treads)


One of the files I tried was quite long, half a million lines. It loaded into R in fifteen seconds, and the subsequent analysis operations didn't take too long. Try that with a spreadsheet... :-)

1 comment:

  1. 活得真累,有些时候我们会禁不住的这样感叹,那些不顺心的日子,我们也总感觉活 wow gold 得真烦。在寻找了千百种理由之后,当我蓦然回首曾经走过的那些岁月,我惊然的发现,其实生活赐予我的,并没 wow power leveling 有与别人有什么的不同,呈现在我视野里的生活,每个人其实都一样,不同的仅仅是我们的胸襟中缺少一份“坦然”。   当看见那些假日的钓鱼者,一大早的出门,在夕阳下却拎着空空的鱼篓回家时,一路上却留下欢声笑语。

      当看见那些早出晚归的农民,在晚霞的辉映下回家时,那张写满疲倦的脸上 wow gold 却洋溢着朝霞一样的笑容。

      当看见那些恋人在分手时,虽然脸上带着一份无奈的笑容,眼里带着一份淡淡的忧伤,但却依然潇洒的挥挥手,互道一声珍重时,不禁内心会这样的感叹,坦然真好!

      突然想起来这样的一句话“天空留不下我的痕迹,但我已飞过”其 wow power leveling 实,这不就是对坦然最好的诠释。

      如果失败是一种人生经历,那么这种经历却会使我们成熟,如果说一个人的成熟必须历尽沧桑的话,那么我想,沧桑就是一种美丽。

      我坦然,于是我心美丽!我心 replica rolex 美丽,于是人生跟着美丽。

      坦然,是一种失意后的乐观!坦然,是沮丧时自我的一种调整。

      坦然,其实就是平淡中的一份自信!坦然 wow power level 是一份快乐!是一种潇洒!

      在人生中,许多的成败与得失,并不是我们都能预料到的,很多的事情也并不是我们都能够承担得起的,但,只要我们努力去做,求得一份付出后的坦然,其实得到的也是一种快乐!

      生活里许多的人,我们是捉摸不定的,甚至 power leveling 防不胜防。但,我们不必去计较,更不必去埋怨,我们唯一做的是,当我们必须去面对他们的时候,同样的奉上我们的真心。以君子之心度小人之怀,那不正显示我们的博大的胸襟吗?

      我曾经爱过也哭过,曾经功成名就过,也 rolex replica 曾失败没落过。但,当我回首这一切的时候,我仍然感到骄傲,因为:我曾勇敢地面对了这一切,且光明而磊落!

      假如生活给我们的只是一次又 lotro gold 一次的挫折,一次又一次的失败,其实,这也没什么的,因为那只是命运剥夺了我们活的高贵的权利,但并没有夺走我们活的快乐和自由的权利。

      没有蓝天的蔚蓝,我们 rolex 可以有白云的飘逸。

      没有大海的壮阔,我们可以有小溪的悠然。

      没有草原的芬芳,我们可以 power leveling 有小草的青翠。

      因为生活里是没有旁观者的,每个人都有一个属于自己的位置,每个人也都能找到一种属于自己的精彩。

      坦然,会让我们的生 rs gold 活美丽而快乐!
      朋友,就让我们的胸襟中盈盈感情坦然吧!

    ReplyDelete