Введение
Мнение касаемо различных VS у меня давно сложилось — все зависит от задач. Но нет, нет, да возникает желание копнуть глубже, узнать кто все таки сильнее — Брюс Ли или Джеки Чан, Сталоне или Шварцнегер, mdadm или gmirror.
Тест не претендует на абсолютную объективность, скорее он даже субъективен в разрезе используемого аппаратного обеспечения. Но так или иначе, цифры есть цифры.
Кого заинтересовал, пожалуйте под кат.
Тестовый стенд
Материнская плата: ECS 865GV-M
Процессор: Intel® Celeron® CPU 2.00GHz
HDD 1(система): SATA-II 160Gb Western Digital WD1600AAJS (подключен к «мамке»)
HDD 2,3(RAID): SATA-II 1,5Tb Western Digital [WD15EARS] (подключены к Promise)
SATA контроллер: Promise SATA300 TX4 PCI, 4-port SATA300
RAM: 1280Mb
*не Бог весть какая конфигурация, но, как говорится, чем богаты, тем и рады.
Начало
Информация о использованных в тесте утилитах:
Bonnie++
Как видно из названия, Bonnie++ основан на бенчмарке Bonnie. Существует много различных типов операций над файлами и разные программы их по разному используют. Bonnie++ тестирует некоторые из них и выводит результат по каждому из тестов. Распространяется по лицензии GPL2.
Есть две секции операций в тестах. Первая — IO тест, который моделирует поведение некоторых приложений баз данных. Вторая — тест на создание, чтение и удаление большого количества маленьких файлов.
Сайт: www.coker.com.au/bonnie++
Iozone
IOzone — это консольная утилита для измерения скорости работы файловой системы. Производится тестирование скорости таких операций, как read, write, re-read, re-write, read backwards, read strided, fread, fwrite, random read, pread, mmap, aio_read, aio_write. Результаты выводятся в файл, данные из которого могут использованы для построения графиков в Excel.
Сайт: www.iozone.org
DD
Думаю что читатель знаком с этим замечательным инструментом, поэтому ограничусь цитированием wiki.
«dd (англ. dataset definition — oпределение набора данных) — программа Unix, предназначенная как для копирования, так и для конвертации файлов»
Тестируемые ОС:
1.FreeBSD 8.0 RELEASE i386
2.Debian Lenny 5.0.5 i386
Подготовка
FreeBSD:
Linux:
Поехали(с)
Первым в бой отправляется bonnie++, запускаем с установками по умолчанию
О ключах:
-d: указали программе в каком каталоге создавать временные файлы
-m: заголовок выводимый в отчете
-u: от кого запустить
Далее я перенаправил вывод программы в файл > out.csv, затем при помощи bon_csv2html перевел в удобочитаемый html.
Результаты:
freebsd
![image](http://s003.radikal.ru/i202/1007/9f/0ddc1a1ff0c0.png)
linux
![image](https://habrastorage.org/r/w1560/getpro/geektimes/post_images/db5/628/f12/db5628f1264634e007d3190dee06d642.png)
freebsd
![image](https://habrastorage.org/r/w1560/getpro/geektimes/post_images/134/28b/ec9/13428bec9a42f079334caa26337a121c.png)
linux
![image](http://s47.radikal.ru/i115/1007/de/a5ed97d04b11.png)
*признаюсь, в Linux мне так и неудалось получить читаемый html, поэтому подправил результат html из FreeBSD
На скриншотах мы видим результат работы команды, пойдем по порядку.
Size 2512M — RAM*2
Sequential Output(Последовательный Вывод) Sequential Input(Посл. Ввод)
Per Char
это результаты записи чтения по одному байту. Демонстрируют способность ОС буферизовать такие операции.
Block
чтение-запись блоками размера 8192 байта.
Rewrite
думаю не нуждается в объяснении
Random Seeks(случайные операции чтения)
Seeks — число случайных операций чтения
Sequential Create (последовательное создание файлов)
Random Create(произвольное/случайное создание файлов)
Думаю что теперь читателю не понятны лишь строки заполненные символами +++ — тест завершился настолько быстро, что программа не может отобразить результат.
Теперь добавим программе некоторых инструкций
-n100:16384:0:20: говорим создать 100 файлов размером от 0 до 16384 b в 20 поддиректориях
Результаты:
freebsd
![image](http://s15.radikal.ru/i188/1007/a1/3831e38a35fe.png)
linux
![image](https://habrastorage.org/r/w1560/getpro/geektimes/post_images/552/6d7/e95/5526d7e957fd6a39d4db54ab60b9c88b.png)
freebsd
![image](https://habrastorage.org/r/w1560/getpro/geektimes/post_images/16f/67c/7ea/16f67c7ea45ef0e27bc1d8e2e6cfcd17.png)
linux
![image](https://habrastorage.org/r/w1560/getpro/geektimes/post_images/240/f4e/e01/240f4ee013c0f733ede8a9c2cde3c358.png)
*внимательный читатель заметит разницу в версиях программы. Что же, ставил последние доступное в портах/репозиториях.
Ваводы:
Как видно результаты работы программы разбиты для лучшего восприятия. Запуск программы с настройками по умолчанию я оставлю без внимания, сосредоточимся на последних четырех скриншотах.
Sequential Output(Последовательный Вывод)
Как видно в «побайтном» Per Char тесте Linux уносится в точку настолько быстро, что FreeBSD со своим 169 KB/s не успевает дойти даже до процесса начальной загрузки. 22183 KB/s в Linux против 169 KB/s в FreeBSD. Загрузка CPU отличается минимально.
В тесте где размер записи равен 8192 B FreeBSD побеждает практически с двойным отрывом. 48840 KB/s в FreeBSD против 28895 KB/s в Linux. Но FreeBSD загрузила CPU в два раза больше.
Тест Rewrite показал незначительную разницу, 23306 KB/s в FreeBSD против 18529 KB/s в Linux. Из чего можно сделать вывод что механизмы кеширования тестируемых ОС примерно равны по эффективности.
Sequential Input(Посл. Ввод)
Здесь победа явно за Linux. Per Char 350 KB/s в FreeBSD против 26435 KB/s в Linux. Блоками в 8192 b, 67290 KB/s FreeBSD против 86610 KB/s в Linux.
Random Seeks(случайные операции чтения)
Linux выигрывает этот тест, 165.1с в FreeBSD против 148.5с в Linux.
Перейдем к последним двум скринам
Sequential Create (последовательное создание)
В этом тесте производится последовательное создание/чтение/удаление файлов. Напомню читателю что мы создаем 100 файлов в 20-ти поддиректориях произвольного размера от 0 до 16 KB.
Скорость измеряется в файлах в секунду. Создание, FreeBSD 103 файла/с против 3099 файлов/с у Linux, так же прошу обратить ваше внимание на загрузку CPU. Чтение, 1556 файлов/с у FreeBSD против 34204 файлов/с у Linux. Удаление 12206 файлов/с у FreeBSD против 14121 файлов/с у Linux. Linux, с огромным отрывом от преследователя, разрывает финишную ленту.
Random Create(произвольное/случайное создание)
И здесь Linux бесспорный лидер. Создание, FreeBSD 100 файлов/с против 20187 файлов/с у Linux. Чтение, 166 файлов/с у FreeBSD против 3299 файлов/с у Linux. Удаление 9139 файлов/с у FreeBSD против 11638 файлов/с у Linux
Подводя черту под результатами bonnie++ можно заметить что Linux, за некоторым исключением, одержал уверенную победу. Операции по созданию большого количества файлов небольшого размера происходят в разы быстрее чем в FreeBSD. Но советую читателю не спешить с окончательными выводами, не все так очевидно. Идем дальше.
С bonnie++ на этом закончим, и перейдем к следующему инструменту — Iozone.
Вдоволь наигравшись с различными ключами запуска, почитав документацию, родилась вот такая команда:
*на самом деле я лукавлю, команду я подсмотрел в результатах тестов на оф сайте программы ))
О ключах:
-R: указываем программе о необходимости создания файла отчета
-a: полностью автоматический режим, размер записи выбирается автоматически от 4k до 16m (4k..8k..16k..32k....16384k )
-f: укажем файл на нашем массиве
-g: максимальный размер файла 1Gb(для режима -a)
-z: принуждает программу запущенную в автоматическом режиме использовать маленькие размеры записи для больших файлов(т.е. от 4k до 16m (4k..8k..16k..32k....16384k ))
Для наглядности результаты я приведу в графиках. С указанными ключами программа создает довольно таки увесистый файл отчета, в графиках я выделил наиболее интересные, на мой взгляд, результаты.
Первым будет тест на запись.
![image](https://habrastorage.org/r/w780q1/getpro/geektimes/post_images/e8a/049/4fd/e8a0494fded18cab789b51dd8955bacb.jpg)
![image](http://s50.radikal.ru/i127/1007/c4/c60ebcd76fd4.jpg)
![image](http://s003.radikal.ru/i201/1007/a2/248a32829f97.jpg)
Результаты отображенные на первом графике не оставляют FreeBSD никакого шанса. При создании файла размером 16Mb блоками от 4-х килобайт до 16 мегабайт среднее значение Linux равно ~204 MB/s, FreeBSD 44.7 MB/s.
Файл размером 128 MB, при досижении размера блока 128KB картина резко меняется и FreeBSD уверенно вырывается вперед. Средние значения таковы: Linux ~47.8 MB/s, FreeBSD 48.3 MB/s.
Файл размером в 1Gb. FreeBSD держит ту же скорость что и с двумя предыдущими файлами. Linux же, напротив, сильно сбавил обороты. Средние значения таковы: Linux ~33 MB/s, FreeBSD 48.5 MB/s.
Как видно с более мелкими файлами Linux справляется значительно быстрее, как мы уже могли заметить. С файлом размером в 1Gb FreeBSD берет реванш. Так же показательно то, что FreeBSD выдерживает одну и ту же скорость вне зависимости от размера файла.
Следущим по списку у нас идет чтение.
![image](http://i060.radikal.ru/1007/47/db3ccfff0552.png)
![image](https://habrastorage.org/r/w1560/getpro/geektimes/post_images/4f1/0a3/cab/4f10a3cabb7d612a6ced38bfa7c0a24a.png)
![image](http://s50.radikal.ru/i127/1007/fc/07f038d9aa29.jpg)
Превым на растерзание отдаем файл размером 16 Mb. Соревнующиеся идут почти корпус в корпус.
Средние значения: Linux ~534 MB/s, FreeBSD ~538 MB/s.
Файл 128 Mb. Со старта Linux уходит с прошлифовкой, но уже на чекпоинте в 64 KB оппонент его доганяет и начинается ожесточенная борьба, к финишу первым успевает все же Linux. Средние значения: Linux ~515 MB/s, FreeBSD ~380 MB/s.
Добравшись до нашего тяжеловеса тестируемые ОС порыкивают на старте.
Файл размером 1Gb. Linux оставив FreeBSD глотать дым на старте уходит в отрыв, как видно, скорость достигает 1Gb/s. После контрольной точки(начиная с размера блока в 128KB) FreeBSD держится в хвосте с небольшим отставанием от лидера. Средние значения: Linux ~553 MB/s, FreeBSD ~369 MB/s.
В скорости чтения Linux гораздо быстрее чем FreeBSD. Независимо от размера файла.
Рандомная(случайная) запись
![image](http://s42.radikal.ru/i095/1007/f7/b6c1988f5524.jpg)
![image](http://i056.radikal.ru/1007/af/45c950dbfae7.jpg)
![image](https://habrastorage.org/r/w780q1/getpro/geektimes/post_images/a70/0aa/f76/a700aaf761e2d9b35338624bf24f5ccd.jpg)
Файл 16 Mb. Результаты говорят сами за себя, у Linux мы наблюдаем плавную кривую, FreeBSD от чего-то уходит на питстоп после чекпоинта 1Mb и еле еле дотягивает до финиша. Средние результаты: Linux ~356.8 MB/s, FreeBSD ~255.5 MB/s.
Файл 128 Mb. FreeBSD очевидно так и не оклемалась и показывает удручающие результаты, Linux к финишу тоже почувствовал себя неладно, разница между размерами блока в 8 Mb и 16 Mb разительна. Средние результаты: Linux ~6 MB/s, FreeBSD ~3.8 MB/s.
Файл 1 Gb. Как и при последовательном создании файла большого размера FreeBSD уверенно выходит вперед, Linux нагоняет соперника только к финишу. Средние результаты: Linux ~12 MB/s, FreeBSD ~26 MB/s.
Рандомное(случайное) чтение
![image](http://s45.radikal.ru/i109/1007/b1/f8fdc86b3312.jpg)
![image](http://i062.radikal.ru/1007/ec/b59540bef329.jpg)
![image](http://i073.radikal.ru/1007/0e/6474520fb766.jpg)
Первый график, Linux лишь немного вырвался вперед, но был настигнут уже на чекпоинте 32 KB. Далее соперники двигались вровень, с очень незначительным приемуществом FreeBSD. Средние результаты: Linux ~523 MB/s, FreeBSD ~458 MB/s.
Картинка с результатами теста файла размером 128 Mb отличается от первой очень незначительно, с той лишь разницей, что явного лидера, начиная с размера блока в 64 KB, так и не обозначилось. Средние результаты: Linux ~476 MB/s, FreeBSD ~362 MB/s.
Последний график дает нам четкое понимание, что Linux далеко в авангарде, при операциях чтения файлов большого размера. Средние результаты: Linux ~523 MB/s, FreeBSD ~274 MB/s.
Под занавес итоги теста всем извесной утилитой DD.
Создадим файл размером 1 Gb из блоков размером 4 KB
FreeBSD: 49,02 MB/s
Linux: 23,9 MB/s
Читаем этот файл блоками по 4 KB
FreeBSD: 342,7 MB/s
Linux: 788 MB/s
Создадим файл размером 1 Gb из блоков размером 64 KB
FreeBSD: 48,64 MB/s
Linux: 35,0 MB/s
Читаем этот файл блоками по 64 KB
FreeBSD: 350,14 MB/s
Linux: 617 MB/s
Создадим файл размером 1 Gb из блоков размером 1 Mb
FreeBSD: 47,98 MB/s
Linux: 23,9 MB/s
Читаем этот файл блоками по 4 KB
FreeBSD: 348,51 MB/s
Linux: 460 MB/s
Создадим файл размером 1000 Mb из блоков размером 100 Mb
FreeBSD: 44,24 MB/s
Linux: 37,7 MB/s
Читаем этот файл блоками по 4 KB
FreeBSD: 308,61 MB/s
Linux: 459 MB/s
Создадим файл размером 100 Gb из блоков размером 1 Gb
FreeBSD: 31,7 MB/s
Linux: 14,7 MB/s
Читаем этот файл блоками по 4 KB
FreeBSD: 57,48 MB/s
Linux: результат получить не удалось
FreeBSD явно быстрее Linux при создании файлов. Linux более силен в чтении файлов.
Листинги dd
FreeBSD
*вывод dd в FreeBSD я немного подправил для удобочитаемости
Linux
Эпилог
Идея провести тест, как я уже писал, родилась спонтанно. Изначально просто хотелось собрать Software RAID под backup'ы на бюджетной машинке, а затем уже влез этот VS,мать его чтоб его. Для меня выбор очевиден — FreeBSD, она бастрее при создании файлов, особенно при создании файлов большого размера. Как раз то, что мне нужно. Проведя этот тест я лишь еще раз убедился в правильности занятой позиции касаемо разных holly war'ов — все зависит от задач.
Хотя я снова не договариваю всей правды. Выбор в пользу FreeBSD был сделан еще до теста. Так как эту ОС я просто знаю намного лучше нежели Linux, и нравится она мне много больше. Если же взглянуть на результаты объективно, то победу я, абсолютно заслуженно, отдам Linux'у. Вновь пробежавшись по результатам тестов в этом не остается сомнений.
Кто то может справедливо заметить, а зачем же ты столько «заморачивался» с этими тестами, уже bonnie++ тебе все сказал, но нет. Я привык ко всему подходить вдумчиво, с чувством, с толком. Да и появившееся свободное время позволяло поэкспериментировать.
Насколько грамотен и информативен мой отчет решать вам, я не профессионал в *nix, мой путь в этот увлекательный мир начался сравнительно недавно.
Спасибо тем кто осилил.
P.S.
При подготовке материала использовались:
1. Руководство администратора Linux. Авторы: Немет Э., Снайдер Г., Трент Х.
2. FreeBSD. Подробное руководство. Майкл Лукас.
3. google.com
4. /dev/hands и /dev/head =)
Сей отчет был подготовлен при активной помощи камрадов с unixadmins.su, коим отдельное спасибо.
Мнение касаемо различных VS у меня давно сложилось — все зависит от задач. Но нет, нет, да возникает желание копнуть глубже, узнать кто все таки сильнее — Брюс Ли или Джеки Чан, Сталоне или Шварцнегер, mdadm или gmirror.
Тест не претендует на абсолютную объективность, скорее он даже субъективен в разрезе используемого аппаратного обеспечения. Но так или иначе, цифры есть цифры.
Кого заинтересовал, пожалуйте под кат.
Тестовый стенд
Материнская плата: ECS 865GV-M
Процессор: Intel® Celeron® CPU 2.00GHz
HDD 1(система): SATA-II 160Gb Western Digital WD1600AAJS (подключен к «мамке»)
HDD 2,3(RAID): SATA-II 1,5Tb Western Digital [WD15EARS] (подключены к Promise)
SATA контроллер: Promise SATA300 TX4 PCI, 4-port SATA300
RAM: 1280Mb
*не Бог весть какая конфигурация, но, как говорится, чем богаты, тем и рады.
Начало
Информация о использованных в тесте утилитах:
Bonnie++
Как видно из названия, Bonnie++ основан на бенчмарке Bonnie. Существует много различных типов операций над файлами и разные программы их по разному используют. Bonnie++ тестирует некоторые из них и выводит результат по каждому из тестов. Распространяется по лицензии GPL2.
Есть две секции операций в тестах. Первая — IO тест, который моделирует поведение некоторых приложений баз данных. Вторая — тест на создание, чтение и удаление большого количества маленьких файлов.
Сайт: www.coker.com.au/bonnie++
Iozone
IOzone — это консольная утилита для измерения скорости работы файловой системы. Производится тестирование скорости таких операций, как read, write, re-read, re-write, read backwards, read strided, fread, fwrite, random read, pread, mmap, aio_read, aio_write. Результаты выводятся в файл, данные из которого могут использованы для построения графиков в Excel.
Сайт: www.iozone.org
DD
Думаю что читатель знаком с этим замечательным инструментом, поэтому ограничусь цитированием wiki.
«dd (англ. dataset definition — oпределение набора данных) — программа Unix, предназначенная как для копирования, так и для конвертации файлов»
Тестируемые ОС:
1.FreeBSD 8.0 RELEASE i386
2.Debian Lenny 5.0.5 i386
Подготовка
FreeBSD:
Загружаем необходимый модуль
#gmirror load
Создаем зеркало из двух дисков
#gmirror label -v gm0 /dev/ad6 /dev/ad10
Форматируем его в UFS + Soft Updates
#newfs -U /dev/mirror/gm0
Создадим каталог
#mkdir /raid
Монтируем
#mount /dev/mirror/gm0 /raid
Linux:
Создаем зеркало
debian:/home/iam# mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sd[bc]1
Записываем информацию в mdadm.conf
debian:/home/iam# mdadm --detail --scan >> /etc/mdadm/mdadm.conf
Форматируем в EXT3
debian:/home/iam#mkfs.ext3 /dev/md0
Создадим точку монтирования
debian:/home/iam#mkdir /raid
Монтируем
debian:/home/iam#mount /dev/md0 /raid
Поехали(с)
Первым в бой отправляется bonnie++, запускаем с установками по умолчанию
# bonnie++ -d /raid/ -m 'FREEBSD_gmirror' -u root > out.csv && cat out.csv | bon_csv2html > gmirror.html
О ключах:
-d: указали программе в каком каталоге создавать временные файлы
-m: заголовок выводимый в отчете
-u: от кого запустить
Далее я перенаправил вывод программы в файл > out.csv, затем при помощи bon_csv2html перевел в удобочитаемый html.
Результаты:
freebsd
![image](http://s003.radikal.ru/i202/1007/9f/0ddc1a1ff0c0.png)
linux
![image](https://habrastorage.org/getpro/geektimes/post_images/db5/628/f12/db5628f1264634e007d3190dee06d642.png)
freebsd
![image](https://habrastorage.org/getpro/geektimes/post_images/134/28b/ec9/13428bec9a42f079334caa26337a121c.png)
linux
![image](http://s47.radikal.ru/i115/1007/de/a5ed97d04b11.png)
*признаюсь, в Linux мне так и неудалось получить читаемый html, поэтому подправил результат html из FreeBSD
На скриншотах мы видим результат работы команды, пойдем по порядку.
Size 2512M — RAM*2
Sequential Output(Последовательный Вывод) Sequential Input(Посл. Ввод)
Per Char
это результаты записи чтения по одному байту. Демонстрируют способность ОС буферизовать такие операции.
Block
чтение-запись блоками размера 8192 байта.
Rewrite
думаю не нуждается в объяснении
Random Seeks(случайные операции чтения)
Seeks — число случайных операций чтения
Sequential Create (последовательное создание файлов)
Random Create(произвольное/случайное создание файлов)
Думаю что теперь читателю не понятны лишь строки заполненные символами +++ — тест завершился настолько быстро, что программа не может отобразить результат.
Теперь добавим программе некоторых инструкций
# bonnie++ -d /raid/ -m 'FREEBSD_gmirror' -n 100:16384:0:20 -u root > out.csv && cat out.csv | bon_csv2html > gmirror_1.html
-n100:16384:0:20: говорим создать 100 файлов размером от 0 до 16384 b в 20 поддиректориях
Результаты:
freebsd
![image](http://s15.radikal.ru/i188/1007/a1/3831e38a35fe.png)
linux
![image](https://habrastorage.org/getpro/geektimes/post_images/552/6d7/e95/5526d7e957fd6a39d4db54ab60b9c88b.png)
freebsd
![image](https://habrastorage.org/getpro/geektimes/post_images/16f/67c/7ea/16f67c7ea45ef0e27bc1d8e2e6cfcd17.png)
linux
![image](https://habrastorage.org/getpro/geektimes/post_images/240/f4e/e01/240f4ee013c0f733ede8a9c2cde3c358.png)
*внимательный читатель заметит разницу в версиях программы. Что же, ставил последние доступное в портах/репозиториях.
Ваводы:
Как видно результаты работы программы разбиты для лучшего восприятия. Запуск программы с настройками по умолчанию я оставлю без внимания, сосредоточимся на последних четырех скриншотах.
Sequential Output(Последовательный Вывод)
Как видно в «побайтном» Per Char тесте Linux уносится в точку настолько быстро, что FreeBSD со своим 169 KB/s не успевает дойти даже до процесса начальной загрузки. 22183 KB/s в Linux против 169 KB/s в FreeBSD. Загрузка CPU отличается минимально.
В тесте где размер записи равен 8192 B FreeBSD побеждает практически с двойным отрывом. 48840 KB/s в FreeBSD против 28895 KB/s в Linux. Но FreeBSD загрузила CPU в два раза больше.
Тест Rewrite показал незначительную разницу, 23306 KB/s в FreeBSD против 18529 KB/s в Linux. Из чего можно сделать вывод что механизмы кеширования тестируемых ОС примерно равны по эффективности.
Sequential Input(Посл. Ввод)
Здесь победа явно за Linux. Per Char 350 KB/s в FreeBSD против 26435 KB/s в Linux. Блоками в 8192 b, 67290 KB/s FreeBSD против 86610 KB/s в Linux.
Random Seeks(случайные операции чтения)
Linux выигрывает этот тест, 165.1с в FreeBSD против 148.5с в Linux.
Перейдем к последним двум скринам
Sequential Create (последовательное создание)
В этом тесте производится последовательное создание/чтение/удаление файлов. Напомню читателю что мы создаем 100 файлов в 20-ти поддиректориях произвольного размера от 0 до 16 KB.
Скорость измеряется в файлах в секунду. Создание, FreeBSD 103 файла/с против 3099 файлов/с у Linux, так же прошу обратить ваше внимание на загрузку CPU. Чтение, 1556 файлов/с у FreeBSD против 34204 файлов/с у Linux. Удаление 12206 файлов/с у FreeBSD против 14121 файлов/с у Linux. Linux, с огромным отрывом от преследователя, разрывает финишную ленту.
Random Create(произвольное/случайное создание)
И здесь Linux бесспорный лидер. Создание, FreeBSD 100 файлов/с против 20187 файлов/с у Linux. Чтение, 166 файлов/с у FreeBSD против 3299 файлов/с у Linux. Удаление 9139 файлов/с у FreeBSD против 11638 файлов/с у Linux
Подводя черту под результатами bonnie++ можно заметить что Linux, за некоторым исключением, одержал уверенную победу. Операции по созданию большого количества файлов небольшого размера происходят в разы быстрее чем в FreeBSD. Но советую читателю не спешить с окончательными выводами, не все так очевидно. Идем дальше.
С bonnie++ на этом закончим, и перейдем к следующему инструменту — Iozone.
Вдоволь наигравшись с различными ключами запуска, почитав документацию, родилась вот такая команда:
# iozone -Raz -b /home/iam/results_all.xls -f /raid/1 -g 1g
*на самом деле я лукавлю, команду я подсмотрел в результатах тестов на оф сайте программы ))
О ключах:
-R: указываем программе о необходимости создания файла отчета
-a: полностью автоматический режим, размер записи выбирается автоматически от 4k до 16m (4k..8k..16k..32k....16384k )
-f: укажем файл на нашем массиве
-g: максимальный размер файла 1Gb(для режима -a)
-z: принуждает программу запущенную в автоматическом режиме использовать маленькие размеры записи для больших файлов(т.е. от 4k до 16m (4k..8k..16k..32k....16384k ))
Для наглядности результаты я приведу в графиках. С указанными ключами программа создает довольно таки увесистый файл отчета, в графиках я выделил наиболее интересные, на мой взгляд, результаты.
Первым будет тест на запись.
![image](https://habrastorage.org/getpro/geektimes/post_images/e8a/049/4fd/e8a0494fded18cab789b51dd8955bacb.jpg)
![image](http://s50.radikal.ru/i127/1007/c4/c60ebcd76fd4.jpg)
![image](http://s003.radikal.ru/i201/1007/a2/248a32829f97.jpg)
Результаты отображенные на первом графике не оставляют FreeBSD никакого шанса. При создании файла размером 16Mb блоками от 4-х килобайт до 16 мегабайт среднее значение Linux равно ~204 MB/s, FreeBSD 44.7 MB/s.
Файл размером 128 MB, при досижении размера блока 128KB картина резко меняется и FreeBSD уверенно вырывается вперед. Средние значения таковы: Linux ~47.8 MB/s, FreeBSD 48.3 MB/s.
Файл размером в 1Gb. FreeBSD держит ту же скорость что и с двумя предыдущими файлами. Linux же, напротив, сильно сбавил обороты. Средние значения таковы: Linux ~33 MB/s, FreeBSD 48.5 MB/s.
Как видно с более мелкими файлами Linux справляется значительно быстрее, как мы уже могли заметить. С файлом размером в 1Gb FreeBSD берет реванш. Так же показательно то, что FreeBSD выдерживает одну и ту же скорость вне зависимости от размера файла.
Следущим по списку у нас идет чтение.
![image](http://i060.radikal.ru/1007/47/db3ccfff0552.png)
![image](https://habrastorage.org/getpro/geektimes/post_images/4f1/0a3/cab/4f10a3cabb7d612a6ced38bfa7c0a24a.png)
![image](http://s50.radikal.ru/i127/1007/fc/07f038d9aa29.jpg)
Превым на растерзание отдаем файл размером 16 Mb. Соревнующиеся идут почти корпус в корпус.
Средние значения: Linux ~534 MB/s, FreeBSD ~538 MB/s.
Файл 128 Mb. Со старта Linux уходит с прошлифовкой, но уже на чекпоинте в 64 KB оппонент его доганяет и начинается ожесточенная борьба, к финишу первым успевает все же Linux. Средние значения: Linux ~515 MB/s, FreeBSD ~380 MB/s.
Добравшись до нашего тяжеловеса тестируемые ОС порыкивают на старте.
Файл размером 1Gb. Linux оставив FreeBSD глотать дым на старте уходит в отрыв, как видно, скорость достигает 1Gb/s. После контрольной точки(начиная с размера блока в 128KB) FreeBSD держится в хвосте с небольшим отставанием от лидера. Средние значения: Linux ~553 MB/s, FreeBSD ~369 MB/s.
В скорости чтения Linux гораздо быстрее чем FreeBSD. Независимо от размера файла.
Рандомная(случайная) запись
![image](http://s42.radikal.ru/i095/1007/f7/b6c1988f5524.jpg)
![image](http://i056.radikal.ru/1007/af/45c950dbfae7.jpg)
![image](https://habrastorage.org/getpro/geektimes/post_images/a70/0aa/f76/a700aaf761e2d9b35338624bf24f5ccd.jpg)
Файл 16 Mb. Результаты говорят сами за себя, у Linux мы наблюдаем плавную кривую, FreeBSD от чего-то уходит на питстоп после чекпоинта 1Mb и еле еле дотягивает до финиша. Средние результаты: Linux ~356.8 MB/s, FreeBSD ~255.5 MB/s.
Файл 128 Mb. FreeBSD очевидно так и не оклемалась и показывает удручающие результаты, Linux к финишу тоже почувствовал себя неладно, разница между размерами блока в 8 Mb и 16 Mb разительна. Средние результаты: Linux ~6 MB/s, FreeBSD ~3.8 MB/s.
Файл 1 Gb. Как и при последовательном создании файла большого размера FreeBSD уверенно выходит вперед, Linux нагоняет соперника только к финишу. Средние результаты: Linux ~12 MB/s, FreeBSD ~26 MB/s.
Рандомное(случайное) чтение
![image](http://s45.radikal.ru/i109/1007/b1/f8fdc86b3312.jpg)
![image](http://i062.radikal.ru/1007/ec/b59540bef329.jpg)
![image](http://i073.radikal.ru/1007/0e/6474520fb766.jpg)
Первый график, Linux лишь немного вырвался вперед, но был настигнут уже на чекпоинте 32 KB. Далее соперники двигались вровень, с очень незначительным приемуществом FreeBSD. Средние результаты: Linux ~523 MB/s, FreeBSD ~458 MB/s.
Картинка с результатами теста файла размером 128 Mb отличается от первой очень незначительно, с той лишь разницей, что явного лидера, начиная с размера блока в 64 KB, так и не обозначилось. Средние результаты: Linux ~476 MB/s, FreeBSD ~362 MB/s.
Последний график дает нам четкое понимание, что Linux далеко в авангарде, при операциях чтения файлов большого размера. Средние результаты: Linux ~523 MB/s, FreeBSD ~274 MB/s.
Под занавес итоги теста всем извесной утилитой DD.
Создадим файл размером 1 Gb из блоков размером 4 KB
FreeBSD: 49,02 MB/s
Linux: 23,9 MB/s
Читаем этот файл блоками по 4 KB
FreeBSD: 342,7 MB/s
Linux: 788 MB/s
Создадим файл размером 1 Gb из блоков размером 64 KB
FreeBSD: 48,64 MB/s
Linux: 35,0 MB/s
Читаем этот файл блоками по 64 KB
FreeBSD: 350,14 MB/s
Linux: 617 MB/s
Создадим файл размером 1 Gb из блоков размером 1 Mb
FreeBSD: 47,98 MB/s
Linux: 23,9 MB/s
Читаем этот файл блоками по 4 KB
FreeBSD: 348,51 MB/s
Linux: 460 MB/s
Создадим файл размером 1000 Mb из блоков размером 100 Mb
FreeBSD: 44,24 MB/s
Linux: 37,7 MB/s
Читаем этот файл блоками по 4 KB
FreeBSD: 308,61 MB/s
Linux: 459 MB/s
Создадим файл размером 100 Gb из блоков размером 1 Gb
FreeBSD: 31,7 MB/s
Linux: 14,7 MB/s
Читаем этот файл блоками по 4 KB
FreeBSD: 57,48 MB/s
Linux: результат получить не удалось
FreeBSD явно быстрее Linux при создании файлов. Linux более силен в чтении файлов.
Листинги dd
FreeBSD
*вывод dd в FreeBSD я немного подправил для удобочитаемости
Создаем файл размером 1Gb блоками размером 4k
# /usr/bin/time -h dd if=/dev/zero of=testfile bs=4k count=262144
262144+0 records in
262144+0 records out
1073741824 bytes transferred in 20.888121 secs (49,02 Mbytes/sec)
21.05s real 0.45s user 11.12s sys
Читаем созданный файл блоками размером 4k
*далее по аналогии
# /usr/bin/time -h dd if=testfile of=/dev/null bs=4k count=262144
262144+0 records in
262144+0 records out
1073741824 bytes transferred in 2.987966 secs (342,7 Mbytes/sec)
2.99s real 0.15s user 2.82s sys
# /usr/bin/time -h dd if=/dev/zero of=testfile bs=64k count=16384
16384+0 records in
16384+0 records out
1073741824 bytes transferred in 21.050771 secs (48,64 Mbytes/sec)
21.05s real 0.08s user 8.12s sys
# /usr/bin/time -h dd if=testfile of=/dev/null bs=64k count=16384
16384+0 records in
16384+0 records out
1073741824 bytes transferred in 2.924540 secs (350,14 Mbytes/sec)
2.92s real 0.05s user 2.86s sys
# /usr/bin/time -h dd if=/dev/zero of=testfile bs=1m count=1024
1024+0 records in
1024+0 records out
1073741824 bytes transferred in 21.341423 secs (47,98bytes/sec)
21.57s real 0.00s user 7.87s sys
# /usr/bin/time -h dd if=testfile of=/dev/null bs=1m count=1024
1024+0 records in
1024+0 records out
1073741824 bytes transferred in 2.938155 secs (348,51 Mbytes/sec)
2.94s real 0.00s user 2.92s sys
# /usr/bin/time -h dd if=/dev/zero of=testfile bs=100m count=10
10+0 records in
10+0 records out
1048576000 bytes transferred in 22.601393 secs (44,24 Mbytes/sec)
22.86s real 0.00s user 7.89s sys
# /usr/bin/time -h dd if=testfile of=/dev/null bs=100m count=10
10+0 records in
10+0 records out
1048576000 bytes transferred in 3.240300 secs (308,61 Mbytes/sec)
3.26s real 0.00s user 3.25s sys
# /usr/bin/time -h dd if=/dev/zero of=testfile bs=1g count=100
100+0 records in
100+0 records out
107374182400 bytes transferred in 3229.788959 secs (31,7 Mbytes/sec)
53m50.33s real 0.00s user 14m40.89s sys
# /usr/bin/time -h dd if=testfile of=/dev/null bs=1g count=100
100+0 records in
100+0 records out
107374182400 bytes transferred in 1781.360638 secs (57,48 Mbytes/sec)
29m41.67s real 0.00s user 6m44.73s sys
Linux
debian:/raid# dd if=/dev/zero of=testfile bs=4k count=262144
262144+0 записей считано
262144+0 записей написано
скопировано 1073741824 байта (1,1 GB), 45,0159 c, 23,9 MB/c
debian:/raid# dd if=testfile of=/dev/null bs=4k count=262144
262144+0 записей считано
262144+0 записей написано
скопировано 1073741824 байта (1,1 GB), 1,36295 c, 788 MB/c
debian:/raid# dd if=/dev/zero of=testfile bs=64k count=16384
16384+0 записей считано
16384+0 записей написано
скопировано 1073741824 байта (1,1 GB), 28,2238 c, 38,0 MB/c
debian:/raid# dd if=testfile of=/dev/null bs=64k count=16384
16384+0 записей считано
16384+0 записей написано
скопировано 1073741824 байта (1,1 GB), 1,73935 c, 617 MB/c
debian:/raid# dd if=/dev/zero of=testfile bs=1M count=1024
1024+0 записей считано
1024+0 записей написано
скопировано 1073741824 байта (1,1 GB), 30,711 c, 35,0 MB/c
debian:/raid# dd if=testfile of=/dev/null bs=1M
1024+0 записей считано
1024+0 записей написано
скопировано 1073741824 байта (1,1 GB), 2,33447 c, 460 MB/c
debian:/raid# dd if=/dev/zero of=testfile bs=100M count=10
10+0 записей считано
10+0 записей написано
скопировано 1048576000 байт (1,0 GB), 27,8344 c, 37,7 MB/c
debian:/raid# dd if=testfile of=/dev/null bs=100M count=10
10+0 записей считано
10+0 записей написано
скопировано 1048576000 байт (1,0 GB), 2,28437 c, 459 MB/c
debian:/raid# dd if=/dev/zero of=testfile bs=1024M count=100
100+0 записей считано
100+0 записей написано
скопировано 107374182400 байт (107 GB), 7315,88 c, 14,7 MB/c
debian:/raid# dd of=testfile if=/dev/null bs=1024M count=100
0+0 записей считано
0+0 записей написано
скопировано 0 байт (0 B), 7,5694e-05 c, 0,0 kB/c
Эпилог
Идея провести тест, как я уже писал, родилась спонтанно. Изначально просто хотелось собрать Software RAID под backup'ы на бюджетной машинке, а затем уже влез этот VS,
Хотя я снова не договариваю всей правды. Выбор в пользу FreeBSD был сделан еще до теста. Так как эту ОС я просто знаю намного лучше нежели Linux, и нравится она мне много больше. Если же взглянуть на результаты объективно, то победу я, абсолютно заслуженно, отдам Linux'у. Вновь пробежавшись по результатам тестов в этом не остается сомнений.
Кто то может справедливо заметить, а зачем же ты столько «заморачивался» с этими тестами, уже bonnie++ тебе все сказал, но нет. Я привык ко всему подходить вдумчиво, с чувством, с толком. Да и появившееся свободное время позволяло поэкспериментировать.
Насколько грамотен и информативен мой отчет решать вам, я не профессионал в *nix, мой путь в этот увлекательный мир начался сравнительно недавно.
Спасибо тем кто осилил.
P.S.
При подготовке материала использовались:
1. Руководство администратора Linux. Авторы: Немет Э., Снайдер Г., Трент Х.
2. FreeBSD. Подробное руководство. Майкл Лукас.
3. google.com
4. /dev/hands и /dev/head =)
Сей отчет был подготовлен при активной помощи камрадов с unixadmins.su, коим отдельное спасибо.