I would love to see more discussion here on performance tuning on a desktop. I’ll start by saying i’m a total newbie-- today’s my first day, i’ve only loaded the Server app (haven’t yet tried the client, or the android client). I’ve connected 3 cams (and see the unlicensed banner on the 3rd) via custom URL per useful tips on the ‘XMEye’ thread in the support forum. Kudos so far.
That said, i’ve noticed via system responsiveness, and then confirmed in running TaskMan that when minimized and not displaying any video NetCamStudio runs at ~30%, and if displaying the Server applet UI and displaying video my CPU pegs red. I did notice that even with the record rules enabled (as they are by default) they don’t record unless i select/activate motion on the right-click menu per cam. I’m fine with that btw (albeit i’d probably like 1 switch i could flip for all cams that says ‘i’m leaving’ and would like to record and thus activate motion, along with ability to say ‘i’m home’ and disable motion so that i don’t record while i’m here), though seems like there should be some dramatically lower requirement just to display some video without the need for being ready to at a moments notice persist to disk… and in so doing pay a much lower CPU cost for the ability. (and in turn, would hope by saying ‘i’m leaving’ or ‘i’m home’ have that cost while i’m away incurred on the machine’s CPU, but not while i’m sitting there and don’t need record).
In short, i’d prefer to just leave the ‘server running’ and have the UI accessible… but not have it hog the CPU while i’m home and at the machine, and be available for me to tell it… ‘i’m leaving’… at which time, it could then really enable recording, and use as much CPU as it needs to be ready to do so and/or to do so based on motion it sees.
next day, post some add’l investigation on my part.
Reviewed some related GPU support threads in the forum. Namely these 2: #1 on updating graphics driver, and #2 on some GPU related internals wrt NCS impl utilization constraints
wrt, #1 I did after some effort update my driver. In short, my tablet is old/unimpressive at this time in history. But with some research, I successfully updated the Sony VAIO SVT11213CXB Intel HD Graphics from an Intel 10/16/17 v22.214.171.12435 on my Win10 64bit install to an Intel 3/25/20 v126.96.36.19926 version, which indicates DirectX Runtime v12.0 with Hw Support ver 11.1. (and perhaps this assists in either tweaking NCS to utilize this older GPU capability, OR succinctly allows someone to confirm it’s ‘by design’ that this is NOT supported in this older hw).
That said, on the NCS X Server tab’s encoding page (in switching from the default CPU/SingleThread to) Intel (as well as trying all other options in the dropdown, in both Single and Auto/multi threaded mode) I saw NO difference; namely no utilization of the GPU when looking on the TaskMan Performance tab.
What I DID notice, which achieves my goal of being able to keep the Server running and NOT over-taxing the system… was that while/if the NCS Server UI is showing cameras whether maximized/visible or minimzed it is an unacceptable CPU drain, WHEREAS while that UI is on the ‘Encoding’ tab it stays below 3% (which is great) with ‘motion’ disabled for all cameras (which matches my ‘i’m home’ state, where I don’t need it ‘ready to record’
I’ll further note, even when cameras are set to ‘motion’ enabled, so that the enabled recording rule works… for 1st camera motion enabled CPU stays at ~20%, and for 2nd camera motion enabled CPU stays at ~40% (v. 95-99%) when UI is on the ‘encoding tab’ (v. on the cameras display)… true whether UI is visible/rendering OR minimized to the taskbar… AND it still records properly when there’s motion!
SO-- I have discovered a workaround, though it’s quite clear to me, there is opportunity to further optimize the app to mitigate performance impact on lower class machines so that while minimized it can result in minimal system overhead (and still be highly functional)… AND then quickly be available to do its job to record, and/or be visible when UI is rendered on screen. It is possible; though it appears it warrants an update.
In short, 2 things could be tweaked to greatly improve perf/usability:
- when UI is displaying cameras (but minimized to the toolbar), under the covers the UI applet should do whatever its doing when it renders the settings.encoding tab to minimize the CPU utilization. In this way, one can keep the NCS Server running and even on the Camera display (primary left most button on toolbar) but have minimal required CPU impact. If we left it there while minimzed that would be super.
Further/even better-- maybe another iteration-- the non-minimized to toolbar UI could further, display each cam window with ability to be ‘frozen’ on the LKG screenshot when it was last ‘running’ and it could present itself with a VCR control play/pause button, so that in general while paused (it would have min CPU utilization) and when playing (when i’m viewing it) it is fine to use CPU. Clicking the running video would act like YouTube and pause it to a screenshot with a ‘play’ button, and/or leave it running (and burning CPU) with a pause button visible when hovering over center. Clicking the video whether button is visible or not (depending on hover state and time since) would have expected result to pause or play (again, like a YouTube video).
- there should be a toolbar button (togglable) on the toolbar which changes state between ‘home’ & ‘away’ which enables the desired/MRU per camera state wrt ‘motion/audio detector’ on/off state… so that in short, the lower CPU consumption off state can be assoc w/‘home’ whereas the high cpu consumption on states (which enabled desired recording) can be enabled/disabled together/easily when i’m away from the desktop and have no issue with the tradeoff associated with high CPU use in return for security cam video recording capability.
And a further, small iteration feature here wrt this button… namely, a set-able ‘delay on exit’ timer so I could set for 3 or 5min, etc… such that I don’t trip all the cameras as family and I make it from my desk/their locations out the door causing unecessary recordings… v. have it recording while we’re gone so we know about any activity in our absence.
Any comments/questions/concerns welcomed; and if dev can use this to assist in further tuning i’d greatly appreciate it. Thanks!