More CPU Cores = Worse Performance???

Hello everyone :slight_smile:

I’m on Windows 10 64 bit, powered by AMD Threadripper 3970X with 32 Cores (which equals 64 virtual Threads) and a Geforce RTX 2060 Super. All of these components sit on a ASUS ROG Zentith II Extreme Alpha (what a cringe name) motherboard. Despite the horsepower i’m encountering a weird performance problem. In VCV-Rack you can allocate a number of cores/threads to the program itself (Engine → Threads). So normally i work with 12 Threads. Thats enough for more simpler projects, but as they get more complex, the program begins to stutter, which results in pops and glitches. So the logical conclusion would be, to give the program more threads to work with, right? As i turns out, the opposite is the case. The more threads i give to the program the more stutter and glitches occur. Simple setups run fine, with say 12 Threads, but when i give the same project 32 Threads, all of the sudden everything falls apart. A quick glance at the taskmanager reveals that with 32 Threads allocated to VCV Rack, on the same project, only 60 % of the CPU is used, so that cannot be the culprit as it is evident that the CPU isn’t even stressed at that point, but everything stutters like crazy. I tried this scenario also with and without my external Sound-Card (Motu M4), with the exact same results, so the soundcard is also not the problem. I also tried various drivers (Sound Driver, Chipset-Drivers, etc…), sadly this also didn’t fix my problem. So has anyone a clue what is happening here and how i can solute this propblem, or is there a technical reason for this, wich i simply don’t know?

Thanks in advance for your answers :smiley:

1 Like

I don’t have the answer to the technical reason behind this behavior, but there is a simple recommendation regarding multithreading in VCV:

Always start with one thread and increment only when there are glitches or drop-outs. On my 6-Core-12-Thread-5600X I very rarely need to increase the number of threads, 2 Threads and even 3 Threads are ok and will actually help, but more than that is no benefit anymore. The only way to increase performance after that is to increase the asio buffer size. Your mileage may vary since you have a few more cores :stuck_out_tongue: - but there will be a limit after which you won’t get more power from adding threads.

4 Likes

And/or lower the framerate.

2 Likes

Thanks for your answer guys :D. Sigh, thats a bit of a shame if the performance is really limited that way… Sadly increasing buffer size or lowering the framerate didn’t help, i got about the same performance with and without your suggested tweaks. What i noticed is that when i scroll in vcv rack and the screen has to “load” a sharper image of the modules the same stuttering occours. I don’t know if this is related but it can quickly mess up a session

Just try it the other way around, why start with 12 threads, start with 1, so lowering the threads saves CPU.

In that case I’d say you have graphics related issues. I’ve a i7-4790k with RX570 at 4K, everything is pretty much instant.

1 Like

I have noticed this as well. It’s almost the inverse of what v1 was like. I used to run Rack with 8 threads but I can barely run anything like that now. I find I can do a lot more with 1 thread now than I could in v1 but once I hit the limit it seems like bumping the number of threads is only beneficial up to 2 or 3. I feel like it is more efficient with v2 (not measured anything though) but it does seem like you could push it further with more cores in v1.

The reason why i was expecting more performance with say, 12 Threads vs 1 Thread, is that any other program, for example a fractal renderer, works exponentially faster the more threads i give to it. This behaviour is persistent (given the program supports multithreading) with any other program i ever used, since the workload is spread over more cores and thus more work is done in a given time increment/cylce. But judging from your replies VCV-Rack seems to be an exception. Just weird that the VCV manual states that to resolve audio hiccups (and increase performance) more threads should be allocated. Also weird that lowering the threads setting in VCV-Rack doesn’t seem to make much of a difference for me, as it does for you. Anyway, windows is behaving strangly as of late, so i’ll maybe switch over to linux and see what happens, if i can find some spare time that is.

Thank you all again for your quick anwers

2 Likes

What soundcard are you using?

It might be that the bottleneck of your performance is your soundcard, if it doesn’t have good ASIO drivers. If it’s not an ASIO soundcard, drivers like ASIO4all or FL Studio ASIO might help a bit. I had the best performance with non-ASIO soundcards using FL Studio ASIO (which installs when installing an FL Studio demo)

Other than that check your buffer size and allways start with 1 thread and only increase threads if CPU usage gets over 50%.

A fractal renderer can offload large chunks of work to separate threads, and rarely has to synchronise them. In general fractal renderers can work on everything related to 1 pixel, without regard to any other pixels, which allows an enormous degree of parallelization if you have the thread count to support it.

Rack on the other hand processes 1 sample at a time. And so it has to keep those threads synchronised 50,000 times a second. This introduces an enormous amount of overhead, which means that 12x the thread-count comes nowhere close to 12x the performance.

That said, I would agree with others that your bottlenecks appear to be more with your graphics.

1 Like