Тестирование виртуальных серверов, или как выбрать хостинг-провайдера

Тестирование виртуальных серверов, или как выбрать хостинг-провайдера

"Вы говорите, что выбирать надо из двух зол?! Тоже мне ассортимент!“
Веслав Брудзиньский

Выбор провайдера хостинга и виртуального сервера конечно же не ограничивается двумя вариантами – на рынке десятки дата-центров, выбор нетривиален и вот почему. В тарифах провайдеров услуг изначально нет полной информации о типах процессоров, памяти, дисках, их производительности, о канале связи и т.д. Более того, даже открытые данные не приведены, как говорится к одному знаменателю с тем, чтобы их можно было сравнить. Поэтому перед нами всегда стоит вопрос: как понять что из себя представляют те или иные услуги и как сделать правильный выбор? К примеру, стоимость виртуального сервера у одного провайдера в 4 раза выше, чем у другого – это говорит о жадности хостера или высоком качестве услуг?

Дабы разобраться в теме сделаем тест-драйв провайдеров и проведем сравнение сопоставимых услуг. Столкнем лбами 13 компаний. Мы взяли представителей разных ниш, отличающихся как широтой услуг, так и ценами, с тем, чтобы выборка была репрезентативной и показала срез рынка.

Итак, разместим хостеров в алфавитном порядке:

Но прежде чем сравнивать, укажем что данное сравнение дает? А дает исследование следующее:

  • представление о рынке и уровне конкуренции;
  • рекомендации по рациональному использованию денег;
  • возможность выбора необходимой конфигураций VDS;
  • показывает наиболее производительное сочетание ресурсов CPU/RAM;
  • позволяет исключить ошибки при смене тарифа или провайдера;
  • возможность сравнения VDS с обычными серверами и другими решениями.

Замечание: мы не рассматриваем особенности и различия виртуальных машин VDS, VPS и других облачных решений и для простоты все их будем называть VDS.

Итак начнем

А) Методика расчета тарифов

В исходных данных мы имеем только стоимость всей конфигурации VDS. Так как не все провайдеры разбивают их на составляющие, то это довольно скудная информация, которая не дает нам четкого представления о том, за что мы собственно платим. Чтобы дать представление об этих параметрах, в рамках нашей модели мы учитываем каждый элемент, а именно CPU — RAM — Storage — Network с равным весом – по 25%. При необходимости вы можете модифицировать коэффициенты под ваши потребности и получить результаты уже со своими данными.

Тестирование виртуальных серверов, или как выбрать хостинг-провайдера

Для приведения любой конфигурации к общему знаменателю, что очень важно, надо иметь эталон, относительно которого мы будем производить сравнение. Поэтому мы брали значения тарифов и пересчитывали их так, чтобы их можно было сравнивать между собой по цене относительно эталона (Reference price в таблицах ниже). В качестве эталона мы остановились на следующей конфигурации:

Тестирование виртуальных серверов, или как выбрать хостинг-провайдера

Б) Метод расчета производительности

В качестве основы мы выбрали дистрибутив Ubuntu (20.04) – это бесплатное ПО со множеством готовых решений, которое позволяет тестировать VDS со множеством параметров, без дополнительных лицензий.

Выбранное программное обеспечение вы можете также установить и использовать на других дистрибутивах Linux (CentOS, Debian, Arch и др.). Давайте рассмотрим утилиты, на которых мы остановились:

1. Процессор Phoronix Test Suite, build-linux-kernel. Phoronix Test Suite – огромный набор тестовых программ под разные задачи, здесь можно найти множество полезных утилит, но мы остановились на build-linux-kernel, которая измеряет скорость сборки ядра Linux. Мы хотели взять утилиту, которая будет выполнять задачи, подобные тому что выполняют многие пользователи регулярно на своих машинах, начиная с простых вычислений, например, установкой и запуском программ, и заканчивая итерациями посложнее – их компиляцией и сборкой.

2. Память Lmbench. Основная особенность данной программы заключается в записи в память блоков разного размера за одну итерацию и способности показать отличия в производительности разных конфигураций на одной и той же аппаратной части. Она измеряет множество значений, из которых мы выбрали пропускную способность памяти при выполнении последовательного чтения данных (Memory read bandwidth), последовательной записи данных (Memory write bandwidth), выборочного чтения и записи данных вместе (Memory partial read/write bandwidth), так как прежде всего именно эти значения отражают способность быстрого доступа к информации в/из памяти.

3. Диски fio. Данная программа выполняет нагрузку на дисковую подсистему, отображая показатели скорости нужного типа операций в IOPS. Мы измеряли значения по чтению, записи, чтению и записи совместно (по соотношению 50/50), руководствуясь параметрами доступа к информации на дисках.

4. Сеть speedtest-cli. Программа измеряет скорость сети. Мы остановились на значении исходящей скорости, так как передача данных клиентам на серверах и VDS происходит гораздо чаще, чем операции скачивания, и этот параметр обычно всегда ниже входящей скорости.

При расчете производительности, мы сталкиваемся с той же проблемой сравнения – показатели нужно привести к общему знаменателю, поэтому мы пересчитываем полученные измерения по отношению к лучшим результатам, которые в данном случае выполняют роль эталона и берутся за 100%. Вынесем их отдельно:

Тестирование виртуальных серверов, или как выбрать хостинг-провайдера

Теперь мы можем уже сравнивать и технические показатели VDS между собой (Score в таблицах ниже).

Примечание: Показатели процессора чем ниже, тем лучше (быстрее вычисляет, требуется меньше времени), у всех остальных параметров - чем выше, тем лучше (отображение производительности: выше сама скорость).

Общий знаменатель

Чтобы объединить показатели производительности и цены, разделим первое значение на второе. (Effective score per в таблицах ниже). Данный показатель отражает то, что мы называем эффективностью VDS (производительность VDS за его стоимость), его мы и будем использовать при сравнении провайдеров в итоговой таблице.

Тестирование виртуальных серверов, или как выбрать хостинг-провайдера

Тестирование

1. Процессор

Программа делает три измерения и высчитывает среднее значение, которое указано в таблице ниже (CPU, PTS). При сильных расхождениях делается до десяти измерений.

Краткая инструкция к установке и тестированию:

wget http://phoronix-test-suite.com/releases/repo/pts.debian/files/phoronix-test-suite_10.0.1_all.deb

apt install gdebi-core

gdebi phoronix-test-suite_10.0.1_all.deb

phoronix-test-suite install build-linux-kernel

phoronix-test-suite run build-linux-kernel

Путь, где хранятся файлы по умолчанию: /var/lib/phoronix-test-suite/test-results/

2. Память

Программа делает множество измерений разных блоков. Чем больше объем памяти, тем больше измерений. Мы остановились на значениях 8-ми блоков от 1 до 134 Мб. При конфигурации в 1 Гб памяти максимальное значение блока достигло 134 Мб, поэтому его мы и взяли за верхний порог. При небольших значениях учитывается только кэш процессора, а так как значение кэша процессоров у всех разное, мы приняли решение начать с 1 Мб, чтобы показать влияние на результаты более качественного железа, но при этом минимизировать зависимость от кэша процессора. Для проверки измерений на сильное влияние кэша процессора мы дополнительно провели сравнение с вычислением среднего значения от трех последних измерений. Зависимость сохранялась и поэтому мы приняли решение остановиться на восьми, чтобы погрешности было меньше:

Тестирование виртуальных серверов, или как выбрать хостинг-провайдера

Далее мы производили расчет среднего значения от восьми измерений (в случае с 512 Мб, бралось среднее из 7 измерений). Вычисляли три таких значения и рассчитывали среднее от них, оно и представлено в таблице ниже (RAM, Lmbench).

Краткая инструкция по установке и тестированию:

apt install lmbench

mkdir /var/tmp/lmbench

lmbench-run

При каждом запуске будет задан ряд вопросов для настройки тестов (указаны те, что мы использовали): MULTIPLE COPIES [default 1]: 3

Задаем количество одновременно запущенных тестов при использовании нескольких процессоров или ядер.

Job placement selection [default 1]: Определяем способ распределения задач по процессорным ядрам. Если нет особых требований, лучше оставить это системному планировщику (вариант по умолчанию).

MB [default 5562]: 6554

Количество доступной оперативной памяти. Не более 80% от общего количества памяти системы.

SUBSET (ALL|HARDWARE|OS|DEVELOPMENT) [default all]: Выбор используемого набора тестов: все, оборудование, операционная система, разработка.

FASTMEM [default no]: yes

Включение режима быстрой проверки памяти. В нем используется упрощенное измерение задержек ОЗУ (шаг данных при тестировании начиная с 128 байт). При размере кэша процессора больше 128 байт, тестирование с меньшим шагом бессмысленно.

SLOWFS [default no]: Включение режима проверки медленных файловых систем. При тестировании жестких дисков с древними файловыми системами процесс может затянуться и там эта опция нужна. При тестировании ОЗУ не используется.

DISKS [default none]: Указание тестируемых жестких дисков (/dev/sda и т.д.). По умолчанию тестирование выключено. Нас интересует только ОЗУ.

REMOTE [default none]: Настройка тестирования сети. По умолчанию выключено.

Processor mhz [default 1800 MHz, 0.1402 nanosec clock]: 2200

Задание частоты процессора. Определяется тестом автоматически, однако, не всегда верно. Если значение по умолчанию не соответствует реальности, указываем частоту вручную.

FSDIR [default /var/tmp/lmbench]: Задание папки для временных файлов, необходимых при тестировании. Свободного места на диске с этой папкой должно быть не меньше указанного выше количества доступной оперативной памяти и указанная папка должна быть создана юзером вручную, иначе тест выдаст соответствующую ошибку.

Status output file [default /dev/tty]: Место назначения для вывода сообщений в процессе выполнения тестов. По умолчанию - консоль.

Mail results [default yes]: no

Отправка результатов в онлайновую базу данных. Путь, где хранятся файлы по умолчанию: /var/lib/lmbench/results/

3. Диски

Здесь мы вычисляли среднее значение трех измерений каждого типа данных. Полученные значения по трем типам данных складывали вместе и вычисляли уже среднее значение, оно и указано в таблицах ниже (Storage, Fio).

Допущение: для конфигурации машины с 512Мб у RUVDS использовался iozone, т.к. fio бы заблокирован с их стороны, измерения проводились аналогичным образом.

Краткая инструкция по установке и тестированию:

apt install fio

Для смешанных операций записи и чтения по 50%:

fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=fiotest --filename=testfio --bs=4k --iodepth=64 --size=8G --readwrite=randrw --rwmixread=50

Для операций чтения:

fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=fiotest --filename=testfio --bs=4k --iodepth=64 --size=8G --readwrite=randread

Для операций записи:

fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=fiotest --filename=testfio --bs=4k --iodepth=64 --size=8G --readwrite=randwrite

Вы можете записывать эти данные в файл, например, дописывая > disk в конце каждой команды.

4. Сеть

Здесь мы определяли среднее значение трех измерений исходящей скорости.

Краткая инструкция по установке и тестированию:

apt install speedtest-cli

speedtest

Вы можете записывать эти данные в файл, например, дописывая > network_speed в конце команды.

Итоговые таблицы результатов с разбивкой по провайдерам

Тестирование виртуальных серверов, или как выбрать хостинг-провайдера

Все значения мы собрали в таблицы, где указаны следующие данные:

а) Конфигурации тарифов

RAM, Gb – количество оперативной памяти в Гб

vCPU, Cores – количество виртуальных ядер процессора

Storage, GB – объем жесткого диска в Гб

Network Out, Gbit/s – исходящая скорость интернет соединения в Гбит/с

Price, $ – стоимость услуги в долларах (по курсу 1$ = 77 рублей)

б) значения измерений

RAM, Lmbench – производительность памяти

CPU, PTS – производительность процессора

Storage, Fio – производительность дисков

Network, Speedtest – производительность сети

в) расчетные данные

Reference price, $ – нормализованная стоимость услуги по эталону в долларах;

Score - приведенная производительность, в сотых долях (%);

Effective score per $ – эффективность VDS (производительность за стоимость).

Исследование помогло и нам самим провести работу над ошибками. Скорректировали цены по некоторым позициям (в сторону снижения), что порадовало потребителей.

Важное замечание: материал предлагает, если так можно сказать критически подойти к выбору провайдера и конкретной конфигурации виртуальной машины. Цены могут со временем меняться, поэтому не стоит делать упор на то, что сейчас у той или иной компании услуга стоит дороже или дешевле. Мы предлагаем методологию, которая со временем не утратит свою актуальность. Более того, на ее основе вы сможете выработать свое практическое пособие (будем рады, если поделитесь им с нами или в комментариях). Эту мысль мы также подчеркиваем и в резюме, поскольку считаем ее крайне важной.

Приведем пример с полученными данными нашей компании:

Тестирование виртуальных серверов, или как выбрать хостинг-провайдера

Остальные данные 12-ти компаний можно посмотреть по ссылке

Тестирование виртуальных серверов, или как выбрать хостинг-провайдера

Выводы

В итоге мы построили таблицу, где сравнили все результаты по выбранным провайдерам и привели их к читаемому виду:

Тестирование виртуальных серверов, или как выбрать хостинг-провайдера

здесь:
RAM, GB – показатель памяти у тарифов провайдеров
AVG – среднее значение четырех расчетных значений Effective score per $ выше 10 во второй степени.

Построим график эффективности по показателю AVG

Тестирование виртуальных серверов, или как выбрать хостинг-провайдера

Получилось три группы: одна из компаний ушла в отрыв, далее пелотон из пяти лидеров и следом догоняющие.
Второе важное замечание №2: Таблица да и вся методика построена из предположения, что каждый параметр имеет равный вес. В том случае, если Вы придаете большее значение, допустим производительности дисков, то картина распределения будет иной. Напомним, что наша задача – поделиться методикой оценки сервисов, поэтому окончательное решение и выводы Вы сделаете сами.
Вывод 1. Из результатов по дискам мы видим, что некоторые провайдеры ограничивают скорость. Скорее всего они это делают для снижения риска нагрузки на дисковую подсистему. Yandex, Ruvds (на начальных тарифах), Leaseweb, Firstvds, REG.RU, Skyhost.

Там где это различие менее заметное, могут использоваться просто разные конфигурации серверов.

Показатели сети не всегда соответствуют или даже приближаются к заявленным значениям. Это говорит об ограничениях на интерфейсах серверов с VDS, или о проблемах в сети провайдера. Также выяснилось, что конкретно speedtest, установленный из репозиториев, может занижать результаты сети. Мы со своей стороны также поработали над этими значениями и теперь можем гарантированно выделить 1 Гбит/с на каждый VDS. Мы не стали менять данные в таблице, чтобы показатели оставались сравнимыми, но отдельно покажем тут что, если производить измерения через speedtest ookla с их сайта, то результат будем иным:

Тестирование виртуальных серверов, или как выбрать хостинг-провайдера

Инструкцию по установке установке можно найти по следующей ссылке

Возвращаясь к началу статьи, покажем ту самую вишенку на торте, на которую мы обращали ваше внимание – вопрос соотношения цены и качества разных конфигураций, можно сравнить результаты первого VDS с первого места и последнего VDS с последнего места, давайте посмотрим, как интересно это сравнение выглядит:

Тестирование виртуальных серверов, или как выбрать хостинг-провайдера

В данном случае мы можем увидеть как раз тот самый пример, когда производительность в Linode даже при таком раскладе, практически везде, существенно выше чем в Skyhost, а цена значительно ниже.

Возьмем еще одно сравнение:

Тестирование виртуальных серверов, или как выбрать хостинг-провайдера

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

Надеюсь что вы найдете в этих таблицах еще много интересного и сможете исследовать информацию самостоятельно при помощи данной методики.

Вывод 2. Из пункта 1 видно насколько важно проводить тестирование перед тем, как брать VDS в аренду. Возможно провайдеры переживают за безопасность. Можно предложить им сделать предварительную привязку ваших банковских карт и сбор паспортных данных. К сожалению, данная процедура доступна не у всех, или есть, но с определенными нюансами, давайте рассмотрим этот вопрос несколько подробнее:

Провайдеры, у кого есть тестовый период:

DO, Yandex, ITSOFT, Ruvds*

* – протестировать диски скорее всего не дадут (у нас было так)

Провайдеры, у которых есть возможность взять поминутную, почасовую или суточную тарификацию:

Linode, Selectel, Sweb**, Beget, REG.RU**

** – оплата за месяц, но можно отказаться через сутки/двое и вернуть средства

Провайдеры, у которых нет тестового периода, но можно менять тариф:

Firstbyte, Firstvds, Skyhost

Провайдеры, у которых тестового периода нет и тариф изменить не получится:

Leaseweb

Таким образом заключаем, что проведение тестов поможет вам исключить ошибки при выборе VDS.

Вывод 3. Наилучшие результаты бенчмарков достигнуты при соотношении x ядер vCPU к xGB RAM. Процессор успевает обрабатывать данные при таком объеме памяти более эффективно. Такая конфигурация не подойдет под все задачи и не выгодна провайдерам, так как не позволяет использовать весь потенциал ресурсов сервера, но обеспечивает лучшую производительность. Также видно, что большее количество ядер CPU не дает прироста при малом количестве памяти (обрабатывать нечего), однако такая конфигурация может использоваться для большого количества вычислений на лету (используется редко). Но большее количество памяти может быть использовано для последовательного доступа к большему количеству приложений.

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

Тестирование виртуальных серверов, или как выбрать хостинг-провайдера

Резюме

Приняв решение хранить данные не в собственной стойке, а в ЦОДе стороннего провайдера, потратьте время не только на обзвон возможных вариантов, но и на небольшое тестирование. Это окупится. Цены на услуги у большинства дата-центров весьма условны (так, к сожалению, принято на рынке). Покупая виртуальную машину, используйте подход, схожий с покупкой обычной машины. Приходя в автосалон вы же не говорите, что вам нужен кузов, четыре колеса и мотор, ну и чтобы скорость была за двести. Без анализа ситуации в автосалоне на сайте хостера вам выдадут типовой вариант:

  • вот вам процессор с одним ядром (один двигатель под капотом – какой двигатель, кто производитель?)
  • вот вам оперативная память 1 Гб (один литр рабочего объема двигателя – а сколько с этого литра можно снять лошадей?),
  • вот вам место под хранение 25 Гб (объем багажника – это на крыше или в салоне?)
  • вот максимальная скорость канала 1 Гбит/с (это скорость автомобиля под уклон и на пустой дороге?)
  • А вот и цена. Что Вам еще нужно?

Нет, так дело не пойдет. Вы же берете в аренду сервер не на неделю, скорее всего вы берете виртуальную машину на долгий срок для хранения и обработки критичных для вашего бизнеса данных. Поэтому потратьте время, протестируйте поставщиков, проведите замеры и выберите лучшего. Заодно и определитесь с конфигурацией. Методика дата-центра ITSOFT – вам в помощь.

Мы давно на рынке, поэтому не боимся поделиться “конфиденциальной” информацией. И да, статья не преследует чисто продажные или рекламные цели. Мы никого не агитируем, как указано выше, мы провели исследование, сделали для себя полезные выводы и делимся ими с заинтересованными людьми.

Фото (c) chevanon
Фото (c) chevanon
1010
14 комментариев

вот чувак иногда пишет хорошие честные статьи. не воду. но вот ответь мне на вопрос, какой смысл в тестировании ВИРТУАЛЬНЫХ услуг ? ладно протестировать процессор, один мощнее другого. но виртуальные услуги, облака, прочее - сегодня они показывают одни показатели. через день уже другие, потому что на этих же нодах уже появились новые соседи по нагрузке. неужели кто-то в мире поверит в тесты виртуалок или облаков ? протестировать разве что можно набор побочных сервисов или само юзабилити и удобство управления или заказа. 

2
Ответить

Вы зрите в корень, эта ситуация называется оверселлинг. Но статья не о нем, главная мысль, которая проходит через всю статью - хостеры не показывают все данные о своих виртуальных машинах. Клиенты соответственно вынуждены гадать, а как будет работать сервис? Для того, чтобы этого гадания не было - протестируйте несколько хостеров. Мы даем методику тестирования. Будем рады, если протестируете и нас.

2
Ответить

Норм тесты, не разу не палёвые ) сами протестировали, сами себя записали в число лидеров, не самый топ, конечно, а то было бы совсем подозрительно ) Молодцы ) 

Ответить

(Откроем секрет, нам методика самим помогла улучшить некоторые услуги по параметру цена-качество. Так что методика ценна и для нас, и для клиентов, и для других хостеров).

1
Ответить

Сделайте лучше ) 

1
Ответить