Пять российских VPS на Linux: fio, sysbench и типичные ошибки измерений
Обзоров виртуальных серверов немало, однако многие из них используют Windows-утилиты и ограничиваются сравнением одной-двух цифр. Такой подход удобен для быстрого рейтинга, но плохо отвечает на главный вопрос: что именно было измерено - физический накопитель, оперативная память, кэш гипервизора или искусственный лимит провайдера?
Задача этого тестирования была практичнее. Нужен набор Linux-инструментов, который можно запустить по SSH на любом VPS, а затем понять происхождение каждого результата. В процессе выяснилось, что красивые показатели не всегда имеют отношение к заявленной характеристике. Поэтому ниже сначала описаны стенд и методика, затем разобраны ошибки, а после приведены результаты и ограничения интерпретации.
Участники тестирования
Все параметры определялись непосредственно внутри виртуальных машин с помощью `lscpu`, `free`, `lsblk`, `systemd-detect-virt` и данных из `/etc/os-release`.
| Провайдер | CPU | Гипервизор | Ядра | RAM | Диск | ОС |
|---|---|---:|---:|---:|---:|---|
| SmartApe | Intel Xeon Processor (Cascadelake) | KVM | 4 | 1,9 ГБ | 40 ГБ | Ubuntu 26.04 LTS |
| IHC.host | Intel Xeon Processor (Cascadelake) | KVM | 4 | 7,8 ГБ | 75 ГБ | Ubuntu 24.04.4 LTS |
| Cloud4U | Intel Xeon Gold 6248, 2,50 ГГц | VMware | 32 | - | - | Ubuntu 22.04.2 LTS |
| RUVDS | Intel Xeon Gold 6152, 2,10 ГГц | Hyper-V | 3 | 3,8 ГБ | - | Ubuntu 24.04 LTS |
| Reg.ru | Intel Xeon Processor (Icelake) | - | - | - | - | Ubuntu 24.04.3 LTS |
Тип накопителя - единственный параметр, который не измерялся изнутри ВМ, а был взят из описания тарифов. Виртуальная машина не может достоверно определить, на каком именно физическом носителе находятся её блоки данных: внутри гостя виден виртуальный диск, а не реальная модель SSD или NVMe.
Для каждого хоста выполнялись три полных прохода тестовой батареи. Это были не три последовательных повтора одной команды, а три круга с паузой 20 секунд между отдельными тестами. Итоговым значением стала медиана. Такая схема снижает влияние кратковременной нагрузки соседних виртуальных машин, хотя трёх измерений недостаточно для полноценной статистической оценки.
Использовались штатные версии программ из репозиториев соответствующих систем. Версии специально не выравнивались: цель состояла в проверке конфигурации "из коробки". Для дисковых тестов применялся `fio`, для CPU и памяти - `sysbench`, для криптографических операций - `openssl speed`. В частности, корректная команда для SHA-256 в OpenSSL 3.x выглядит так:
```bash
openssl speed -seconds 10 sha256
```
Параметры должны располагаться до названия алгоритма, иначе программа может воспринять `-seconds` как имя алгоритма.
Первая проблема: `/tmp` может оказаться оперативной памятью
Обычно тестовый файл создают в `/tmp`, но это опасная привычка. На SmartApe каталог `/tmp` был смонтирован как `tmpfs` размером около 981 МБ. Следовательно, данные записывались не на виртуальный диск, а в RAM.
Предварительный запуск fio показал примерно 2,5 ГБ/с. Результат выглядел убедительно для быстрого NVMe, однако на самом деле измерялась скорость оперативной памяти: файл размером 256 МБ полностью помещался в `tmpfs`.
Проверка остальных машин показала, что только один из пяти VPS имел такой `/tmp`. На остальных использовался дисковый раздел ext4. Поэтому тестовый файл был перенесён в `/var/tmp`, а в скрипт добавлена проверка файловой системы:
```bash
stat -f -c %T /tmp
```
Если каталог относится к `tmpfs` или `ramfs`, дисковый тест должен завершаться с ошибкой. Это надёжнее, чем обнаруживать подмену уже после публикации результатов. Подробное описание методики и подобных ловушек можно найти в материале о тестировании [VPS серверов Linux в России](https://habr.com/ru/articles/1066584/?utm_campaign=1066584&utm_source=habrahabr&utm_medium=rss).
Вторая проблема: `--direct=1` не исключает кэш гипервизора
Параметр `--direct=1` в fio отключает файловый кэш внутри гостевой операционной системы. Но он не заставляет гипервизор каждый раз обращаться к физическому накопителю. Если кэширование выполняется на уровне хоста, виртуальная машина не может отключить его изнутри.
Особенно показателен файл размером 1 ГБ. Если на физическом сервере достаточно свободной памяти, первый проход действительно читает данные с хранилища, а последующие получают их из кэша хоста. В результате последовательные чтения могут выглядеть значительно быстрее, чем реальная подсистема хранения.
Для выявления такого эффекта добавлялась контрольная серия с файлом размером 6 ГБ. Она не устраняет кэш полностью, но увеличивает вероятность того, что набор данных не поместится в доступную область кэша. Сопоставление результатов на 1 и 6 ГБ помогает отличить стабильную производительность диска от ускорения, возникшего из-за повторного чтения одних и тех же блоков.
Третья проблема: слишком ровные показатели
Идеально одинаковые результаты не всегда говорят о высоком качестве VPS. Иногда это признак жёсткого лимитера. Если несколько запусков подряд выдают почти идентичные значения, стоит проверить, не ограничивает ли провайдер дисковые операции, CPU или сетевые ресурсы фиксированным потолком.
Реальная виртуальная инфраструктура обычно демонстрирует небольшие колебания: меняется активность соседей, состояние кэшей, планирование потоков и нагрузка на хранилище. Полностью ровная линия может быть результатом не стабильности, а программного ограничения.
Что измерялось
Дисковая часть включала четыре профиля, близких к распространённым сценариям CrystalDiskMark: последовательное чтение и запись, случайное чтение и запись. Для записи использовались параметры `--rw=write` и `--rw=randwrite`. Помимо файла на 1 ГБ выполнялась контрольная серия на 6 ГБ.
CPU и память проверялись с помощью sysbench. Эти тесты позволяют оценить не только условную мощность виртуального процессора, но и заметить различия в частоте, планировании потоков и доступной пропускной способности памяти. Результаты нельзя напрямую превращать в рейтинг физических серверов: VPS может получать разную долю ресурсов в зависимости от политики гипервизора.
Отдельно запускались криптографические операции OpenSSL и тест архиватора. Такие нагрузки полезны для практического сравнения: шифрование встречается в TLS, VPN и базах данных, а сжатие - в резервном копировании, логировании и сборке пакетов. При этом версии OpenSSL заметно влияют на результат, поэтому сравнение нужно делать с учётом установленного программного стека.
Как читать результаты
Показатели fio характеризуют не "скорость сервера вообще", а поведение конкретной виртуальной дисковой подсистемы при определённом размере файла, глубине очереди и типе нагрузки. Низкая скорость случайной записи не обязательно означает плохой VPS: это может быть следствием ограничений IOPS или особенностей общего хранилища.
CPU-бенчмарки также требуют осторожности. Виртуальные ядра могут работать на разных физических процессорах, а заявленное количество vCPU не гарантирует аналогичную долю вычислительного времени. Важнее смотреть на медиану нескольких запусков и разброс между ними.
При выборе тарифа полезно учитывать не только показатель "виртуальный сервер Linux цена". Существенны гарантии по CPU, тип диска, лимиты IOPS, объём RAM, условия резервного копирования и доступность технической поддержки. Поэтому запрос "облачный VPS сервер купить" лучше рассматривать как выбор конфигурации под конкретную задачу, а не как поиск максимальной цифры в одном тесте.
Практические выводы
Для веб-сервера с небольшим числом запросов важнее стабильность и достаточный объём памяти, чем пиковая скорость последовательного чтения. Для базы данных критичнее задержки и случайные операции, а для CI/CD, компиляции и архивирования - производительность CPU и скорость работы с большим количеством файлов.
Перед тем как оформить аренду VPS Linux в России, стоит самостоятельно проверить файловую систему каталогов `/tmp` и `/var/tmp`, наличие swap, реальный объём памяти и тип виртуализации. Полезно также повторить тесты в разное время суток: это выявляет зависимость от нагрузки на узел.
Единого варианта, который можно безоговорочно назвать "лучший VPS хостинг в России", не существует. Для одного проекта решающей будет цена, для другого - география дата-центра, для третьего - гарантированные ресурсы и возможность быстро увеличить дисковое пространство. Корректное сравнение начинается не с красивой таблицы, а с одинаковой методики и понимания того, что именно показывает каждая команда.
Главный вывод эксперимента прост: бенчмарк измеряет не намерение автора команды, а всю цепочку между программой и физическим ресурсом. `/tmp` может оказаться RAM, `--direct=1` - не обойти кэш гипервизора, а идеально ровные значения - скрыть лимитер. Поэтому публиковать имеет смысл не только итоговые числа, но и условия теста, размеры файлов, версии утилит, типы файловых систем и ограничения виртуальной среды.


