load average calculation failing
Sun May 8 10:27:27 GMT 2022
On 08/05/2022 08:01, Mark Geisert wrote:
> Mark Geisert wrote (on the main Cygwin mailing list):
>> I've recently noticed that the 'xload' I routinely run shows zero load
>> even with compute-bound processes running. This is on both Cygwin
>> pre-3.4.0 as well as 3.3.4. A test program, shown below, indicates
>> that getloadavg() is returning with 0 status, i.e. not an error but no
>> of the passed-in array updated.
>> Stepping with gdb through the test program seems weird within the
>> loadavginfo::load_init method. Single-stepping at line loadavg.cc:68
>> goes to strace.h:52 and then to _sigbe ?!
>> I had recently updated both Cygwin and Windows 10 to latest at the
>> same time so I cannot say when the failure started. Last day or two
>> at most.
> I've debugged a bit further.. Within Cygwin's loadavg.cc:load_init(),
> the PdhOpenQueryW() call returns successfully. The subsequent
> PdhAddEnglishCounterW() call is unsuccessful. It returns status
> 0x800007D0 == PDH_CSTATUS_NO_MACHINE. The code (at line 68 mentioned
> above) calls debug_printf() to conditionally display the error, which is
> what leads to the strace.h and _sigbe; that's fine.
> The weird PDH_CSTATUS_NO_MACHINE is the problem. I'll try running the
> example from an elevated shell. Or rebooting the machine. After that
> it's consulting some oracle TBD. :-(
Thanks for looking into this.
You can find the user space version of this code I initially wrote at
https://github.com/jon-turney/windows-loadavg, which might save you some
I can't reproduce this on W10 21H1, so I think this must be due to some
change in later Windows...
More information about the Cygwin-patches