/proc/vmstat ファイルを使用したディスク I/O レイテンシ

/proc/vmstat ファイルを使用したディスク I/O レイテンシ

Linuxでディスクの読み取りと書き込みの待ち時間を計算する方法は?

/proc計算にファイルシステムを使用できますか?

私は使用しiostatvmstatコマンドします。ところで、計算がどのように行われるのか理解できませんね。

このコードを計算に使用します。

  #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_awaitw_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取得できますか?読み取り/書き込み待ち時間?

ベストアンサー1

おすすめ記事