Вибір апаратного забезпечення
29.12.2022
Вступ
Як запустити 200+ камер на сервері за 300 євро?
Нас часто запитують, а скільки камер можна додати в Yucca на сервері з моїми апаратними ресурсами? Питання завжди індивідуальне, і відповісти на нього шаблонно для всіх неможливо. Багато залежить від типу камер, бітрейту, процесора та інших змінних. Тому ми вирішили зібрати невелику статистику з сервера одного з наших клієнтів, зі скриншотами і докладними поясненнями, щоб кожен міг уявити, скільки ресурсів потрібно саме в його випадку...
Схожу статистику ми публікували про запуск на Raspberry Pi 4
Наша інсталяція
Отже встановлена Юкка версії 0.7.2, і підключено 154 камери, майже 4 роки глибина архіву, бітрейт потоку з камер у районі 1M (мегабіт на секунду). Окрім Юкки, на цьому ж сервері встановлено postgresql, власне як база даних.
(Якщо хочете такий самий дашборд, інструкція доступна за посиланням)
Які ж під усе це використовуються ресурси і скільки їх утилізується?
Материнська плата (Motherboard)
Z8NR-D12 – це дуже старе шасі, купити таке на вторинному ринку можна приблизно за 200 євро.
скриншот з одного з відомих нам майданчиків
У цьому варіанті, мабуть, не вистачає 2 блоків живлення, але можна пошукати аналогічні шасі, наприклад, від Supermicro.
Процесор (CPU)
Intel(R) Xeon(R) CPU X5690 @ 3.47GHz – 2 процесори по 12 потоків, у сумі виходить 24. На вторинному ринку такий можна купити за 30 євро за штуку.
CPU – один з найважливіших ресурсів, саме в нього ви завжди будете упиратися при збільшенні кількості потоків. Адже чим більше потоків, тим більше процесів і тим більше нам потрібно процесорного часу. Відповідно найбільше уваги потрібно приділяти навіть не утилізації, як на 1 скриншоті, а LA або Load Average (якщо ви не знаєте, що це таке, читайте тут) 2 скриншот.
Отже подивимось на утилізацію за 24 години, тут є піки, але середня утилізація в районі 30%

На графіку LA за добу ситуація схожа, в районі 30% - 40%

Пам'ятаємо, що це показник на 150 камер, отже сервер заповнений приблизно наполовину і в теорії можна додати ще стільки ж камер, за умови, що камери мають схожий бітрейт.
Ми не рекомендуємо додавати камери на сервери, де LA вже вищий за одиницю. При LA > 1 – це означає, що черга буде весь час зростати і проблеми з обслуговуванням та деградація майже неминучі, потрібно або більше процесора, або ще 1 сервер Юкки. Тому при великій кількості клієнтів і камер завжди в першу чергу візуалізуйте ваші інсталяції в моніторингу і стежте за показниками.
Оперативна пам'ять (RAM)
9965447-034.A00LF – серверна ECC пам'ять на вторинному ринку близько 10 євро за плату.
У нашому випадку 16 гігабайт (по 8 на сокет процесора) – вистачає із запасом у 3 рази і утилізується в районі 4 гігабайт.
Диск
Дисковий масив – тема, що потребує окремої нотатки про те, як робити і як не варто робити, я розповім, як приблизно розрахувати прогнозований обсяг вручну, але ви завжди можете знайти онлайн-калькулятор під ваш бітрейт і тип масиву.
Отже, на цьому стенді наш клієнт розміщує лише публічні камери, і несподівана втрата архіву з цих камер для нього не критична. Тому якщо ваш архів має велику цінність, то не робіть так, як тут описано.
ST10000VN0004-1Z – Seagate IronWolf 10Tb NAS. 4 штуки в конфігурації Raid0 дають 37 терабайт, вартість у районі 200 євро за штуку.
$ df -h | grep yucca
/dev/md0 37T 15T 20T 43% /opt/yucca/data/alloc
$ cat /etc/mdadm/mdadm.conf
DEVICE partitions
ARRAY /dev/md0 level=raid0 num-devices=4 metadata=1.2 name=yucca:0 UUID=xxx
Звичайно, за рахунок того, що це Raid0, ми не відчуваємо взагалі жодних проблем з продуктивністю при записі архіву паралельно з 150 камер, та й з 300 проблем не буде, але й відмовостійкість на нулі, тож тут кожен обирає рішення для себе сам.
Як порахувати, скільки потрібно місця під архів
Припустимо, що у нас є 150 однакових камер з бітрейтом потоку 2M, з яких ми хочемо писати архів глибиною 14 днів:
- 2 мегабіти на секунду, це 2/8 = 0,25 мегабайта
- 0.25 * 60 * 60 = 900 мегабайт за годину
- 900 * 24 = 21600 мегабайт => 21,6 гігабайт на добу з 1 камери
- 21,6 * 14(днів) = 302,4 гігабайт за 14 днів з 1 камери
- 302,4 * 150 = 45360 гігабайт => 45,36 терабайт
Ось така проста калькуляція дозволяє приблизно порахувати, скільки буде займати наш архів. Також варто врахувати, що масиви не варто заповнювати під зав'язку на 99% і хоча б 5-10% краще тримати вільними.
Висновки
Отже, ми маємо шасі + процесори + оперативна пам'ять приблизно за 300 євро і дисковий масив за 400 євро. Разом близько 700 євро за повноцінне робоче рішення з можливістю продавати і надавати послуги клієнтам з місткістю до 300 камер.
Трохи пофантазуємо... Ліцензія на Yucca коштує 40 євро на місяць і ми не маємо лімітів на камери, якщо у вас є сучасне шасі і 10000 камер, ми вас не обмежуємо :) Середній тариф на камеру з архівом на 14 днів у провайдерів зараз коштує ~ 5-7 євро на місяць, тобто 1500 євро на місяць можна заробляти на такому сервері без особливих витрат з окупністю в 1 місяць, щоправда якщо у вас вже є 300 готових клієнтів 🙂
Дякуємо всім, хто дочитав до кінця! Задати питання можна через форми зворотного зв'язку на сайті, написавши на пошту info@yucca.app або в Telegram-чаті спільноти.

