I am working on Mips Custom Driver, which receive live stream JPEG data (for now) from an application. When i start adding more application fps start to decrease or following function
public abstract bool GetLiveFrame(TimeSpan timeout, out BaseDataHeader header, out byte[] data);
start to call less and less, the hardware utilization is not increasing just the fps is decreasing. Seems like it is calling in sequential not parallel to all the added devices.
In the Demo Driver sample, in the DemoDriverDefinition.cs, in CreateDriverInfo() we have
driverInfo.MaxHardwarePerProcess = 10;
Chances are that you have the same.
Please test setting this to 1 instead.
We would appreciate your feedback; does this change the throughput you experience?
Yes, it changed the number of request. thanks for that.
The request are now more frequent but i can still see request drops as i add more applications, is there any limit to how many application/device can we add per recording server? someone told me that it is not scalable, is it true?
There are limits, but recording server with 200 cameras are not uncommon, the limit is more on the amounts of data than on the number of devices. If you see a very high CPU consumption, is it the apps or the recording server which is using it?
I was told similar that custom driver/ universal driver will be consuming high CPU but i have test with 20 application on a single recording server with Full HD JPEG stream, but the CPU was just 5% up. i don’t think it’s impacting on CPU. Just the number of request from the recording server are reducing when i add more devices.
I discussed it here with colleague in Milestone Development. I must admit our primary suspicion at this time is that your driver is using the time processing and sending data. In order to debug this we suggest that you log some timestamps and find out where in the process the time is used.