Linuxでディスクの読み取りと書き込みの待ち時間を計算する方法は?
/proc
計算にファイルシステムを使用できますか?
私は使用しiostat
てvmstat
コマンドします。ところで、計算がどのように行われるのか理解できませんね。
このコードを計算に使用します。
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <sys/sysinfo.h>
int main(int argc, char * * argv) {
struct sysinfo si;
sysinfo( & si);
const double xdt = 1024;
float pagein, pageout, oldvalin = 0, oldvalout = 0, res;
for (;;) {
FILE * fp = fopen("/proc/vmstat", "r");
char tmp[256];
char subbuff[256];
while (fp != NULL && fgets(tmp, sizeof(tmp), fp) != NULL) {
if (strstr(tmp, "pgpgin")) {
memcpy(subbuff, & tmp[7], 40);
subbuff[40] = '\0';
pagein = atoi(subbuff);
}
if (strstr(tmp, "pgpgout")) {
printf("\n\n%s", tmp);
memcpy(subbuff, & tmp[7], 40);
subbuff[40] = '\0';
pageout = atoi(subbuff);
}
}
printf("Res : %.2f \t %.2f", pagein - oldvalin, pageout - oldvalout);
oldvalin = pagein;
oldvalout = pageout;
if (fp != NULL) fclose(fp);
sleep(1);
}
}
iostat
コマンドでr_await
&w_await
フィールドを検索する方法。iostat -xdctm 1
コマンドを実行すると
この出力を得ました。
Linux 2.6.35.14-106.fc14.i686 (shashi) 08/27/2015 _i686_ (2 CPU)
08/27/2015 05:33:52 PM
avg-cpu: %user %nice %system %iowait %steal %idle
8.75 0.00 2.35 1.10 0.00 87.80
Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await svctm %util
sda 3.76 16.44 2.35 2.33 0.07 0.07 62.70 0.17 35.48 4.78 2.24
dm-0 0.00 0.00 2.04 0.59 0.03 0.00 27.88 0.18 68.13 3.31 0.87
dm-1 0.00 0.00 2.60 4.09 0.01 0.02 8.00 2.38 354.78 0.67 0.45
dm-2 0.00 0.00 1.47 13.63 0.03 0.05 10.99 3.76 249.16 0.85 1.28
少なくともコマンドを使用してどのようにiostat
取得できますか?読み取り/書き込み待ち時間?