Thread View: comp.sys.transputer
4 messages
4 total messages
Started by Dario Ringach
Wed, 17 Oct 1990 05:34
Monitoring CPU Load?
Author: Dario Ringach
Date: Wed, 17 Oct 1990 05:34
Date: Wed, 17 Oct 1990 05:34
10 lines
791 bytes
791 bytes
Is there any way to monitor the percent of usage of a Transputer by running an OCCCAM process in PAR-rallel with an application? Thanks. -Dario -- Dario Ringach Technion, Israel Institute of Technology Dept. of Electrical Engineering, 32000 Haifa, Israel dario@techunix.bitnet | dario@techunix.technion.ac.il
Re: Monitoring CPU Load?
Author: Ian Nandhra
Date: Wed, 17 Oct 1990 11:03
Date: Wed, 17 Oct 1990 11:03
55 lines
2170 bytes
2170 bytes
dario@techunix.BITNET (Dario Ringach) writes:
>Is there any way to monitor the percent of usage of a
>Transputer by running an OCCCAM process in PAR-rallel
>with an application? Thanks. -Dario
A monitoring process could be written to examine the process
queue[s] and to determine how many processes are waiting to run
(and being prevented from doing so by this monitoring process).
If the front and end process queue pointers are equal, the
monitoring process is the only "active" process and is executing
in idle CPU time. Otherwise it is preventing other processes from
running and is actively slowing the system down. By keeping a
count of :-
t.idle Number of times process is scheduled during CPU idle
time.
t.active Number of times process is scheduled when other
processes are waiting (ie CPU "busy").
a [crude] estimate of CPU loading in a given refernce time period
can be determined.
Note :-
1. That the monitoring process takes up CPU time so
calculations should make allowances for this and the
re/descheduling times.
2. Also the counts can become rather large!
3. It should be run on the required process queue (ie high or
low).
A means of de/activating this process must be contrived for
control purposes.
I have not tried this but it should work (in theory, on paper,
not coded yet, etc :-).
Doubtless there is a much, much better way......
Cheers,
Ian.
--
Ian Nandhra, iann@specialix.co.uk {backbone}!mcsun!ukc!slxsys!iann
I am speaking, but | If these are your opinions, then we are in agreement!!
not for my employer.| Flames, spelling errors, complaints > /dev/null
Re: Monitoring CPU Load?
Author: Steven Ericsson Zenith
Date: Wed, 17 Oct 1990 21:48
Date: Wed, 17 Oct 1990 21:48
34 lines
1814 bytes
1814 bytes
In article <1990Oct17.110318.9927@specialix.co.uk>, iann@specialix.co.uk
(Ian Nandhra) writes:
> dario@techunix.BITNET (Dario Ringach) writes:
> >Is there any way to monitor the percent of usage of a
> >Transputer by running an OCCCAM process in PAR-rallel
> >with an application? Thanks. -Dario
>
>
> A monitoring process could be written to examine the process
> queue[s] and to determine how many processes are waiting to run
> (and being prevented from doing so by this monitoring process).
> [...]
Sheesh, that's tougher than it need be. Hossein and I used to just sit
a process on a v.short timer and allow it to maintain a counter.
TIMER t:
WHILE forever
SEQ
t ? AFTER zip.nada
c := c + 1
This process will now effectively provide a count which represents the
idle time on the processor - since it'll keep geting rescheduled if the
processor is idle.
Steven
--
Steven Ericsson Zenith * email:
zenith@cs.yale.edu
Fax: (203) 466 2768 | voice: (203) 466 2587
"All see beauty as beauty only because they see ugliness" LaoTzu
Yale University Dept of Computer Science 51 Prospect St New Haven CT
06520 USA
Re: Monitoring CPU Load?
Author: Conor O'Neill
Date: Tue, 23 Oct 1990 13:33
Date: Tue, 23 Oct 1990 13:33
76 lines
2999 bytes
2999 bytes
>dario@techunix.BITNET (Dario Ringach) writes:
>
>
>>Is there any way to monitor the percent of usage of a
>>Transputer by running an OCCCAM process in PAR-rallel
>>with an application? Thanks. -Dario
Here is an example OCCAM process which can be executed at high priority.
It wakes up periodically, and detects whether a low priority process
was executing (and therefore was interrupted).
It updates an 'idle count', which can be communicated to another process.
PROC monitor(CHAN OF BOOL req, CHAN OF INT data)
VAL delay IS 1000 : -- 1 millisecond at high priority
INT Wdesc.save :
PLACE Wdesc.save AT 11 : -- address of saved low priority Wdesc
-- (see chapter 10.2 of the Compiler Writer's Guide)
BOOL running :
INT idle :
SEQ
idle := 0
running := TRUE
WHILE running
TIMER time :
INT now :
SEQ
time ? now
PRI ALT
BOOL request :
req ? request
IF
request -- if request is TRUE, return and reset the idle count
SEQ
data ! idle
idle := 0
TRUE -- if request is FALSE, shutdown
running := FALSE
time ? AFTER now PLUS delay
IF
Wdesc.save = ((MOSTNEG INT) + 1) -- '1' means low priority
idle := idle PLUS 1 -- make sure it can't overflow
TRUE
SKIP -- there was a low priority process executing
:
Sending TRUE down 'req' will return the idle count down 'data', and
reset the count. Sending FALSE will terminate the process.
The process would be used somewhat like this:
CHAN OF BOOL req :
CHAN OF INT data :
PRI PAR
monitor(req, data)
INT idle :
SEQ
... your program here
req ! TRUE
data ? idle
... display the idle count, or whatever
req ! FALSE
Note that the 'granularity' of the idle count can be adjusted by changing
the delay. While waiting on the timer queue, no CPU time is used, so the
only overhead is the cost of the loop every millisecond.
Note too that this process does not take other high priority processes
into account.
---
Conor O'Neill, Software Group, INMOS Ltd., UK.
UK: conor@inmos.co.uk US: conor@inmos.com
"It's state-of-the-art" "But it doesn't work!" "That is the state-of-the-art".
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads