KPI
Performance
Runtime profiling of the VST microservice in terms of number of RTSP/WebRTC streams.
Description |
GPU Utilization |
CPU Memory |
CPU Utilization |
Comment |
---|---|---|---|---|
RTSP Streams Perf |
Decoder: 11.33%, Encoder: 0%, GPU: 26% |
10.21 GiB |
28.41% |
Number of Streams: 30 GPU usage will go up based on how many users are accessing the UI and using the overlay feature. |
WebRTC Streams Perf |
Decoder: 35%, Encoder: 0%, GPU: 41% |
10.5 GiB |
73.00% |
Number of Streams: 30 GPU usage will go up based on how many users are accessing the UI and using the overlay feature. |
Metrics obtained on the below system configuration:
GPU: NVIDIA A100
CPU: AMD EPYC 7313P @ 3GHz - 16 Cores
How to run profiling tools
Use below tools from inside vst container at path: /home/vst/vst_release/tools
.
These tools are based on x86_64 ubuntu22.04
To measure RTSP streams perf:
# Specify RTSP streams or VST/NVStreamer endpoint to play & get FPS. #./testRTSPClient Usage: ./testRTSPClient --urls "<rtsp-url-1>, <rtsp-url-12>, ... <rtsp-url-N>" (where each <rtsp-url-i> is a "rtsp://" URL) =================== Options ========================= --tcp => stream over tcp (Default is udp) --port <port_number> => client start port number --fps => Display received fps of the stream --fps-interval <interval_in_seconds> => Publish fps at this interval (Default interval is 5sec) --csv-file <filePath to dump fps> => Provide path & filename Eg. fps_report.csv --num-streams <Max num of streams> => Max number of streams to be played (Default no limit) --socket-buffer-size => OS socket buffer size in bytes (needs to be root) --jitter-buffer-size => JitterBuffer/reordering buffer size in ms (default 200ms) --vst-endpoint <ip:port> => VST endpoint to fetch RTSP streams ================== Examples ========================= 1. Play two RTSP streams ./testRTSPClient --urls "rtsp://10.0.0.1:8554/stream1,rtsp://10.0.0.1:8554/stream2" 2. Play two RTSP streams, stream over tcp & use client start port number as 30000 ./testRTSPClient --tcp --port 30000 --urls "rtsp://10.0.0.1:8554/stream1,rtsp://10.0.0.1:8554/stream2" 3. Play two RTSP streams, specify Names ./testRTSPClient --urls "Amcrest_1|rtsp://10.0.0.1:8554/stream1, Amcrest_2|rtsp://10.0.0.1:8554/stream2" 4. Play two RTSP streams & log FPS on console for every 5second ./testRTSPClient --fps --fps-inteval 5 --urls "Amcrest_1|rtsp://10.0.0.1:8554/stream1, Amcrest_2|rtsp://10.0.0.1:8554/stream2" 5. Play two RTSP streams & dump FPS data in given csv file ./testRTSPClient --fps --csv-file /home/vst/fps_report.csv --urls "Amcrest_1|rtsp://10.0.0.1:8554/stream1, Amcrest_2|rtsp://10.0.0.1:8554/stream2" 6. Play all RTSP streams from given vst endpoint & dump FPS in csv file ./testRTSPClient --fps --csv-file /home/vst/fps_report.csv --vst-endpoint 10.0.0.1:30000 7. Play 4 RTSP streams from given vst endpoint & dump FPS in csv file ./testRTSPClient --fps --csv-file /home/vst/fps_report.csv --num-streams 4 --vst-endpoint 10.0.0.1:30000
To measure WebRTC streams perf:
# specify VST/NVStreamer endpoint to play the WebRTC streams ./testWebrtcClient --duration 600 --vst-endpoint 10.0.0.1:30000 --fps-interval 10 --num-streams 4 --csv-file ./fps_file.csv