/proc/stat 에 있는 disk_io 에 대한 값...에 대한 질문....

anna의 이미지

저는 현재 /proc 아래에 있는 값들을 읽어서..

traffic 을 표시해주려고 합니다.

현재 disk io 에 대해서는 cat /proc/stat 에 있는 값중..

disk_io:(8,1):(111,111,111,111,111) ....에 있는값을..참조로 하고 있습니다.
문제는 여기서인데요....(위의 /proc/stat 에 있는 값은 각각(major,minor):(noinfo, read_io_ops, blks_read, write_io_ops, blks_written) 의 값을 가르킵니다.)

제가 원하는것은 blks_read, blks_written 인데요...
이를 표현해주는 형식 지정자는 %u (unsigned integer)입니다. (/usr/src/linux/fs/proc/proc_misc.c 에 명시되어있습니다.)

그렇다면 %u 가 4294967295 라는 숫자까지 밖에 지원이 안되는데요.
만약에 계속 disk io 가 일어나서 그 수가 넘게 되면 어떻게 됩니까?

지금 계속 io 을 읽으켜서 값을 증가시키고는 있는데요..좀 오래걸리네요..
이틀정도 했는데 이제 겨우 1234567890 정도이거든요...6일을 더 하려다가
혹시 아시는 분이 계실까 해서..^^

물론 /proc/stat 에 값은 rebooting 하면 처음부터 되돌아갑니다.
저는 reboot 하지 않고 계속 살아있을 때의 현상에 대해서 궁금합니다. ^^
더 솔직히 말하면 계속 값이 증가되면 제가 짠 프로그램에서 읽어올수가 없거든요...
지금 long long int 형을 쓰고 있는데 계속 증가되면 이 값을 어떻게 가지고 오나..걱정이 되서요..

yaang_kr의 이미지

걱정 안하셔도 될것 같습니다.
테스트는 안해보았지만, 당연히 다시 초기화 됩니다.

걱정되신다면 iostat를 확인해보십시요.
iostat는 unsigned int로 계산합니다.

리눅스 iostat는 sar와 같이 포함되있습니다.

브이 V