System Requirements

To calculate the FindFace Enterprise Server host(s) characteristics, use the requirements provided in this chapter.

Tip

Be sure to learn about the FindFace Enterprise Server architecture first.

In this chapter:

Basic Configuration

Important

If the resolution of a camera(s) in use is more than 1280x720px, it is strongly recommended to use the GPU-accelerated package findface-video-worker-gpu.

Important

The face liveness detection can be enabled only on the GPU-accelerated video face detector findface-video-worker-gpu.

  Minimum Recommended
CPU Intel Core i5 CPU with 4 physical cores 2.8 GHz Intel Xeon E5v3 with 6 physical cores, or higher or similar CPU
The own needs of FindFace Enterprise Server require 2 cores HT > 2.5 GHz. The characteristics also depend on the number of cameras in use. A single camera 720p@25FPS requires 2 cores >2.5 GHz. AVX2 support. 6th-8th generation Intel® Core™ and Intel® Xeon®
GPU (optional) Nvidia Geforce® GTX 1050 Ti with 4Gb RAM (only for running findface-extraction-api gpu-package with elderberry_160, not enough for findface-video-worker-gpu). Nvidia Geforce® GTX 1080+ with 8+Gb RAM
Supported series: GeForce (from Pascal architecture), Tesla (from Pascal architecture and Volta v100)
RAM 10 Gb 16+ Gb
The own needs of FindFace Enterprise Server require 8 Gb. The RAM consumption also depends on the number of cameras in use. A single camera 720p@25FPS requires 2 GB RAM
HDD 16 Gb 16+ Gb
The own needs of the operating system and FindFace Enterprise Server require 15 GB.
Operating system Ubuntu 16.04 x64 only

Tip

For more accurate hardware selection, consult the FindFace Enterprise Server resource consumption and performance benchmark results.

Benchmark Results

Here you can see the FindFace Enterprise Server resource consumption and performance benchmark results. Use these data to select your hardware configuration.

Note

RAM usage and performance may slightly vary from test to test.

Warning

Strictly not recommended to use face/elderberry_160 for work.

Testing Setup

Package versions:

  • findface-extraction-api-cpu 2.6.999.1910+261.gebb8df6
  • findface-extraction-api-gpu
  • findface-video-worker-cpu 2.6.999.1910+261.gebb8df6
  • findface-video-worker-gpu
  • findface-tarantool-server 2.6.999.1910+261.gebb8df6

Hardware:

  • Processor: Intel Core i5-8400 @ 3.60GHz (6 Cores)
  • Motherboard: ASUS PRIME H370M-PLUS
  • Memory: 2 x 8192 MB DDR4-2400MHz
  • Graphics: Gigabyte NVIDIA GeForce GTX 1060 6GB

Software:

  • OS: Ubuntu 16.04, Kernel: 4.15.0-29-generic (x86_64)
  • Screen Resolution: 1920x1200

CPU performance:

sysbench 0.4.12:  multi-threaded system evaluation benchmark

Running the test with following options:
Number of threads: 1

Doing CPU performance benchmark

Threads started!
Done.

Maximum prime number checked in CPU test: 10000


Test execution summary:
    total time:                          9.1128s
    total number of events:              10000
    total time taken by event execution: 9.1112
    per-request statistics:
         min:                                  0.82ms
         avg:                                  0.91ms
         max:                                  1.47ms
         approx.  95 percentile:               1.02ms

Threads fairness:
    events (avg/stddev):           10000.0000/0.00
    execution time (avg/stddev):   9.1112/0.00

GPU performance:

Unigine Heaven 4.0:
    pts/unigine-heaven-1.6.4 [Resolution: 1920 x 1080 - Mode: Windowed - Renderer: OpenGL]
    Test 1 of 2
    Estimated Trial Run Count:    3
    Estimated Test Run-Time:      15 Minutes
    Estimated Time To Completion: 29 Minutes
        Started Run 1 @ 17:54:37
        Started Run 2 @ 17:59:15
        Started Run 3 @ 18:03:52  [Std. Dev: 0.29%]

    Test Results:
        86.6473
        86.1475
        86.4553

    Average: 86.42 Frames Per Second


Unigine Heaven 4.0:
    pts/unigine-heaven-1.6.4 [Resolution: 1920 x 1080 - Mode: Fullscreen - Renderer: OpenGL]
    Test 2 of 2
    Estimated Trial Run Count:    3
    Estimated Time To Completion: 15 Minutes
        Started Run 1 @ 18:08:33
        Started Run 2 @ 18:13:09
        Started Run 3 @ 18:17:45  [Std. Dev: 1.37%]

    Test Results:
        87.7017
        89.5186
        90.023

    Average: 89.08 Frames Per Second

Resource Consumption: findface-extraction-api and findface-extraction-api-gpu

RAM usage: findface-extraction-api

Model # instances RAM, MB # instances RAM, MB # instances RAM, MB
face/elderberry_576.cpu 1 3730 2 7450 3 11000
face/elderberry_160.cpu 1590 2800 4050
face/elderberry_576.cpu + features (faceattr/age.v1.cpu, faceattr/beard.v0.cpu, faceattr/emotions.v1.cpu, faceattr/gender.v2.cpu, faceattr/glasses3.v0.cpu) 5568 10800
face/elderberry_160.cpu + features (faceattr/age.v1.cpu, faceattr/beard.v0.cpu, faceattr/emotions.v1.cpu, faceattr/gender.v2.cpu, faceattr/glasses3.v0.cpu) 3473 6250 9400
Features only (faceattr/age.v1.cpu, faceattr/beard.v0.cpu, faceattr/emotions.v1.cpu, faceattr/gender.v2.cpu, faceattr/glasses3.v0.cpu) 2270 3900 5800

RAM usage: findface-extraction-api-gpu

Note

findface-extraction-api-gpu allows only 1 model instance.

Model RAM, MB
face/elderberry_576.gpu ~2200 (up to 4.5 Gb on initialization)
face/elderberry_160.gpu ~850 (up to 1.8 Gb on initialization)
face/elderberry_576.gpu + features (faceattr/age.v1.gpu, faceattr/beard.v0.gpu, faceattr/emotions.v1.gpu, faceattr/gender.v2.gpu, faceattr/glasses3.v0.gpu) ~3100 (up to 6.3 Gb on initialization)
face/elderberry_160.gpu + features (faceattr/age.v1.gpu, faceattr/beard.v0.gpu, faceattr/emotions.v1.gpu, faceattr/gender.v2.gpu, faceattr/glasses3.v0.gpu) ~1871 (up to 4 Gb on initialization)
Features only (faceattr/age.v1.gpu, faceattr/beard.v0.gpu, faceattr/emotions.v1.gpu, faceattr/gender.v2.gpu, faceattr/glasses3.v0.gpu) 1200

Performance: findface-extraction-api and findface-extraction-api-gpu

Speed: findface-extraction-api

Model Time, ms (i5-8400)
face/elderberry_576.cpu 620
face/elderberry_160.cpu 350
face/elderberry_576.cpu + features (faceattr/age.v1.cpu, faceattr/beard.v0.cpu, faceattr/emotions.v1.cpu, faceattr/gender.v2.cpu, faceattr/glasses3.v0.cpu) 655
face/elderberry_160.cpu + features (faceattr/age.v1.cpu, faceattr/beard.v0.cpu, faceattr/emotions.v1.cpu, faceattr/gender.v2.cpu, faceattr/glasses3.v0.cpu) 380
Features only (faceattr/age.v1.cpu, faceattr/beard.v0.cpu, faceattr/emotions.v1.cpu, faceattr/gender.v2.cpu, faceattr/glasses3.v0.cpu) 300

Speed: findface-extraction-api-gpu

Model Time, ms (1060TI)
face/elderberry_576.gpu 240
face/elderberry_160.gpu 225
face/elderberry_576.gpu + features (faceattr/age.v1.gpu, faceattr/beard.v0.gpu, faceattr/emotions.v1.gpu, faceattr/gender.v2.gpu, faceattr/glasses3.v0.gpu) 260
face/elderberry_160.gpu + features (faceattr/age.v1.gpu, faceattr/beard.v0.gpu, faceattr/emotions.v1.gpu, faceattr/gender.v2.gpu, faceattr/glasses3.v0.gpu) 235

Performance: findface-video-worker and findface-video-worker-gpu

CPU/RAM consumption and speed: findface-video-worker

Stream RAM, MB CPU utilization,% (i5-8400 6 cores) Processing speed, FPS* (i5-8400)
1x 720p25FPS 370 230 62
2x 720p25FPS 755 500 56
3x 720p25FPS 1040 580 45
4x 720p25FPS 1437 600 36
5x 720p25FPS 1900 600 24
8x 720p25FPS 2650 600 18
1x 1080p25FPS 502 250 41
2x 1080p25FPS 1023 508 37
3x 1080p25FPS 1529 590 30
4x 1080p25FPS 2031 594 23
1x 720p25FPS + 1x 1080p25FPS 890 453 38
2x 720p25FPS + 2x 1080p25FPS 1750 590 21

Important

If video processing speed is less than the number of FPS in video, it means that the system is running low on resources and the lack of resources causes the video face detector to drop frames. Avoid this situation as it can lead to missing out on faces, instability and potential failures.

To check your resource consumption, execute:

sudo journalctl -f -a -u findface-video-worker | grep dropped

The following lines indicate that the system has less resources than necessary:

findface-video-worker[28882]: [2] 2 frames dropped!
findface-video-worker[28882]: [1] 6 frames dropped!

In this case, consider to change component settings or hardware configuration.

GPU RAM consumption and speed: findface-video-worker-gpu

Stream GPU RAM, MB Processing speed, FPS* (1060TI)
Without streams 600
1x 720p25FPS 656 254
2x 720p25FPS 738 126
4x 720p25FPS 858 63
8x 720p25FPS 1117 30
1x 1080p25FPS 735 202
2x 1080p25FPS 935 96
4x 1080p25FPS 1185 48
8x 1080p25FPS 2650 48
1x 720p25FPS + 1x 1080p25FPS 803 453
2x 720p25FPS + 2x 1080p25FPS 1100 54
4x 720p25FPS + 4x 1080p25FPS 1500 26
8x 720p25FPS + 8x 1080p25FPS 2650 48

Important

If video processing speed is less than the number of FPS in video, it means that the system is running low on resources and the lack of resources causes the video card to accumulate frames in its memory. Avoid this situation as it can lead to instability and potential failures.

To view the current processing speed, execute the following command on the findface-video-manager host console:

curl -s http://127.0.0.1:18810/jobs | jq -r '.[]|("id="+(.id|tostring)+" url="+.stream_url+" FPS="+(.statistic.processing_fps|tostring))'

In the response, you will find each video stream processing speed. For example, enough amount of resources when processing 7 video streams with characteristics h264 (High) ([27][0][0][0] / 0x001B), yuvj420p(pc, bt709), 1920x1080, 25 fps, 25 tbr, 90k tbn, 180k tbc will result in the following response:

id=10 url=http://restreamer.int.ntl/hls/openspace.m3u8 FPS=27.189745
id=5 url=http://restreamer.int.ntl/hls/openspace.m3u8 FPS=27.189854
id=6 url=http://restreamer.int.ntl/hls/openspace.m3u8 FPS=27.589714
id=3 url=http://restreamer.int.ntl/hls/openspace.m3u8 FPS=27.189857
id=4 url=http://restreamer.int.ntl/hls/openspace.m3u8 FPS=27.189857
id=7 url=http://restreamer.int.ntl/hls/openspace.m3u8 FPS=27.389784
id=9 url=http://restreamer.int.ntl/hls/openspace.m3u8 FPS=27.189857

Lack of resources when processing 8 video streams with the same characteristics will give FPS (processing speed) less than the video’s 25 fps:

id=8 url=http://restreamer.int.ntl/hls/openspace.m3u8 FPS=23.772333
id=10 url=http://restreamer.int.ntl/hls/openspace.m3u8 FPS=23.772415
id=5 url=http://restreamer.int.ntl/hls/openspace.m3u8 FPS=23.772339
id=6 url=http://restreamer.int.ntl/hls/openspace.m3u8 FPS=23.372803
id=3 url=http://restreamer.int.ntl/hls/openspace.m3u8 FPS=23.772339
id=4 url=http://restreamer.int.ntl/hls/openspace.m3u8 FPS=23.772339
id=7 url=http://restreamer.int.ntl/hls/openspace.m3u8 FPS=20.775822
id=9 url=http://restreamer.int.ntl/hls/openspace.m3u8 FPS=22.573729

Even smaller values will be registered when processing 10 video streams with the same characteristics:

id=7 url=http://restreamer.int.ntl/hls/openspace.m3u8 FPS=20.380642
id=9 url=http://restreamer.int.ntl/hls/openspace.m3u8 FPS=20.380642
id=2 url=http://restreamer.int.ntl/hls/openspace.m3u8 FPS=20.380646
id=8 url=http://restreamer.int.ntl/hls/openspace.m3u8 FPS=20.380642
id=10 url=http://restreamer.int.ntl/hls/openspace.m3u8 FPS=9.984919e-05
id=5 url=http://restreamer.int.ntl/hls/openspace.m3u8 FPS=20.380642
id=6 url=http://restreamer.int.ntl/hls/openspace.m3u8 FPS=20.380642
id=1 url=http://restreamer.int.ntl/hls/openspace.m3u8 FPS=20.380651
id=3 url=http://restreamer.int.ntl/hls/openspace.m3u8 FPS=20.180836
id=4 url=http://restreamer.int.ntl/hls/openspace.m3u8 FPS=19.581406

Important

If findface-video-worker-gpu processes video streams of equal FPS, the number of processed streams doesn’t severely affect the GPU memory consumption, as all the streams are processed by the same worker. On the other hand, if findface-video-worker-gpu processes video streams of different FPS, it severely increases the memory consumption as different streams have to be processed by different workers.

Examples of Hardware Configuration

Important

The exemplary hardware configurations in this section are only for reference. Do not use these data to select your production instance configuration. To select the optimal configuration, ask advice from our experts by support@ntechlab.com.

Resource consumption may vary depending on the following factors:

  • The number of HTTP requests per second, sent to findface-extraction-api (depends on the number of faces in a camera field of view, the number of user search requests, etc.).
  • Video quality (video interference, colourful video background take up more resources).
  • Motion intensity in video.

The following examples are given for standard component configuration.

Important

Changes in component settings may result in significant changes in resource consumption.

CPU-based Server

Cameras CPU RAM, GB Extraction
1x720p25FPS Intel Core i5 - 6400 (4 cores 2700MHz) 8 elderberry_160 + features* model_instances = 1 or elderberry_576 model_instances = 1
2x720p25FPS min: Intel Core i7 - 6700 (4 core 3400MHz); recommended: Intel Core i7 - 6850K (6 cores 3600MHz) 12 elderberry_160 + features* model_instances = 2 or elderberry_576 + features* model_instances = 2
4x720p25FPS min: Intel Core i7 - 8700K (6 cores 3700MHz); recommended: Intel Core i9 - 9900K (8 cores 3600MHz) 16 elderberry_576 + features* model_instances = 2 or elderberry_576 model_instances = 3
1x1080p25FPS min: Intel Core i7 - 6700 (4 cores 3400MHz); recommended: Intel Core i7 - 6850K (6 core 3600MHz) 32 elderberry_576 + features* model_instances = 1 or elderberry_576 model_instances = 2

GPU-based Server

Cameras CPU RAM, GB GPU Installation Extraction Video
1x720p25FPS Intel Core i5 - 6400 (4 cores 2700MHz) 8 nVidia GeForce GTX1060 6Gb extraction-api on CPU video-worker on GPU elderberry_160 + features* model_instances = 1 or elderberry_576.cpu model_instances = 1 basic
extraction-api on GPU video-worker on CPU basic basic
2x720p25FPS Intel Core i5 - 6400 (4 cores 2700MHz) 12 nVidia GeForce GTX1060 6Gb extraction-api on CPU video-worker on GPU elderberry_160 + features* model_instances = 2 or elderberry_576.cpu + features model_instances = 1 or elderberry_576.cpu model_instances = 2 basic
extraction-api on GPU video-worker on CPU basic basic
4x720p25FPS Intel Core i5 - 8400 (4 cores 2800MHz) 16 nVidia GeForce GTX1060 6Gb extraction-api on CPU video-worker on GPU elderberry_576.cpu + features* model_instances = 2 basic
8x720p25FPS Intel Core i5 - 8400 (4 cores 2800MHz) Intel Core i7 - 6700 (4 cores 3400MHz) 16 nVidia GeForce GTX1060 TI 6Gb extraction-api on CPU video-worker on GPU elderberry_576.cpu + features* model_instances = 2 basic
16x720p25FPS Intel Core i7 - 6700 (4 cores 3400MHz) Intel Core i7 - 8700K (6 cores 3700MHz) Intel Core i9 - 9900K (8 cores 3600MHz) 32 2x nVidia GeForce GTX1060 TI 6Gb extraction-api on CPU video-worker on GPU elderberry_576.cpu + features* model_instances = 4 or basic