Додайте затримку й джитер застосунку
На швидкому локальному з’єднанні все працює. Дайте застосунку пінг 300 мс, і ви дізнаєтеся, які екрани писали так, ніби відповідь приходить миттєво.
Три різні речі
| Налаштування | Що воно робить | Звідки це береться в реальному житті |
|---|---|---|
| Latency | Додає однакову затримку кожному пакету, у мілісекундах. | Відстань. Сервер на іншому континенті або супутник. |
| Jitter | Додає зверху випадкову величину, тож затримка постійно змінюється. | Спільний вайфай, мобільні мережі, усе перевантажене. |
| Стрибки | Епізодичні довгі зависання, що задаються частотою та тривалістю. | Передавання між вежами стільникового зв’язку, маршрутизатор під навантаженням. |
Усі три значення в мілісекундах і можуть працювати разом. Обидві величини затримки приймають будь-що від 0, тож можна піти від правдоподібних 40 мс до абсурдних 60 секунд.
З командного рядка
Стабільні 200 мс із 80 мс джитера, для одного застосунку:
BeanNetworkTester.exe --latency 200 --jitter 80 --target myapp.exe --duration 60
Натомість рідкісні довгі зависання: приблизно один пакет із двадцяти чекає зайву секунду:
BeanNetworkTester.exe --spike-prob 5 --spike-ms 1000 --target myapp.exe
Цифри, які варто спробувати
- 40 мс: сервер у тій самій країні. Нічого не повинно змінитися.
- 150 мс: інший континент. Усе, що багато розмовляє, починає здаватися повільним, бо кожен обіг туди й назад коштує часу.
- 600 мс і більше: геостаціонарний супутник або вайфай у літаку. Тут застрягають індикатори прогресу й нарешті спрацьовує логіка повторних спроб.
Готові профілі містять виміряні значення: «Distant server (another continent)», «Satellite (low orbit)», «Satellite (geostationary)», «In-flight Wi-Fi», «LTE / 4G».
Вимірювання: дивіться на найгірший випадок, а не на середнє
Джитер ледве рухає середнє й ледве рухає медіану. Запуск із 30 мс джитера та запуск без нього можуть повідомити майже однаковий «типовий» пінг, хоча відчуваються цілком по-різному.
Натомість порівнюйте 95-й перцентиль із медіаною. Різниця між ними і є джитером, і саме вона робить голосовий дзвінок уривчастим, а гру неграбельною, тоді як середнє ще виглядає нормально.