/proc/vmstat 파일을 사용한 디스크 I/O 대기 시간

/proc/vmstat 파일을 사용한 디스크 I/O 대기 시간

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어떻게 얻을 수 있습니까?읽기/쓰기 대기 시간?

관련 정보