The Video Recognition Gateway (VIRGO) command line tool has a service monitoring user interface built in. Execute the following command in a shell window to activate continuous monitoring:
> virgo service monitor
After executing this command, VIRGO clears the terminal window and presents the following live screen:
Status Feed PID Epoch P-Time Resolution FPS DPS dDt dRt #D #D-Badge #D-Face #D-Skip #R #R-Face #R-Err #R-Skip #Evt %CPU GPU# GPU GPU-Name
ok camera_1 14536 12/06/17 00:24:13.450 1280x720 120 8ms 250ms 120 18 10 0 0 8 0 0 0 1240 1% 0 VF GTX 1060
ok camera_2 67289 13:07:12 80:10:00.000 1920x1080 29.97 8ms 250ms 1920 1400 0 0 0 1000 50 1 0 10 4% 1 VF GTX 1050
inactive camera_3
Note that the screen is live, which means that VIRGO continuously updates it every second. You can quit monitoring by pressing the ‘q' key or by pressing Ctrl-C. Also please keep in mind that VIRGO only shows as many columns as fit on the screen. If you do not see all columns then this means that your terminal window is not wide enough. Make the window wider to see all of the columns.
The service monitor UI allows you to scroll up and down when there are more feeds than fit vertically in the terminal window. Use the cursor up key to scroll up and the cursor down key to scroll down.
The following table explains what the various columns in the monitoring output mean:
Column Name | Description |
---|---|
Status | The feed status. This is one of ok, inactive, eos, error, or failure. |
Feed | The feed name. |
PID | The PID of the feed daemon if the daemon is running |
Epoch | The time when the feed processed the first frame in the video stream. |
P-Time | The amount of time that the feed has spent on processing the video stream. This is in terms of milliseconds. |
Resolution | The width and height of a video frame in pixels |
FPS | The frames per second of the input video. |
DPS | The number of detections per second. |
dDt | The latency of a single detection operation in milliseconds. |
dRt | The latency of a single recognition operation in milliseconds. |
#D | The number of detection operations that have been triggered. |
#D-Badge | The number of badges that have been detected. |
#D-Face | The number of faces that have been detected. |
#D-Skip | The number of detection operations that have been skipped due to detector overcommitment. This means that no detector was available for a video frame because all detectors were busy at that time. |
#R | The number of face recognition or reconfirmation operations that have been triggered. |
#R-Face | The number of successful face recognition or reconfirmation operations that have been run. |
#R-Err | The number of face recognition or reconfirmation operations that have failed for some reason. |
#R-Skip | The number of recognition operations that have been skipped due to recognizer overcommitment. This means that no recognizer was available for a face image because all recognizers were busy at that time. |
#Evt | The number of events that have been reported. |
%CPU | How CPU is used by the feed. Note that this number is in the range 0% to CPU_COUNT * 100%. |
GPU# | The GPU ID. Every GPU in the system is assigned a unique ID. This entry is blank if the feed does not use a GPU. |
GPU | A string which indicates which modules in the feed are using the GPU: V -> video decoder F -> face detector B -> badge detector O -> object detector An empty/non-existing string indicates that the feed is not using the GPU at all. |
GPU-Name | The name of the GPU. Note that the name is not unique because a system may be equipped with more than one GPU of the same model and make. This entry is blank if the feed does not use a GPU. |
You can create a CSV file with all the information from the live service monitor screen by invoking the service monitor like this:
> virgo service monitor > my.csv
This command tells VIRGO that it should write the service monitor information into a CSV file instead of showing it on the screen. VIRGO will continue to write feed statistics once per second to the CSV file until you stop it by pressing Control-C in your terminal window.
VIRGO writes one line per feed to the CSV file and it repeats this process every second. It even includes inactive feeds by default. If you only want to include active feeds in the CSV file then pass the "–active-only" command line switch to VIRGO.