Test results
Load testing
Load testing helps evaluate the quality and speed of OMNI Platform operation under a certain load at a given time interval. A test image used is 240 KB (512х512 px) png image.
Test machine specification
CPU | RAM | SSD |
| 128 GB DDR4 2400 ECC | Samsung EVO 870 500 GB |
Metrics
Metric Name | Description |
Users | Number of parallel requests |
Num threads | Number of CPU threads in use |
RPS | Number of requests processed per second |
(50%) 50th percentile | 50% of requests are completed in no more than this time, in ms |
(95%) 95th percentile | 95% of requests are completed in no more than this time, in ms |
Max | Maximum time to process 1 request, in ms |
Avg | Average time to process 1 request, in ms |
Test 1
Test conditions
- Face recognition method: 12v1000
- ipvs: enabled
- Database size: two mln profiles
- Scalability: load testing of OMNI Platform 1.16.0 uses the following scaling settings:
- image-api-age-estimator-dep: 8 instances
- image-api-emotion-estimator-dep: 8 instances
- image-api-face-detector-liveness-estimator-dep: 8 instances
- image-api-mask-estimator-dep: 8 instances
- image-api-face-detector-template-extractor-dep: 16 instances
- platform-processing-dep: 16 instances
- other services: 1 instance for each service
Test results
Request* | Users | Num_ threads | RPS | 50% | 95% | Max | Avg |
create_profile (create a profile from a face image) | 1 | 1 | 0.8 | 1200 | 1300 | 2500 | 1234 |
16 | 1 | 11.4 | 1400 | 1600 | 2122 | 1409 | |
detect (detect a face and estimate facial attributes from a face image) | 1 | 1 | 0.9 | 1100 | 1200 | 1240 | 1101 |
16 | 1 | 12.4 | 1300 | 1500 | 1903 | 1290 | |
profiles (get a list of created profiles) | 1 | 1 | 4.8 | 190 | 340 | 379 | 209 |
230 | 1 | 211.6 | 1100 | 1800 | 4412 | 1060 | |
search (search a face in the database by image) | 1 | 1 | 0.97 | 1000 | 1100 | 1201 | 1030 |
2 | 1.37 | 720 | 770 | 963 | 726 | ||
4 | 1.8 | 540 | 570 | 723 | 543 | ||
8 | 2.2 | 440 | 500 | 635 | 448 | ||
16 | 1 | 13.7 | 1100 | 1300 | 2854 | 1167 | |
2 | 16.3 | 980 | 1200 | 1526 | 981 | ||
4 | 18.4 | 860 | 1000 | 4269 | 868 | ||
8 | 17.3 | 910 | 1000 | 3986 | 921 | ||
search_by_ sample_id (search a face in the database by sample ID) | 1 | 1 | 7.9 | 120 | 150 | 2218 | 126 |
70 | 1 | 99.5 | 700 | 770 | 987 | 703 | |
verify (compare a face image with a sample to determine if they belong to the same person) | 1 | 1 | 0.9 | 1100 | 1200 | 1233 | 1118 |
16 | 1 | 12.3 | 1300 | 1500 | 2046 | 1304 | |
verify_by_ sample_id (compare two samples to determine if they belong to the same person) | 1 | 1 | 14.7 | 65 | 88 | 246 | 67 |
260 | 1 | 259.8 | 1000 | 1400 | 6680 | 926 |
CONCLUSION
The most time-consuming operation "Search" takes
- 0.5 seconds for single requests
- 1 second under a load of 16 parallel requests
/* Detailed information on the API requests specified in the table can be found in API Reference.