Проведем сравнение работы файловых систем XFS и EXT4 в Linux с ZFS в OpenSolaris. Воспользуемся компьютером с процессором Athlon 64 (2200MHz) с 1GB памяти и 8 400GB дисков на Areca ARC-1220 SATA контроллере. Используем Linux 2.6.22.5 и OpenSolaris 5.11 snv_70 "Nevada".
Тестировались внутреннее внешнее устройство журнала и программный и аппаратный RAID. Программный RAID - "raid-10 near2" из 6 дисков на Linux. В Solaris zpool создана с 3 зеркалами каждого из 2 дисков. Аппаратный RAID использует Areca's RAID-10 и в Linux и в Solaris. Кеш устройства отключен, но кеш питания в контроллере работает, когда используется аппаратный RAID. Если использовался внешний журнал, он был на отдельном диске с отключенным кешированием записи. Система устанавливалась на отдельный диск, который не участвовал в тестировании.
XFS и ZFS были созданы со значениями по-умолчанию. EXT4 создана с параметром -b 4096, чтобы размер блока был 4096, когда используется внешний журнал. Все файловые системы монтировались с отключенным atime. EXT4 монтировалась с дополнительными возможностями.
Для тестирования использовались: Bonnie++ 1.03a, randomio 1.3, FFSB 5.2.1, postmark 1.51, dd, tar, and cpio из состава Linux 2.6.22.5. FFSB и randomio были пропатчены для работы в Solaris, и для использования в Solaris эквивалента Linux O_DIRECT. Тест проходил так:
-
bonnie++
-
Копирование ядра Linux на тестируемую файловую систему
-
Распаковка ядра
-
dd if=/dev/zero of=bigfile bs=1048576 count=4096
-
randomio bigfile 10 .25 .01 2048 60 1
-
find linux-2.6.22.5 | cpio -pdm linux
-
tar -cf linux.tar linux
Результаты представлены ниже. EXT4 быстра для операций с метаданными, tar, untar, cpio, и postmark. EXT4 намного быстрее чем другие в FFSB. EXT4 с аппаратным RAID и внешним устройством журналом. Но похоже плохо взаимодействует с программным RAID, возможно из-за невозможности mkfs выяснить структуру RAID при установке параметров файловой системы.
ZFS показала превосходную работу в тестах метаданных. ZFS очень плоха в последовательных передачах с аппаратным RAID и ужасна при последовательной передаче с программным RAID. ZFS может скопировать исходные коды ядра Linux всего за 3 секунды! ZFS равную задержку для запроса чтения и записи в смешанном режиме, что хорошо.
XFS показала хорошую последовательную передачу в Bonnie++. Странно, но XFS показала лучше последовательное чтение при использовании внешнего журнала. noatime не работает на XFS? XFS очень медленная во всех тестах метаданных. XFS получает правильную структуру RAID и это позволяет показать хорошие результаты в randomio с аппаратным и программным RAID.
Похоже контроллер Areca имеет некоторые проблемы с большими запросами. "huge" FFSB производит чтение и запись блоками по 1MiB. Аппаратный RAID показал только половину производительности программного в этом тесте. Чтобы убедиться, что дело не в драйвере Areca для Solaris, я провел последовательную передачу используя dd и скорость стала больше 150MB/s.
bonnie | xfs/ int/ sw | xfs/ ext/ sw | xfs/ int/ hw | xfs/ ext/ hw | ext4/ int/ sw | ext4/ ext/ sw | ext4/ int/ hw | ext4/ ext/ hw | zfs/ int/ sw | zfs/ ext/ sw | zfs/ int/ hw | zfs/ ext/ hw |
---|---|---|---|---|---|---|---|---|---|---|---|---|
read MB/s | 129 | 141 | 202 | 205 | 121 | 120 | 193 | 195 | 53 | 55 | 168 | 166 |
write MB/s | 156 | 155 | 187 | 185 | 162 | 176 | 160 | 156 | 95 | 77 | 80 | 80 |
mixed MB/s | 45 | 46 | 70 | 69 | 53 | 54 | 73 | 71 | 37 | 36 | 54 | 50 |
sequential create /s | 3874 | 1887 | 17307 | 5238 | >99999 | >99999 | 15240 | >99999 | 22975 | >99999 | >99999 | >99999 |
sequential delete /s | 1958 | 2025 | 9946 | 2466 | >99999 | >99999 | >99999 | >99999 | >99999 | >99999 | >99999 | >99999 |
random create /s | 3909 | 2208 | 12599 | 2754 | >99999 | >99999 | 15058 | >99999 | >99999 | 22269 | >99999 | 22067 |
random delete /s | 3366 | 1993 | 6963 | 1836 | >99999 | >99999 | >99999 | >99999 | >99999 | >99999 | 15542 | >99999 |
randomio | xfs/ int/ sw | xfs/ ext/ sw | xfs/ int/ hw | xfs/ ext/ hw | ext4/ int/ sw | ext4/ ext/ sw | ext4/ int/ hw | ext4/ ext/ hw | zfs/ int/ sw | zfs/ ext/ sw | zfs/ int/ hw | zfs/ ext/ hw |
create 4GB file MB/s | 125 | 126 | 110 | 102 | 144 | 143 | 123 | 141 | 76 | 75 | 76 | 65 |
random io/s | 408 | 381 | 550 | 496 | 192 | 190 | 605 | 609 | 443 | 451 | 304 | 318 |
random read latency ms | 11 | 10 | 22 | 24 | 49 | 49 | 20 | 20 | 23 | 22 | 33 | 31 |
random write latency ms | 66 | 75 | 7 | 7 | 61 | 62 | 6 | 6 | 23 | 24 | 32 | 32 |
random read latency sTD dev ms | 11 | 8 | 50 | 52 | 38 | 38 | 54 | 47 | 32 | 27 | 63 | 38 |
random write latency sTD dev ms | 54 | 60 | 53 | 53 | 40 | 40 | 56 | 46 | 43 | 61 | 48 | 43 |
ffsb | xfs/ int/ sw | xfs/ ext/ sw | xfs/ int/ hw | xfs/ ext/ hw | ext4/ int/ sw | ext4/ ext/ sw | ext4/ int/ hw | ext4/ ext/ hw | zfs/ int/ sw | zfs/ ext/ sw | zfs/ int/ hw | zfs/ ext/ hw |
multi threaded read io/s | 534 | 542 | 488 | 488 | 1079 | 1058 | 549 | 1018 | 496 | 511 | 300 | 319 |
multi threaded write io/s | 70 | 98 | 118 | 168 | 66 | 108 | 173 | 175 | 52 | 33 | 145 | 34 |
multi threaded mixed io/s | 241 | 282 | 294 | 408 | 316 | 301 | 447 | 601 | 290 | 300 | 282 | 244 |
multi threaded mixed huge io/s | 4375 | 4389 | 3563 | 3480 | 7077 | 7928 | 3862 | 4529 | 6323 | 5727 | 2766 | 3119 |
kernel | xfs/ int/ sw | xfs/ ext/ sw | xfs/ int/ hw | xfs/ ext/ hw | ext4/ int/ sw | ext4/ ext/ sw | ext4/ int/ hw | ext4/ ext/ hw | zfs/ int/ sw | zfs/ ext/ sw | zfs/ int/ hw | zfs/ ext/ hw |
untar kernel s | 69 | 42 | 11 | 10 | 4 | 5 | 11 | 4 | 15 | 18 | 21 | 18 |
copy kernel s | 194 | 197 | 213 | 212 | 27 | 33 | 70 | 26 | 4 | 3 | 38 | 4 |
tar kernel s | 161 | 162 | 213 | 215 | 8 | 11 | 27 | 7 | 30 | 26 | 31 | 32 |
postmark 1 | xfs/ int/ sw | xfs/ ext/ sw | xfs/ int/ hw | xfs/ ext/ hw | ext4/ int/ sw | ext4/ ext/ sw | ext4/ int/ hw | ext4/ ext/ hw | zfs/ int/ sw | zfs/ ext/ sw | zfs/ int/ hw | zfs/ ext/ hw |
read KB/s | 421 | 536 | 1670 | 781 | 5340 | 6680 | 8900 | 8900 | 26710 | 13360 | 13360 | 8900 |
write KB/s | 1310 | 1660 | 5300 | 2420 | 16970 | 21210 | 28280 | 28280 | 84830 | 42410 | 42410 | 28280 |
postmark 10 | xfs/ int/ sw | xfs/ ext/ sw | xfs/ int/ hw | xfs/ ext/ hw | ext4/ int/ sw | ext4/ ext/ sw | ext4/ int/ hw | ext4/ ext/ hw | zfs/ int/ sw | zfs/ ext/ sw | zfs/ int/ hw | zfs/ ext/ hw |
read KB/s | 515 | 817 | 2260 | 1180 | 3880 | 2710 | 5430 | 9050 | 9050 | 13570 | 9050 | 13570 |
write KB/s | 1580 | 2500 | 7090 | 3700 | 12150 | 8510 | 17020 | 28360 | 28360 | 42540 | 28360 | 42540 |
postmark 100 | xfs/ int/ sw | xfs/ ext/ sw | xfs/ int/ hw | xfs/ ext/ hw | ext4/ int/ sw | ext4/ ext/ sw | ext4/ int/ hw | ext4/ ext/ hw | zfs/ int/ sw | zfs/ ext/ sw | zfs/ int/ hw | zfs/ ext/ hw |
read KB/s | 591 | 1010 | 3020 | 1940 | 1130 | 868 | 13570 | 9050 | 6780 | 9050 | 9050 | 9050 |
write KB/s | 1810 | 3150 | 9450 | 6080 | 3550 | 2660 | 42540 | 28360 | 21270 | 28360 | 28360 | 28360 |
MooSE 2007-08-31 16:10:50 (#)