[comp.sys.encore] EPT THREAD

aslam@m.cs.uiuc.edu (09/08/89)

I am using the EPT (Encore Parallel Threads) package for a numerical
analysis application. The setup is rather simple: THREADgo followed by
a series of THREADcreate. The THREADcreate calls fail, perhaps due to
small stack size. This is what EPT reports:

--------------------------------------------
Memory allocation statistics 
free:	 0 255 122 48 29 0 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
used:	 0 1 6 16 3 0 1 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
	Total in use: 18512, total free: 18352

THREAD(disaster): pid 30359 (0): out of memory
IOT trap
--------------------------------------------

How do I interpret this information? EPT is out of memory but which memory
is it referring it to? I ask for a pretty large chunk in my THREADgo call.
I am liberal with stacks also. What do the two lines

free:	 0 255 122 48 29 0 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
used:	 0 1 6 16 3 0 1 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

mean?

I am using UMAX 4.2, R3.2.0 on a 10 processor Multimax.

An aside: how can use cdb to debug programs using EPT? CDB can keep
track of processes as they are forked but how do I step through the
program section as a thread executes it? Commands like '0 P', '1 P'
allow me to switch between processes but these are unix processes that
are servicing the threads I have created.

Sohail Aslam
Department of Computer Science
University of Illinois
arpa		aslam@cs.uiuc.edu
usenet		uiucdcs!aslam
bitnet		aslam@uiucdcs.BITNET

jb@CS.BROWN.EDU (09/11/89)

The information lists how many blocks of each size are available and used.
The first block there is 8 bytes and they increase by powers of 2 from there.
The requested amount of memory in THREADgo is all the memory the process has
to use.  Stacks are allocated out of this heap as well.  Unfortunately, there
is no dynamic growth of the heap under EPT.

If the failure is actually a THREADcreate call, you might have to increase
the amount of memory you request in THREADgo.  My first guess would be that
you are failing on the third call to THREADcreate with each one having a
stack of around 4-6K.  The reason you have so much left is that it is
fragmented.  The largest block you can allocated is 512 byte.

I don't know of a good debugger for EPT.  To try and debug threads, the
debugger must understand that there is something else smaller than a
process running.

				Jim