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
elems
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
time.
I can't reproduce this on W10 21H1, so I think this must be due to some
change in later Windows...