(Martin, if you feel this is related enough to a past forum thread on the spikes, drop-outs, crackling issue, feel free to reference or recategorize)
Recently I updated to Hauptwerk 8 on a dual processor with more than 16 cores running Windows 10. Since, I have noticed many CPU spikes, audio drop-outs and audio crackling on nearly all sample sets, including St. Annes. I have been following Mark N's debug adventure (viewtopic.php?f=3&t=21086) with a lot of interest.
Curiously, many sample sets running HW 8 on another Hauptwerk system with a nearly 10 year old Intel quad-core processor running Windows 10 rarely ever has any CPU spikes, drop-outs or crackling. I have checked both systems and their Hauptwerk and Windows 10 OS settings appear nearly identical.
I have used Cantabile's Glitch Free - An in-depth guide to tuning Windows for reliable real-time audio performance - https://download.cantabilesoftware.com/GlitchFree.pdf. Despite configuring numerous tuning suggestions (including running as Administrator at Real-time priority and for Hauptwerk, Set Affinity for all but the first 4 cores), the dual proc system still spikes, drops out, and crackles at least once a minute, sometimes multiple times per minute.
The main approach has been to eliminate all other CPU spiking apps, drivers and firmware, etc. Last night, it dawned on me that there might a useful opposite approach:
1) try to get Hauptwerk to run only on some "out of the way" cores
or to the logical extreme:
2) try to dedicate some cores to exclusively run Hauptwerk only
For 1) run only on some "out of the way" cores, I went to Task Manager / Processes tab:
a. selected Hauptwerk, Right-click Go to details
b. Set Affinity, deselected all, and then selected only 6-8 of the highest odd numbered (some even prime numbered, for grins) cores.
The intent of selecting "out of the way" cores was to select cores least likely to be selected by any non-Hauptwerk processes/threads, including from Windows OS (avoid Core 0 or 1, avoid Core N or Core N-1, avoid even-numbered cores). Yes, this is at best an educated guess, at worst a WAG.
Surprisingly, the frequency of CPU spikes, audio drop-outs and audio crackling dropped to only 1 in the next hour of playing several small (<5 GB), medium (<16 GB) and large (~40-50GB) sample sets. Admittedly, a few hours later, the frequency increased to 1 every several minutes. This is progress, but clearly not infrequent enough.
Towards 2), I found a Microsoft article on CPU Sets on Windows - https://learn.microsoft.com/en-us/windo ... d/cpu-sets.
It does not appear clear whether CPU Sets could actually dedicate some cores exclusively to an application such as Hauptwerk, or are CPU Sets only another way of programmatically setting Affinities.
A further excerpt:
I worry that Core Reservation is only supported on Windows Server OS and not on Windows Professional (which many Hauptwerk PCs use).
I just thought I would mention the opposite approach idea, in case Martin hasn't considered this for a Hauptwerk implementation enhancement or other Hauptwerk PC users haven't considered it for Hauptwerk user configuration.
Thoughts?
Mark S
Recently I updated to Hauptwerk 8 on a dual processor with more than 16 cores running Windows 10. Since, I have noticed many CPU spikes, audio drop-outs and audio crackling on nearly all sample sets, including St. Annes. I have been following Mark N's debug adventure (viewtopic.php?f=3&t=21086) with a lot of interest.
Curiously, many sample sets running HW 8 on another Hauptwerk system with a nearly 10 year old Intel quad-core processor running Windows 10 rarely ever has any CPU spikes, drop-outs or crackling. I have checked both systems and their Hauptwerk and Windows 10 OS settings appear nearly identical.
I have used Cantabile's Glitch Free - An in-depth guide to tuning Windows for reliable real-time audio performance - https://download.cantabilesoftware.com/GlitchFree.pdf. Despite configuring numerous tuning suggestions (including running as Administrator at Real-time priority and for Hauptwerk, Set Affinity for all but the first 4 cores), the dual proc system still spikes, drops out, and crackles at least once a minute, sometimes multiple times per minute.
The main approach has been to eliminate all other CPU spiking apps, drivers and firmware, etc. Last night, it dawned on me that there might a useful opposite approach:
1) try to get Hauptwerk to run only on some "out of the way" cores
or to the logical extreme:
2) try to dedicate some cores to exclusively run Hauptwerk only
For 1) run only on some "out of the way" cores, I went to Task Manager / Processes tab:
a. selected Hauptwerk, Right-click Go to details
b. Set Affinity, deselected all, and then selected only 6-8 of the highest odd numbered (some even prime numbered, for grins) cores.
The intent of selecting "out of the way" cores was to select cores least likely to be selected by any non-Hauptwerk processes/threads, including from Windows OS (avoid Core 0 or 1, avoid Core N or Core N-1, avoid even-numbered cores). Yes, this is at best an educated guess, at worst a WAG.
Surprisingly, the frequency of CPU spikes, audio drop-outs and audio crackling dropped to only 1 in the next hour of playing several small (<5 GB), medium (<16 GB) and large (~40-50GB) sample sets. Admittedly, a few hours later, the frequency increased to 1 every several minutes. This is progress, but clearly not infrequent enough.
Towards 2), I found a Microsoft article on CPU Sets on Windows - https://learn.microsoft.com/en-us/windo ... d/cpu-sets.
CPU Sets provide APIs to declare application affinity in a 'soft' manner that is compatible with OS power management. Additionally, the API provides applications with the ability to reaffinitize all background threads in the process to a subset of processors using the Process Default mechanism to avoid interference from OS threads within the process.
It does not appear clear whether CPU Sets could actually dedicate some cores exclusively to an application such as Hauptwerk, or are CPU Sets only another way of programmatically setting Affinities.
A further excerpt:
Some versions of Windows support Core Reservation policies, in which a subset of the system’s CPU Sets can be devoted to the exclusive use of individual applications and workloads.
I worry that Core Reservation is only supported on Windows Server OS and not on Windows Professional (which many Hauptwerk PCs use).
I just thought I would mention the opposite approach idea, in case Martin hasn't considered this for a Hauptwerk implementation enhancement or other Hauptwerk PC users haven't considered it for Hauptwerk user configuration.
Thoughts?
Mark S