Чи розряджає VPN батарею? Що радіо вже й так робило
Шифрування — лише мала частина рахунку. Відокремте передачу, пробудження радіо та перепідключення, а тоді порівняйте два запуски, що різняться однією річчю.
Скарга на розряд батареї зазвичай звучить як «VPN з’їдає мою батарею», а це висновок, а не спостереження. Вимірювання показує, що пристрій займала суміш передач, пробуджень радіо та перепідключень. Шифрування додає свій внесок у цей рахунок, і на сучасному телефоні воно рідко буває найбільшим рядком. Відокремте три складові, і скарга стане тим, що справді можна перевірити.
Що тунель додає до шляху пакета
Кожен пакет, який несе тунель, автентифікується, шифрується, загортається в ще один заголовок і розгортається на іншому кінці. Ця робота коштує циклів процесора і, що важливіше, довше тримає мережевий інтерфейс зайнятим, ніж це робила б сама корисна навантага. Резервна копія, що йде через тунель десять хвилин, залишається десятихвилинною копією з трохи більшими накладними витратами на пакет. Байти й тривалість беруться з застосунку, а не з тунелю.
Тому відсоток у звіті про батарею — поганий орієнтир для накладних витрат. Звіт приписує роботу компонентам, а правила приписування різняться між платформами.
Читайте звіт поруч із мережевим лічильником і часом увімкненого екрана. Коли вікно передачі збігається з вікном розряду, навантаження пояснює результат, а протокол відходить на другий план. Коли розряд триває, а лічильники стоять на місці, щось тримає радіо в стані неспання, і наступний розділ — місце, де треба шукати.
Keepalive, перепідключення та неспання радіо
Екран, що виглядає бездіяльним, не доводить бездіяльну мережу. Синхронізація, повідомлення й перевірки оновлень усі надсилають невеликі обсяги трафіку, і кожен із них може вивести радіо зі стану низького споживання на значно довше, ніж триває сам обмін. Малий частий трафік дорогий на байт, бо домінує фіксована вартість.
Тунель додає власний малий трафік у вигляді keepalive, які існують, щоб тримати відкритим зіставлення NAT або помічати зниклого партнера. Їхнє призначення залежить від протоколу й мережі, і вимкнення може зменшити активність, але залишити тунель непридатним після періоду простою. Якщо ви перевіряєте інше значення, запишіть початкове й переконайтеся, що тунель після цього все ще відновлюється. Ніколи не переносьте інтервал з іншого протоколу, бо константа, що пасує одному проєкту, в іншому довільна.
Друга витрата — зміна з’єднань. Клієнт, що перепідключається кожні кілька хвилин, витрачає час на рукостискання замість корисного навантаження, і радіо так і не отримує шансу заспокоїтися.
Коли платформа зупиняє тунель, щоб заощадити енергію
Мобільні операційні системи обмежують фонове виконання, і тунель не є винятком із цієї політики. З’єднання, що зникає після вимкнення екрана, зазвичай є проблемою інтеграції з платформою, а не сервера, що відхиляє сеанс. Власні рекомендації клієнта щодо батареї — це місце, з якого варто почати, бо вони описують підтримуваний спосіб залишатися на зв’язку під час сну.
Звільнення всього від керування енергією — не рішення. Воно створює інше навантаження і руйнує порівняння, яке ви намагалися зробити.
Далі вирішіть, що має відбуватися, коли пристрій спить, бо постійна робота, блокування без тунелю й оптимізація батареї відповідають на три різні питання. Налаштування, яке заощаджує енергію, тихо відкидаючи потрібне покриття, не зберегло початкову мету, а приховало збій. Запишіть заплановану політику, перш ніж щось налаштовувати. Без цього ви обираєте між тунелем, що розряджає, і тунелем, якого просто немає, і кожен результат називаєте успіхом.
Побудуйте порівняння замість переконання
Порівнюйте зіставне: те саме завдання, та сама мережа, та сама тривалість, схожий сигнал. Записуйте передані дані, кількість перепідключень, температуру пристрою й умови сигналу, бо кожен із цих чинників може сам зсунути результат. Кілька відсотків батареї за годину — це в межах шуму більшості телефонів, а відтворювана картина на кількох запусках — ні. Настанови щодо Android VPN описують життєвий цикл і поведінку постійного підключення, яких дотримується грамотний клієнт; це корисний контекст, коли якийсь клієнт цього не робить.
Перенесіть необов’язкові великі передачі на момент, коли і енергія, і мережа дешеві.
Далі дійте за тим, що показало порівняння. Якщо це пояснює навантаження, плануйте навантаження. Якщо це пояснює зміна з’єднань, виправте мережевий перехід, що її спричиняє. Якщо це пояснює платформа, дотримуйтеся підтримуваної політики батареї для цього клієнта. Ослаблення криптографічних налаштувань — єдина зміна, яка покращує число, не торкаючись причини, тому саме до неї слід вдаватися в останню чергу.