- 論壇徽章:
- 0
|
nfsstat輸出的結(jié)構(gòu)如下:
Server nfs v2:
null getattr setattr root lookup readlink
0 0% 0 0% 0 0% 0 0% 0 0% 0 0%
read wrcache write create remove rename
0 0% 0 0% 0 0% 0 0% 0 0% 0 0%
link symlink mkdir rmdir readdir fsstat
0 0% 0 0% 0 0% 0 0% 0 0% 0 0%
Client nfs v3:
null getattr setattr lookup access readlink
0 0% 38042 82% 0 0% 1577 3% 5791 12% 0 0%
read write create mkdir symlink mknod
553 1% 0 0% 0 0% 0 0% 0 0% 0 0%
remove rmdir rename link readdir readdirplus
0 0% 0 0% 0 0% 0 0% 3 0% 0 0%
fsstat fsinfo pathconf commit
59 0% 59 0% 0 0% 0 0%
運行nfsstat每分鐘,并把輸出定向到一個文本文件。
需要提取各種操作的數(shù)量, 和每秒的平均數(shù)。
grep -A9 "Server nfs v3" text-file > new-text-file
awk ‘/\/ {getline; print}’ new-text-file | sed –n ‘1~10p’ | awk ‘ print NR, $1’ | awk ‘{a[$1]=$2} END {for (i=2;i print (a-a[i-1])/600}’
第一,awk搜索需要的關(guān)鍵詞,例如read, write, getattr, 注意還有readdir等, 所以用了正則表達式\來匹配僅僅read這個詞, 匹配后awk會打印匹配的下一行, 而不是當(dāng)前行, 因為我們需要的是IO的具體數(shù)字。
第二,sed用于每10行抽取一行, 這個是因為我使用的log是沒分鐘的記錄一次NFSSTAT,對于一天來說,數(shù)據(jù)太多。沒10行打印一行,一天有144行。
第三,awk,用于從行中抽取數(shù)據(jù), 并在前面加上行號。read對應(yīng)的數(shù)據(jù)在第一列, 所以是打印$1;如果是write,相應(yīng)的$1要換成$3。 NR的作用是在數(shù)據(jù)前面加上行號,這是為了后面一條awk的數(shù)組操作做準(zhǔn)備。
第四,awk,將數(shù)據(jù)按照行號賦值給數(shù)組, 并使用數(shù)組中后一個數(shù)據(jù)減掉前一個數(shù)據(jù), 得到10分鐘時段內(nèi)的總的IO數(shù), 除以600, 得到每秒的IO數(shù)。輸出文件為單列的文本文件。
使用EXCEl很方便的可以處理這個文本文件,可以比較方便的得到每種操作的每秒品均數(shù)。
本文來自ChinaUnix博客,如果查看原文請點:http://blog.chinaunix.net/u/14914/showart_479060.html |
|