Настройка и работа в Linux
adb5321d

Сравнительный анализ файловых систем


Для тестирования я использовал Pentium III - 16 Mb RAM - 2 Gb HD c установленным Linux RedHat 6.2.
Все файловые системы работали без проблем, поэтому я затеял небольшой сравнительный анализ производительности файловых систем. В качестве первого теста, я имитировал сбой, просто выключив компьютер, чтобы проконтролировать процесс восстановления журнала. Все файловые системы прошли это испытание на ура, и во всех трех случаях машина была в норме уже через несколько секунд.

Следующим шагом в анализе было использование программы bonnie++ с http://www.coker.com.au/bonnie++/. Эта программа проводит тестирование в стиле работы с базами данных применительно к какому-то одному файлу. Тестируется создание, чтение и удаление небольших файлов, что может имитировать работу таких программ, как Squid, INN, или ПО, работающего с форматом Maildir (qmail).
Команда для тестирования была следующей: bonnie++ -d/work1 -s10 -r4 -u0 что запускало тестирование с использованием 10 Мб (-s10) дискового пространства на файловой системе, смонтированной в каталог /work1. Таким образом, перед запуском теста, вы обязаны создать необходимую файловую систему и смонтировать ее в каталог /work1. Остальные опции отвечают за размер оперативной памяти в Мб (-r4) и за имя пользователя (-u0, то есть root). Результаты демонстрируются в следующей таблице.



Sequential Output Sequential Input Random
Seeks
Size:Chunk Size Per Char Block Rewrite Per Char Block
K/sec % CPU K/sec % CPU K/sec % CPU K/sec % CPU K/sec % CPU / sec % CPU
ext2 10M 1471 97 14813 67 1309 14 1506 94 4889 15 309.8 10
ext3 10M 1366 98 2361 38 1824 22 1482 94 4935 14 317.8 10
xfs 10M 1206 94 9512 77 1351 33 1299 98 4779 80 229.1 11
reiserfs 10M 1455 99 4253 31 2340 26 1477 93 5593 26 174.3 5

Sequential Create Random Create
Num Files Create Read Delete Create Read Delete
/ sec % CPU / sec % CPU / sec % CPU / sec % CPU / sec % CPU / sec % CPU
ext2 16 94 99 278 99 492 97 95 99 284 100 93 41
ext3 16 89 98 274 100 458 96 93 99 288 99 97 45
xfs 16 92 99 251 96 436 98 91 99 311 99 90 41
reiserfs 16 1307 100 8963 100 1914 99 1245 99 9316 100 1725 100
<
Два типа данных приводятся для каждого теста: скорость файловой системы (в Кб/сек) и загрузка процессора (в %). Чем выше скорость, тем лучше файловая система. Что касается загрузки процессора - то там все наоборот.
Как видно из таблицы, ReiserFS является чемпионом в управлении файлами (раздел Sequential Create и Random Create), превосходя своих конкурентов больше чем в 10 раз. Также, ReiserFS практически не уступает другим файловым системам в категориях Sequential Output и Sequential Input.

Что касается остальных файловых систем, то в их результатах разницы практически нет. Скорость XFS близка к скорости ext2, а ext3, как и ожидалось, немного медленнее ext2 (по сути это одно и то же, только ext3 тратит еще немного времени на обращение к журналу).

В качестве последнего испытания я использовал программу mongo, обнаруженную на странице тестов reiserFS на http://www.namesys.com/. Я немного поправил исходники для использования программы с тремя файловыми системами. Я вставил в перловый скрипт mongo.pl команды для монтирования и форматирования файловых систем xfs и ext3. Потом я запустил программу тестирования.
Скрипт форматирует раздел /dev/xxxx, монтирует его и запускает заданное число процессов во время каждого этапа. Этапы были следующими: Create, Copy, Symlinks, Read, Stats, Rename и Delete. Также программа определяет степень фрагментации после этапов Create и Copy. Fragm = число_фрагментов / число_файлов С результатами можно ознакомиться и в каталоге results в файлах: log - результаты, представленные в неформатированном виде. log.tbl - результаты для программы, осуществляющей сравнение. log_table - результаты в виде таблицы. Тестирование происходило таким образом: mongo.pl ext3 /dev/hda3 /work1 logext3 1

где ext3 нужно заменить на reiserfs или xfs для тестирования других файловых систем. Остальные аргументы - это имя монтируемого устройства, где находится тестируемая файловая система, каталог, в который файловая система монтируется, имя файла, куда направляются результаты, и количество запускаемых процессов.

В следующих таблицах представлены результаты моего анализа. Представленные данные - это время (в сек). Чем меньше значение, тем лучше файловая система. В первой таблице используются файлы со средним размером 100 байтов, во второй - 1000 байтов, а в третьей - 10000 байтов.
ext3
files=68952
size=100 bytes
dirs=242
XFS
files=68952
size=100 bytes
dirs=241
reiserFS
files=68952
size=100 bytes
dirs=241
Create 90.07 267.86 53.05
Fragm. 1.32 1.02 1.00
Copy 239.02 744.51 126.97
Fragm. 1.32 1.03 1.80
Slinks 0 203.54 105.71
Read 782.75 1543.93 562.53
Stats 108.65 262.25 225.32
Rename 67.26 205.18 70.72
Delete 23.80 389.79 85.51
<


ext3
files=11248
size=1000 bytes
dirs=44
XFS
files=11616
size=1000 bytes
dirs=43
ReiserFS
files=11616
size=1000 bytes
dirs=43
Create 30.68 57.94 36.38
Fragm. 1.38 1.01 1.03
Copy 75.21 149.49 84.02
Fragm. 1.38 1.01 1.43
Slinks 16.68 29.59 19.29
Read 225.74 348.99 409.45
Stats 25.60 46.41 89.23
Rename 16.11 33.57 20.69
Delete 6.04 64.90 18.21
ext3
files=2274
size=10000 bytes
dirs=32
XFS
files=2292
size=10000 bytes
dirs=31
reiserFS
files=2292
size=10000 bytes
dirs=31
Create 27.13 25.99 22.27
Fragm. 1.44 1.02 1.05
Copy 55.27 55.73 43.24
Fragm. 1.44 1.02 1.12
Slinks 1.33 2.51 1.43
Read 40.51 50.20 56.34
Stats 2.34 1.99 3.52
Rename 0.99 1.10 1.25
Delete 3.40 8.99 1.84
Цифры говорят о том, что ext3 обычно быстрее на этапах Stats, Delete и Rename, в то время как reiserFS сильнее в Create и Copy. Также обратите внимание на то, что reiserFS проявляет свои лучшие качества в случае с маленькими файлами, что и подчеркивается в документации по reiserfs.


Содержание раздела