Can Process Lasso turn W7 into a realtime deterministic OS for audio production?

Started by EDigit, May 16, 2013, 08:14:22 AM

Previous topic - Next topic

EDigit

Hello,

We are a post production studio. We are building a workstation with 32 logical threads ( 2 x 8 core Xeon @ 3,1 Ghz, 128 GB ram, W7 x64). Our goal is to make our Digital Audio Workstation software run with the shortest possible latency and without any possible delay. This way we would benchmark for the biggest possible project and then consider the computer as a real Digital mixer of that capacity.

There is a software called Pyramix which use "masscore" which principle is to hide some core from the OS to directly compute to those core, aiming the same deterministic, realtime goal.

Inspired by this idea, we would like to constrain the Operating System to 4 logical thread with normal priority, and the DAW software ( REAPER, a heavy multi thread software ) to the 28 other threads, with a realtime priority.

We would buy Process Lasso for Workstation to do that.

We have then some questions :

- Is it possible to force all the OS computing to 4 logical threads ?  Is it possible to make the other 28 threads exclusive to all REAPER processes ?
- Is the Realtime priority really improving latency of the processes ?
- Are realtime priority processes still interruptible by external processes ?
- Something we didn't think about ?

Thanks for your help.

ED

BenYeeHua

Wow. :o
----
As I don't know the real answer, so Please don't count my answer as the real answer. :)

It also affect by many factor, like your hardware driver is bad coding, which causing a higher DPC Delay.
Don't forcing a lower Timer Resolution, like 0.5ms(milliseconds)(I think this might loss it function after you has set as real-time priority)
Disable Core Parking, which also reported by many other user.
http://forum.cakewalk.com/tm.aspx?&m=2628147&mpage=1
Disable any CPU power save, like EIST, C3 & C6.

And yes, I just Google about Real-time Priority, it seen like setting a process to real-time priority, it will running that process without any chance for interruptibility.
Except that process's jobs is done, then windows might be putting other processes for that core.
Maybe Process Lasso can set all other process to other CPU affinity that don't used by that important process.

Just my opinion.
I only can guess, as I don't has the hardware to prove it, and also don't know much for the Windows NT scheduler. :)

EDigit

Hello Ben,

Thanks for the answer (which is quite real since I can read it ;) )

Good points about disabling Power Saving options, and Core parking.

Our audio driver is state of the art, but I'm not sure if communication beetween REAPER and the hardware is inside the REAPER process, or thru another process. I assume it's inside, but if it is not it might not be a good idea to set it to Real Time priority. Other driver can still be faulty, though ...

I think I'll have to spend quite some time testing and monitoring DCP latency, to see what is the most robust and effective way to get the lowest latency.

BenYeeHua

Yes, I think the first issue is the DPC latency.
You can use some tools like LatencyMon to check which driver is using the highest time for processing.
http://www.msfn.org/board/topic/140263-how-to-get-the-cause-of-high-cpu-usage-by-dpc-interrupt/
Remember, it is count as µs. ;)

And some people tweaking with HPET also found out some help for DPC latency, but most people choose default(TSC+HPET 64bit), as it is the most stable DPC latency, not jumping like a rabbit. ;D
But just try to tweak for it(turning off, turning on HPET), as every people has difference hardware.
http://forums.guru3d.com/showthread.php?t=368604

Just keep it low and stable. :)

Jeremy Collake

Quote from: EDigit on May 16, 2013, 08:14:22 AM
- Is it possible to force all the OS computing to 4 logical threads ?  Is it possible to make the other 28 threads exclusive to all REAPER processes ?

Attempting to set the CPU affinity of all system processes can result in complications. It might go alright for you, but I've at least heard of cases where one or more Windows components started behaving badly when this was attempted. It's possible though. Whether it helps performance you won't know until you do some profiling. See below for info on setting affinities for specific device interrupts.

Quote
- Is the Realtime priority really improving latency of the processes ?

Only in cases where CPU is the bottle-neck and the threads were otherwise competing for the CPU.

Quote
- Are realtime priority processes still interruptible by external processes ?

They are meant to not be interrupted, but can be in practice. Higher priority threads in the real-time priority class can interrupt (be switched to on the next time slice, even though the active thread hasn't completed by entering a wait state). More importantly, hardware or software interrupts always can preempt these threads.

What you are really trying to do is set the IRQ affinity for certain devices. That way those interrupts won't interfere with the cores you've got assigned to REAPER. Windows does support this, though I haven't played much with it. The tool Interrupt-Affinity Policy Tool from Microsoft will modify the affinity policy characteristic of a device, limiting it to specific cores. 

An excerpt:
"Interrupt binding can affect the overall performance of a computer. However, no single algorithm produces the best performance under all possible workloads. This is why on most platforms running with eight logical processors or less, Windows Server 2008 by default directs interrupts to any available processor. You might want to partition interrupts for certain devices to particular processors or experiment with various configurations to find the optimal configuration. Note that this tool permits any configuration, even non-optimal ones."

Here's a complimentary screenshot of the Intpolicy tool.. as you can see, nice and easy to use to set CPU affinities for IRQs for specific devices. Works in Windows 2008 or later (a prior tool can be used for older OSes). This includes consumer versions, running in Vista SP1+.
Software Engineer. Bitsum LLC.

BenYeeHua

Learned new knowledge, thank for asking this questions, and thank for answer it. ;)
As I don't has that much of core, it is so bad as I can't test and playing with it... :P
----
As I know, Linux kernel is supporting/improving this issues step by step, but I think they still lose on the driver? :)

EDigit

Thanks for the detailed answer,

All this give me good hints about having a native solution behaving like a dsp solution.
I'll have tests when I'll have the workstation and some free time (probably in August), then I'll come back here with my results.

Thanks again.

ED


EDigit

Hello,
I had to give some news ...  ;)

Finally we'll receive the pieces of our workstation next week. Finally it's a (unique) xeon e5 2690 v2. So it's gonna be a 12 cores workstation (with 64GB ram and 2 SSD Drives (128 & 750 GB)).

We're going to build it then see and make a lot of tests. I think testing Process Lasso will be part of a second batch of test.

Thanks

ED

BenYeeHua

Welcome back, let's see how it will going. ;)
There are still many fighter want to get the DPC latency as low as they can too.

And I guess that motherboard don't has any third-part Sata, which causing many DPC issues for it.

Jeremy Collake

Great, please let us know how it goes!

Also, if you desire any features not present, please do let us know. Management and automation for such high-end SMP systems is one of Lasso's goals.
Software Engineer. Bitsum LLC.

EDigit

Thanks !

I'll be back here as soon as I have revelent infos to share.

Happy new year !!

ED

BenYeeHua

Roger, I still very interesting to find out that, except Xbox one or PS4 that running the game with real-time priority, did Windows can also doing for that, for any jobs that sensitive to latency. :)
---
Forgot something, the reason that Xbox one and PS4 can used be a real-time one, as they has check each of the game, and also their patch, to make sure there are safe and not crashing the system I guess.

And if Windows open something like low latency, it will becoming many issues like compatibility and also security.
Based on Windows 8.1, they will like to reducing the power/CPU usage, not latency.

Anyways, Happy New Years! 8)