[pypy-issue] [issue900] Using cProfile on Windows generates negative tottime values

Garen Parham tracker at bugs.pypy.org
Wed Jan 11 10:37:29 CET 2012


Garen Parham <garen.p at gmail.com> added the comment:

The problem is still present as of 409a8b279f54 from the 1/10 nightly.  

I do see the affinity is set correctly (pypy.exe only shows CORE-0 active) but 
for whatever reason the negative tottime value still comes back in the results.  

Some side thoughts, based on:
  https://bitbucket.org/pypy/pypy/changeset/a7e8e37cbf30

* If the process affinity mask only has 1 bit set, no work needs to be done 
(means process can only run on at most 1 CPU)
* Return codes for GetProcessAffinityMask() and SetProcessAffinityMask() aren't 
inspected for error codes--there is a permission/privilege required (not 
relevant for my test though afaict).
* Won't work for systems with > 32 CPUs, need to use process groups. 
* IIRC I thought the "supported" way to do this is by first calling 
QueryPerformanceCounter() and QueryPerformanceFrequency() which presumably 
selects the best available hardware/instruction(s) for recording timestamps and 
accounts for frequency scaling issues (e.g. power management, turbo boost, speed 
step, ...)

This MS link seems to support using QueryPerformance*:

http://msdn.microsoft.com/en-us/library/windows/desktop/ee417693(v=vs.85).aspx

Hope that helps.

________________________________________
PyPy bug tracker <tracker at bugs.pypy.org>
<https://bugs.pypy.org/issue900>
________________________________________


More information about the pypy-issue mailing list