Как мы измеряем
Цифры, которые этот сайт приводит как измеренные, получены на физическом сервере с тем же процессором, что и в наших продакшн-серверах: сон, пробуждение и снимок, а также бенчмарк CPU. Здесь каждая из них — с машиной, датой, способом замера и местом, где лежат сырые результаты.
- Физический сервер. Целая физическая машина, а не виртуальная на чужой, поэтому её не делит с нами ничего, чего мы не видим.
- Медианы и разброс. Срединное значение многих прогонов, а рядом — 95-й перцентиль и число прогонов.
- Лучший случай так и назван. Большинство замеров шло, когда машина больше ничем не была занята; где это так, страница об этом говорит.
- Сырые результаты сохранены. У каждой цифры указан файл, из которого она взята, — в репозитории, рядом с кодом, который её получил.
Сон, пробуждение и снимок
- Машина
- Cherry Servers, Сингапур: AMD Ryzen 9 9950X (Zen 5, 16 ядер), 128 GB, Ubuntu 26.04.1, ядро 7.0.0-34
- Дата
- 3 октября 2026 г.
- Песочница
- песочница 4 vCPU / 8 GiB, node:24-bookworm
- Узел
- sandboxd с настройками того дня по умолчанию: пропатченный Firecracker, память в два слоя, процесс наготове для каждой спящей песочницы, устройства на PCI
- Клиент
- на той же машине, по одному постоянно открытому соединению, так что цифра — это сам запрос, а не рукопожатие
| Что | Как замерено | Медиана | p95 | Прогоны | Источник |
|---|---|---|---|---|---|
| Усыпление | POST …/sleep с точки зрения клиента | 2.3 мс | 2.8 мс | 30 | wake.txt cycle sleep |
| Пробуждение после самостоятельного засыпания | собственный замер узла на восстановление (его заголовок Server-Timing), для следующего вызова | 3.5 мс | 3.9 мс | 29 | wake.txt auto wake |
| Ответ на этот вызов | весь разбудивший запрос, от отправки до ответа | 6.7 мс | 7.1 мс | 29 | wake.txt auto call |
| Пробуждение сразу после усыпления | процесс, который держат наготове для следующего пробуждения, ещё запускается, поэтому вызов ждёт | 5.6 мс | 6.3 мс | 30 | wake.txt cycle wake |
| Снимок работающей песочницы | через API: память, процессы и диск, на ходу | 32 мс | — | 4 | snapshot.txt 31.5 to 31.9 ms |
| Создание из пула | копия уже работающего шаблона | 1.3 мс | — | 100 | tti-sequential.txt create median |
| Создание до ответа на первую команду | сто раз подряд | 11.0 мс | 12.0 мс | 100 | tti-sequential.txt sequential x100 |
| 30 сразу: все уснули | тридцать песочниц усыпляются одновременно, замер — до последней | 49.0 мс | — | 1 | wake.txt concurrent 30 sleep_all |
| 30 сразу: все проснулись | те же тридцать будятся одновременно, замер — до последней | 61.4 мс | — | 1 | wake.txt concurrent 30 wake_all |
Файлы лежат в sandboxd/bench/results/2026-10-03-s3-ryzen9950x/4c8g-layers-final/; отчёт — sandboxd/bench/results/README.md, раунд 2, раздел 二. Остальные страницы сайта берут цифры сна и пробуждения (3.5 мс на пробуждение, 2.3 мс на засыпание) из того же файла, что и эта таблица, так что это цифры этого раунда. Снимок сверили постранично со всей памятью, которую Firecracker записал сам: из 2 097 152 страниц различались 3 байта одной страницы.
Ту же цифру можно увидеть для своих песочниц: каждый вызов API, которому пришлось разбудить песочницу, сообщает в заголовке Server-Timing: wake;dur=…, сколько миллисекунд это заняло.
CPU: открытый бенчмарк StarSling
StarSling публикует открытый бенчмарк провайдеров песочниц (github.com/starslingdev/hpc-sandbox-benchmarks). Его оценка CPU — веб-инструменты Node.js в песочнице с 4 vCPU и 8 GiB, в прогонах в секунду. Мы запустили его набор тестов в песочнице Glac и сравнили результат с провайдерами из последнего опубликованного прогона, который есть в нашей копии его данных.
- Glac, прогонов в секунду
- 29.0
- медиана 13 провайдеров
- 17.26
- быстрее этой медианы
- 68%
Наш результат
- Наш первый продакшн-сервер в Ковентри (Великобритания): AMD Ryzen 9 9950X со 128 GB, 10 октября 2026 г., во время приёмочного тестирования, когда на нём не работала ни одна другая песочница.
- Собственный набор тестов и образ StarSling (
sandbox-benchmarks-toolchain:v8) в песочнице с 4 vCPU и 8 GiB, запущенные так же, как их запускает продукт. - Три прохода набора тестов; каждый проход — медиана трёх его попыток: 28.97, 29.27, 29.00. Итоговая цифра — их медиана, 29.00.
Их результаты
- Прогон StarSling 36498291449: именно его показывал рейтинг 2 октября 2026 г., когда мы сделали копию данных, и это последний из девяти прогонов в этой копии (23–29 сентября 2026 г.).
- Значение провайдера — медиана по его песочницам от медианной попытки каждой песочницы: таково правило самого рейтинга.
- Наша копия хранит каждое значение как отношение к значению одного провайдера в том же прогоне, с точностью до трёх знаков, поэтому каждое значение ниже отличается от значения StarSling не больше чем примерно на 0.02.
Наш результат и 13 значений, прогонов в секунду, по убыванию
29.0 ÷ 17.26 = 1.68, то есть на 68% быстрее медианы. Названия провайдеров есть в опубликованных данных StarSling; значения здесь читаются при сборке из reports/providers/sources/performance-bar/starsling-metrics.tsv, который получен из этих данных скриптом analyse.py, лежащим рядом.
О чём это не говорит
- Наш замер шёл, когда машина больше ничем не была занята; их замеры — при той нагрузке, что была на их хостах в тот день. Занятая машина снижает оценку: на 9950X, где на каждое ядро приходилось 1.25 других занятых vCPU, тот же набор тестов набрал в нашей песочнице 10.4 (8 октября 2026 г.). Эти соседи гоняли тот же тест по кругу — самую требовательную к кешу нагрузку, какая бывает, тяжелее реального парка машин.
- Это один бенчмарк одного вида работы — Node.js, выполняющего инструменты на JavaScript, — и он зависит от скорости ядер. О дисках и сетях он ничего не говорит.
Файлы
sandboxd/bench/results/2026-10-10-cvt-01-accept/: приёмочное тестирование, его сырой вывод иresults.jsonreports/providers/sources/performance-bar/starsling-metrics.tsvreports/providers/sources/performance-bar.md: как копия была сделана и как её читатьsandboxd/bench/results/README.md: разделы 40 и 42
Где лежат сырые результаты
Каждый путь на этой странице — файл в собственном репозитории Glac, рядом с кодом, который сделал замер. Репозиторий не публичный; пути показывают, из какого прогона взята каждая цифра, а отчёт о каждом раунде говорит, что запускали, на чём и что пошло не так.