iotop не показывает статистику чтения с диска - PullRequest
0 голосов
/ 01 марта 2019

Я запускаю тест для проверки статистики чтения с диска.Вот код для того же:

#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>

int main(int argc, char* argv)
{
int count=1000, size;
char block[4096]="0";
int fd = open("file1.txt",O_RDONLY | O_SYNC);
//int pid = getpid();
system("pid=$(ps -a | grep 'a.out' | awk '{print $1}'); iotop -bokp $pid > test1c.out &");
system("echo 'Starts reading in 10'");
srand(time(NULL));
system("sleep 1");
    while(count--){
      int random = (rand()%16)*666;
      printf("%d;",random);
      lseek(fd, random, SEEK_SET);
      size = read(fd,block,4096);
      printf("Number of bytes read: %d\n", size);
      fsync(fd);
      //printf("Read 4kb from the file.\n");
    }
system("sleep 1");
system("killall iotop");
}

Как видите, я открываю большой файл, получаю PID моего файла a.out и передаю его в iotop.После этого я в произвольном порядке ищу блок размером 4 КБ в файле и считываю данные.

Если вы запустите этот код в своей системе, вы поймете, что вывод iotop показывает чтение по 0 КБ, что не имеет смысла.Я что-то не так делаю?

1 Ответ

0 голосов
/ 01 марта 2019

Очистка кешей решила проблему.Я нашел скрипт для очистки кешей на этой странице:

https://www.tecmint.com/clear-ram-memory-cache-buffer-and-swap-space-on-linux/

sync; echo 1 > /proc/sys/vm/drop_caches

sync; echo 2 > /proc/sys/vm/drop_caches

sync; echo 3 > /proc/sys/vm/drop_caches

Трюк!

...