Как настроить систему для лучшей производительности
В этом разделе содержатся общие рекомендации для достижения максимальной производительности системы.
Масштабирование
В случае, когда нагрузка возрастает, для стабилизации работы
предусмотрено масштабирование следующих сервисов в ручном режиме:- image-api-deepfake-estimator: сервис используется для оценки наличия признаков использования технологии DeepFake.
- image-api-quality-assessment-estimator: сервис используется для оценки качества изображения лица.
- image-api-liveness-estimator: сервис используется для детекции лиц и оценки принадлежности лица на изображении реальному человеку.
- image-api-age-estimator: сервис используется для оценки возраста человека по изображению лица.
- image-api-gender-estimator: сервис используется для оценки пола человека по изображению лица.
- image-api-face-detector-template-extractor: сервис используется для построения поискового биометрического шаблона лица.
- image-api-face-detector-face-fitter: сервис используется для детекции лиц и определения антропометрических точек лица.
- video-recorder-video-recorder: сервис для сохранения видео.
Для масштабирования сервиса необходимо выполнить следующую команду:
$ kubectl scale deployment <SERVICE_NAME>-dep --replicas <COUNT>
где <SERVICE_NAME> — наименование сервиса (например, lrs-lrs), а <COUNT> — количество экземпляров сервиса.
Принципы масштабирования
Входная нагрузка зависит от настроек веб-компоненты. Далее подробно описаны параметры и их влияние на нагрузку.
Во всех последующих разделах входящая нагрузка будет обозначаться как A. A измеряется в запросах в секунду (RPS).
Количество референсных кадров
Чем больше референсных кадров, тем выше нагрузка на сервис image-api-quality-assessment-estimator и image-api-face-detector-face-fitter (далее — сервисы первичной обработки), так как каждый кадр проходит через них.
Из всех обработанных кадров выбираются 3 лучших по качеству. Эти кадры дополнительно обрабатываются сервисами image-api-deepfake-estimator и image-api-liveness-estimator (далее — сервисы вторичной обработки).
Таким образом, при стандартной настройке в 10 референсных кадров каждая сессия генерирует:
- 10 запросов к каждому сервису первичной обработки и
- 3 запроса к каждому сервису вторичной обработки.
Если референсных кадров меньше трёх, нагрузка на сервисы первичной и вторичной обработки будет одинаковой. Например, при 2 кадрах каждый сервис обеих групп получит по 2 запроса.
Для минимальной задержки обработки при количестве референсных кадров B сервисы масштабируются следующим образом:
- Количество реплик каждого сервиса из группы первичной обработки = A * B.
- Количество реплик каждого сервиса из группы вторичной обработки = A * min(B, 3)
Примеры масштабирования, где RPS и количество референсных кадров различаются:
| RPS \ Количество референсных кадров | 1\10 | 2\10 | 1\5 | 1\1 | 2\1 | 1\2 |
|---|---|---|---|---|---|---|
| image-api-quality-assessment-estimator | 10 | 20 | 5 | 1 | 2 | 2 |
| image-api-face-detector-face-fitter | 10 | 20 | 5 | 1 | 2 | 2 |
| image-api-liveness-estimator | 3 | 6 | 3 | 1 | 2 | 2 |
| image-api-deepfake-estimator | 3 | 6 | 3 | 1 | 2 | 2 |
Количество и длительность проверок с записью видео на сессию пользователя
Количество проверок с видео настраивается параметрами записи видео контроля движений. Длина видео зависит от пользователя и требует расчётов на основе реальных данных.
Чем больше суммарная длительность видео, тем выше пиковая нагрузка на сервис video-recorder-video-recorder. Например, при нагрузке 1 RPS и сессиях с видеопроверкой длиной в 1 минуту одновременно будет происходить до 60 активных сессий записи.
Если используется настройка WebCodec, нагрузка ложится на процессы сервиса video-recorder-video-recorder. Их количество задаётся параметром decoder.decoding_process_count в файле ./cfg/video-recorder.values.yaml. Один процесс выдерживает до 20 параллельных сессий записи через WebCodec без заметного замедления. Рекомендуется масштабировать сервис, а не только увеличивать число процессов в конфигурации.
Формула масштабирования при длительности видео B секунд и количестве процессов C:
- Количество реплик сервиса video-recorder-video-recorder = A * B / C
Примеры масштабирования сервиса video-recorder-video-recorder с зафиксированым числом процессов, равным 5:
| RPS \ Суммарная длинна в секундах видео проверок в каждой сессии | 1\60 | 2\60 | 1\120 |
|---|---|---|---|
| video-recorder-video-recorder | 1 | 2 | 2 |
При использовании настройки MediaRecorder процессы сервиса video-recorder-video-recorder не задействуются, и масштабирование не требуется.
Для обработки видео контроля движений используется только сервис video-recorder-video-recorder.
Факторы, не зависящие от конфигурации веб-компоненты
Некоторые факторы нагрузки не связаны с настройками компоненты. В конце каждой сессии, независимо от того, регистрация это или авторизация, изображение обрабатывается сервисами:
- image-api-gender-estimator
- image-api-age-estimator
- image-api-face-detector-template-extractor
Для сервисов image-api-gender-estimator и image-api-age-estimator допускается масштабирование в половину нагрузки. Количество реплик равно: A / 2.
Сервис image-api-face-detector-template-extractor масштабируется 1 к 1. Количество реплик равно: A.
Примеры количества реплик сервисов, где RPS варьируется:
| RPS | 1 | 2 | 6 |
|---|---|---|---|
| image-api-gender-estimator | 1 | 1 | 3 |
| image-api-age-estimator | 1 | 1 | 3 |
| image-api-face-detector-template-extractor | 1 | 2 | 6 |
Для сохранения параметров масштабирования откройте файлы ./cfg/platform.values.yaml, ./cfg/image-api.values.yaml, ./cfg/lrs.values.yaml и ./cfg/video-recorder.values.yaml найдите поле replicas в блоке сервиса и укажите новые значения реплик.
При следующих установках сервисы будут автоматически масштабироваться до указанных значений.