Оценка или измерение количества iops для создания файла - PullRequest
1 голос
/ 17 мая 2009

Я хотел бы знать, сколько операций ввода / вывода (iops) требуется для создания пустого файла. Я заинтересован в файловой системе Linux и GFS, однако также приветствуется информация о других файловых системах.

Предложения, как точно измерить это было бы также очень желательно.

Реальный сценарий (запрошенный ответами):

  1. Linux
  2. Файловая система GFS (если вы можете оценить для другого - пожалуйста, сделайте)
  3. создать новый файл в существующей директории, файл не существует, используя следующий код
  4. Предположим, что каталог находится в кеше, а глубина каталога D

Код:

int fd = open("/my_dir/1/2/3/new_file", O_CREAT | S_IRWXU);
// assuming fd is valid
fsync(fd);

Ответы [ 3 ]

1 голос
/ 18 мая 2009

Для искусственного измерения:

  1. Создание пустой файловой системы на собственном блочном устройстве (например, vmware scsi и т. Д.)
  2. Смонтируйте его, вызовите sync (), а затем запишите количество операций ввода-вывода в секунду в этом блоке dev.
  3. Запустите вашу тестовую программу для файловой системы и больше не выполняйте никаких операций (даже "ls").
  4. Подождите, пока не будут сброшены все незагрязненные блоки - скажем, около 1 минуты или около того
  5. Снимок числа iops снова

Конечно, это крайне нереально, потому что если вы создали два файла, а не один, вы, вероятно, обнаружите, что их было в два раза меньше.

Создание пустых или пустых файлов также нереально, так как они не делают ничего полезного.

Структуры каталогов (насколько глубоки каталоги, сколько записей) могут внести вклад, но также насколько они фрагментированы и другие произвольные факторы.

0 голосов
/ 19 мая 2009

Я сделал следующее измерение, мы написали приложение, которое создает N файлов, как описано в вопросе. Мы запустили это приложение на диске, который был посвящен только этому приложению, и измерили количество операций ввода-вывода в секунду, используя iostat -x 1

Результат в GFS и ядре Linux 2.6.18: 2 операций ввода-вывода в секунду при создании файла .

Этот ответ основан на ответе MarkR.

0 голосов
/ 17 мая 2009

Природа ответа на этот вопрос такова; лучший случай, нормальный случай, худший случай. Единого ответа не существует, поскольку количество требуемых операций ввода-вывода в секунду будет зависеть от текущего состояния файловой системы. (Нетронутая файловая система - крайне нереалистичный сценарий).

Взяв FAT32 в качестве примера, наилучший случай равен 1. Нормальный случай зависит от степени фрагментации файловой системы и глубины директории пути для нового файла. В худшем случае неограничен (за исключением размера файловой системы, который накладывает ограничение на максимально возможное количество IOP для создания файла).

Действительно, вопрос не подлежит ответственности, если вы не определите конкретный сценарий файловой системы.

...