assurance-tunnel
assurance-tunnel
assurance-tunnel
assurance-tunnel

[ANSWERED] NDI - High CPU Usage



  • Hi

    I am trying to send NDI internally (localhost) from isadora 3.0.8b USB to Vectorworks Vision (previz software)

    In my test setup I add a movie player and projector, switch NDI on in stage setup and in Vision I set a surface to recieve the signal from isadora. 

    The load in isadora instantly goes up to 95%. If I turn off the receiving end it drops back down. Am I doing something wrong or is there something inherent to NDI that I need to understand?

    Cheers

    [NOTE: @fubbi I've edited your post title to make your question clearer for the rest of the community -- Mark]


  • Beta Platinum

    @fubbi

    What kind of resolution are you sending?



  • @juriaan 1920x1080, setting the resolution to 720p makes puts the load at 75%. 



  • I got a similar result:

    Video ProRes 1920x1080 sent from Isadora to Newtek NDI Video Monitor give me a load of 50%.

    The same file with syphon is by 1,2%

    best, Jean-François 



  • I'm using NDI all the time, now.

    I've also found the load to be quite high, although not 75 - 95%! Having said that, I am using 2 NDI 720p feeds in the same scene with stability and getting loads of about 70%.

    @fubbi , you don't mention your equipment or OS.

    @mark, @dusx, any tips for  optimizing NDI (for me, on Windows)?

    Cheers,

    Hugh


  • Tech Staff

    NDI is not the same as Syphon/Spout.
    Syphon and Spout share video directly located on the GPU with other applications. No additional processing required.
    NDI however, grabs the video from the GPU, applies some compression and transmits it over the network. This requires a substantial amount of CPU time.
    When using NDI in a project I highly recommend you setup NDI ouput at the beginning of the project so that you can see the total project Load as you build it up.
    It can be a little surprising if you only active the NDI output once a project is mostly finished.



  • Here are my NDI results: h264@5.93 mbit/s —1350x512px

    — isadora 3.08b USB — osx catalina — trashcan 6 core — d500 — 32gb — load 96%

    —  Isadora 3.0.7 Demo — windows 10 — Ryzen 5 2600X — 2070 S — load 25%

    In Vision I have the option of high or low bandwidth NDI and I chose low on both systems.

    I find it interesting how NDI ramps up when subscribed to and that it's more or less dormant otherwise (2% incl movie playing). Makes sense I guess.

    Just testing for now and I will probably go isadora out of one box and via video capture into a Vectorworks Vision box in the end.



  • @fubbi 

    I am a bit surprised by 96% usage. Here is what I got rendering 1920x1080 to NDI on the same machine:

    (Machine Specs: MacOS Mojave 10.14.6, latest NDI tools, 2.2 GHz Intel Core i7)

    Look at the CPU usage for Isadora and the NewTek NDI Video Monitor

    As you can see, the receiver is also using a significant amount of CPU.

    But @DusX is right: NDI requires is heavy. When sending NDI, the following things happen under the hood:

    • Isadora must pull the stage image from the GPU to get it back on the CPU. This is never optimal because GPUs are optimized to receive data for rendering, not to give it back.) Because this process slows down the rendering cycle, you see the LOAD in Isadora go up significantly.
    • This image is passed to the NDI system, which performs whatever compression is necessary to send the data over the network. This is also not optimal because the image is ARGB instead of YUV or some more efficient codec. (It has to be that way because the GPU image comes back as ARGB... you can't get it back as YUV, etc.)
    • NDI then sends the data over the network, which has its own overhead.

    When I sent the signal to a second computer (while maintaining the connection on the local computer), the load in Isadora did not rise significantly. 

    Again, as @DusX said, Syphon/Spout avoid the pitfalls listed above. They use "texture sharing" which means the GPU image never leaves the GPU. That is why Syphon/Spout show nearly zero overhead and nearly zero latency.

    One solution that might improve performance is to go through NDI Syphon. Because this app uses Syphon as an input and because it is in a completely separate application space, it does not slow down Isadora's rendering cycle as much. For sure the LOAD on Isadora is going to be less because it does not have to interrupt its rendering cycle to get the image back from the GPU.

    I hope that these details shed some light on the process and why NDI is necessarily heavy.

    Best Wishes,
    Mark



  • @mark

    thanks a lot for the explanation. It is a great help to understand how it works and how we can better work with.

    best, Jean-François



  • I second that @jfg. Always interesting to get a peek under the hood. Long live syphon/spout

    I did another test to see if Vision caused the load. Same result with NDI monitor. solid 96% 

    To be honest I feel like my trashcan is getting tired. Lots of this behaviour across the board. I hope I just need a fresh sys install and that apple isn't phasing the 6,1 out.