[Info-vax] High resolution per-process CPU consumption statistics
VAXman- at SendSpamHere.ORG
VAXman- at SendSpamHere.ORG
Tue Mar 24 16:21:19 EDT 2020
In article <m5reG.280253$YY1.29280 at fx08.iad>, Mark Daniel <mark.daniel at wasd.vsm.com.au> writes:
>On 24/3/20 9:24 pm, johnwallace4 at yahoo.co.uk wrote:
>> On Tuesday, 24 March 2020 00:02:22 UTC, Mark Daniel wrote:
>>> Would like to be able to measure process CPU consumed during specified
>>> continuous sections of processing. Only interested in CPU-intensive
>>> sections so USER mode consumed relevant. Imagine inserting calls at the
>>> beginning and ending of those sections with a magic number representing
>>> CPU consumption/delta/whatever made available.
>>>
>>> As some of these CPU-intensive code sections are short duration the
>>> granularity needs to be quite fine. The likes of JPI$_CPUTIM and
>>> LIB$STAT_TIMER (10mS) seem unsuitable.
>>>
>>> Prepared for non- USER mode code. This is only for ad hoc developmental
>>> insight and not general use. Needs to accommodate Alpha and/or Itanium
>>> (and/or x86-64 :-)
>>>
>>> And, of course, any other suggestion.
>>>
>>> As always, TIA.
>>
>> Is it safe to assume that the code in question is single-threaded?
>
>Yes.
>
>> Is it safe to assume that the code in question is running on a
>> single-processor system?
>
>Yes.
>
>> Is an Alpha-only solution better than nothing at all?
>
>Sure.
>
>> Have a look at RPCC (Read Process Cycle Counter) in the Alpha/VMS
>> PALcode and see if it might help.
>>
>> See e.g. the Alpha Architecture Reference Manual documentation e.g.
>> http://www.bitsavers.org/pdf/dec/alpha/Sites_AlphaArchitectureReferenceManual_1992.pdf
>> (there's probably more useful RPCC-related stuff available too).
>
>Before posting here, a fair effort with an unnamed but common search
>engine and my chosen query strings consistently returned references to
>that document and section.
>
>My fevered imagination (but internals hacking very-much limited to
>monkey-see-monkey-do) has something of the ilk:
>
> unsigned __int64 start_count,
> end_count;
>
> void get_cpu_count (unsigned __int64 *here)
> {
> *here = EXE$GL_CURRENT_CPU_COUNT;
> return SS$_NORMAL;
> }
>
> sys$cmkrnl (&get_cpu_count, &start_count);
> ...
> sys$cmkrnl (&get_cpu_count, &end_count);
>
>Some similar code would be used to obtain the RPCC.
SYS$RPCC_64. No need to add jackets and or jump into inner mode.
No arguments. It returns the RPCC value in R0, the function return.
--
VAXman- A Bored Certified VMS Kernel Mode Hacker VAXman(at)TMESIS(dot)ORG
I speak to machines with the voice of humanity.
More information about the Info-vax
mailing list