Як спланувати тихий, малоспоживний VPN-сервер, який працює постійно
Тихий VPN-бокс оцінюють за ватами в простої, шумом навантаження і тим, чи лишається він доступним. Виміряйте всю систему в трьох станах, перш ніж купувати деталі.
Простій — це стан, у якому домашній VPN-бокс проводить майже все своє життя, тому саме його варто вимірювати. Та сама машина все одно має відповідати на з'єднання, віддавати файл і завершувати резервне копіювання, поки тунель піднятий, і ці три завдання тягнуть у різні боки. Тиша, мале споживання і постійна доступність — окремі властивості, і специфікація не описує жодної з них. Якщо пройти перевірки нижче по порядку, рішення щодо заліза не перетвориться на переробку через пів року.
Почніть з ролей, а не з деталей
Запишіть кожне завдання, яке бокс має виконувати, поки ніхто не дивиться. Шлюз WireGuard або OpenVPN, файловий сервіс, ціль резервного копіювання і завдання індексації мають різні постійні витрати, і одна машина з усіма чотирма має значно вищий поріг, ніж машина лише з першим. Споживання в простої — це сума цих порогів, а не їхнє середнє. Тому два бокси, обидва описані як малоспоживні, можуть відрізнятися втричі в одній кімнаті.
Раннє рішення про те, чи живуть дані на тому самому хості, що й тунель, обмежує все інше. Окремі хости означають два споживання в простої, але шлюз, який не спить, поки сховище спить; один хост означає одне споживання і один домен відмови. Жоден варіант не помилковий, але відповідь треба записати до появи списку деталей.
Виміряйте весь бокс у трьох станах
Настінний ватметр між розеткою та блоком живлення — єдиний чесний прилад тут, бо він ураховує втрати на перетворення, розкручування дисків і кожен забутий USB-пристрій. Запишіть три числа: простій із піднятим тунелем і без нічого іншого, той самий бокс під час реальної віддаленої передачі та бокс під час запланованого резервного копіювання.
Програмні лічильники допомагають пояснити показ ватметра, але не замінюють його. Інтерфейс RAPL повідомляє енергію пакета й домену пам'яті, що виключає втрати блока живлення і все підключене через USB.
read -r a < /sys/class/powercap/intel-rapl:0/energy_uj; sleep 60; read -r b < /sys/class/powercap/intel-rapl:0/energy_uj
awk -v a="$a" -v b="$b" 'BEGIN{printf "package average: %.1f W\n", (b-a)/60/1000000}'
Шум потребує такого самого підходу. Корпус без вентиляторів прибирає одне джерело і лишає жорсткий диск, блок живлення та гудіння дроселів, тому слухайте під час резервного копіювання, а не на екрані входу. Температура належить до того самого кола: читайте датчики під тривалим навантаженням і ніколи не вимикайте тепловий захист, щоб бокс був тихішим.
Переведіть вати в рік, який можна порівняти
Постійне споживання переводиться в енергію одним множенням, і одноразовий розрахунок позбавляє річні витрати від несподіванки. Ілюстративне середнє 11 Вт за цілий рік рахується так.
awk 'BEGIN{printf "%.1f kWh/year at 11 W\n", 11*24*365/1000}'
Ця цифра — арифметика, а не вимірювання вашого боксу, і тариф, на який ви її множите, зсуває відповідь сильніше, ніж пара ват. Розрахунок корисний для порівняння двох проєктів: шлюз із простоєм 6 Вт проти шлюза з 15 Вт — це рішення, якому можна призначити ціну. Номінальна потужність процесора — не ця цифра, бо вона описує пакет під навантаженням, а не систему в спокої. Використовуйте середнє з настінного ватметра разом із місцевим тарифом і позначайте результат як оцінку.
Вирішіть, чи дозволено сон
Сон економить найбільше енергії й ламає найбільше припущень. Сплячий хост не може прийняти вхідне з'єднання, яке його розбудило б, і клієнтський keepalive цього не змінює; лише постійно ввімкнений пристрій у тій самій мережі LAN може надіслати пакет wake-on-LAN.
Якщо тунель має бути доступним у будь-яку годину, вважайте сон вимкненим політикою і запишіть це в нотатки про складання. Маскування цілей грубе, але воно явне і переживає оновлення пакетів краще за звичку.
systemctl status sleep.target suspend.target
sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target
systemd-inhibit --list
Wake-on-LAN заслуговує окремого рядка в цих нотатках, бо він відмовляє тихо. Функцію треба ввімкнути в прошивці, вона працює лише на деяких інтерфейсах і потребує вже прокинутого пристрою, щоб надіслати пакет. Перевірте її, перш ніж покладатися на неї, а не після подорожі.
Доведіть це під навантаженням, яке він справді побачить
Остання перевірка — та, яку люди пропускають: запустіть передбачене навантаження і годину спостерігайте за боксом. Віддалена передача, резервне копіювання і перебудова індексу одночасно покажуть, чи витримають охолодження, канал і сховище обране поєднання ролей.
uptime
sensors | grep -E 'Core|Package|fan'
ss -s
У тому самому вікні стежте і за каналом доступу, бо вихідна смуга зазвичай обмежує віддалену пропускну здатність значно раніше за процесор. Якщо тунель насичується на частці того, що процесор міг би шифрувати, швидший чіп не купує геть нічого.