Хорошо, из-за кучи проектов, над которыми я работаю, у меня есть доступ к выделенным серверам на 3 хостинг-провайдерах.
В качестве эксперимента и в образовательных целях я решил посмотреть, смогу ли я сравнить, насколько хорош IO для каждого из них.
Немного исследований привело меня к Бонни ++
Итак, я установил его на сервер и выполнил эту простую команду
/usr/sbin/bonnie -d /tmp/foo
Все 3 машины у разных хостинг-провайдеров - это выделенные машины, одна - VPS, две другие - на какой-то облачной платформе, например. VMWare / Xen с использованием какой-то кластерной SAN для хранения
Это может быть наивно, но вот результаты, которые я нашел.
HOST A
Version 1.03c ------Sequential Output------ --Sequential Input- --Random-
-Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
xxxxxxxxxxxxxxxx 1G 45081 88 56244 14 19167 4 20965 40 67110 6 67.2 0
------Sequential Create------ --------Random Create--------
-Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
16 15264 28 +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++
xxxxxxxx,1G,45081,88,56244,14,19167,4,20965,40,67110,6,67.2,0,16,15264,28,+++++,+++,+++++,+++,+++++,+++,+++++,+++,+++++,+++
HOST B
Version 1.03d ------Sequential Output------ --Sequential Input- --Random-
-Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
xxxxxxxxxxxx 4G 43070 91 64510 15 19092 0 29276 47 39169 0 448.2 0
------Sequential Create------ --------Random Create--------
-Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
16 24799 52 +++++ +++ +++++ +++ 25443 54 +++++ +++ +++++ +++
xxxxxxx,4G,43070,91,64510,15,19092,0,29276,47,39169,0,448.2,0,16,24799,52,+++++,+++,+++++,+++,25443,54,+++++,+++,+++++,+++
HOST C
Version 1.03c ------Sequential Output------ --Sequential Input- --Random-
-Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
xxxxxxxxxxxxx 1536M 15598 22 85698 13 258969 20 16194 22 723655 21 +++++ +++
------Sequential Create------ --------Random Create--------
-Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
16 14142 22 +++++ +++ 18621 22 13544 22 +++++ +++ 17363 21
xxxxxxxx,1536M,15598,22,85698,13,258969,20,16194,22,723655,21,+++++,+++,16,14142,22,+++++,+++,18621,22,13544,22,+++++,+++,17363,21
Итак, сначала, как лучше всего читать цифры и есть ли какие-либо проблемы с их сравнением?
Является ли это каким-либо образом истинным представлением скорости ввода-вывода?
Если нет, могу ли я это проверить?
Примечание: эти 3 машины используют либо Ubuntu, либо Debian (я полагаю, это не имеет особого значения)
Эти сайты могут помочь вам в интерпретации результатов Бонни:
http://www.textuality.com/bonnie/advice.html
http://www.issociate.de/board/post/478953/Understanding_bonnie++_results.html
http://sourceforge.net/projects/witme/files/bonnie-to-chart/
Но сначала я хотел бы исправить здесь некоторую несогласованность:
Вы выполнили три разных размера тестов и не показали никаких других параметров системы, поэтому ваши результаты довольно сложно оценить. (Какие здесь центральные процессоры? Что за дисковая подсистема? Почему вы использовали три разных размера? Почему вы использовали разные версии bonnie? На каких файловых системах вы работали? Делали ли вы какие-либо улучшения параметров монтирования файловой системы?)
Знание того, какие спецификации важны для вас, зависит от потребностей вашего приложения: для потоковой передачи видео требуется быстрое чтение (ввод бонни). Для записи видео требуется быстрая запись (выход Bonnie). и т.п.
Вот несколько советов / приемов Бонни, которые я обычно использую:
Уменьшите системную оперативную память до минимума. Для этого можно передать параметры ядра при загрузке. mem = 512MB - это то, что я обычно использую. Это гарантирует, что эффекты кеширования вашей локальной ОС минимально влияют на тестирование ввода-вывода.
Используйте приличный размер теста для стресса ввода-вывода. Я считаю 5-20G хорошими тестовыми диапазонами. Убедитесь, что ваши результаты одинаковы для различных диапазонов, а затем используйте один и тот же размер для всех тестов.
Не беспокойтесь о тестах на каждый символ.
Они не отражают реальное использование диска и требуют времени для выполнения. (почти все, что касается ввода-вывода диска, будет происходить с блоками, а не с символом)
Если вы работаете в сети SAN, подумайте об обнулении нашего блочного уровня перед запуском тестов. Иногда при выделении места возникает штраф за первую запись. Если вы полностью отключили свой диск перед запуском тестов, вы можете точно знать, что это не так. (выполнение нескольких итераций теста на одном узле и сравнение результатов также может помочь определить, является ли это проблемой)
Всегда публикуйте свою командную строку Bonnie, чтобы помочь другим скопировать ваши тесты.
Подсказка EC2: несколько человек обнаружили, что на AWS EBS используются программные полосы RAID0 для повышения производительности ввода-вывода.