*nix Documentation Project
·  Home
 +   man pages
·  Linux HOWTOs
·  FreeBSD Tips
·  *niX Forums

  man pages->IRIX man pages -> dplace (1)              
Title
Content
Arch
Section
 

Contents


DPLACE(1)							     DPLACE(1)


NAME    [Toc]    [Back]

     dplace - a	NUMA memory placement tool

SYNOPSIS    [Toc]    [Back]

     dplace [-place placement_file]
     [-data_pagesize n-bytes]
     [-data_lpage_wait [off|on]]
     [-stack_pagesize n-bytes]
     [-stack_lpage_wait	[off|on]]
     [-text_pagesize n-bytes]
     [-text_lpage_wait [off|on]]
     [-migration [off|on|threshold]]
     [-migration_level threshold]
     [-propagate]
     [-mustrun]
     [-v[erbose]]
     program [program-arguments]

DESCRIPTION    [Toc]    [Back]

     The given program is executed after placement policies are	set up
     according to command line arguments and the specifications	described in
     placement_file.

OPTIONS    [Toc]    [Back]

     -place placement_file
	  Placement information	is read	from placement_file. If	this argument
	  is omitted, no input file is read. See dplace(5) for correct
	  placement file format.

     -data_pagesize n-bytes
	  Data and heap	page sizes will	be of size n-bytes. Valid page sizes
	  are 16k multiplied by	a non negative integer powers of 4 up to a
	  maximum size of 16m. Valid page sizes	are 16k, 64k, 256k, 1m,	4m,
	  and 16m.

     -data_lpage_wait [off|on]
	  Normal behavior in the event of large	page shortages is to continue
	  running utilizing smaller pages instead. If this option is specified
	  as on	then the process will wait until large pages become available
	  for use by the data segment.

     -stack_pagesize n-bytes
	  Stack	page sizes will	be of size n-bytes. Valid page sizes are 16k
	  multiplied by	a non negative integer powers of 4 up to a maximum
	  size of 16m. Valid page sizes	are 16k, 64k, 256k, 1m,	4m, and	16m.

     -stack_lpage_wait [off|on]
	  Normal behavior in the event of large	page shortages is to continue
	  running utilizing smaller pages instead. If this option is specified
	  as on	then the process will wait until large pages become available



									Page 1






DPLACE(1)							     DPLACE(1)



	  for use by the stack segment.

     -text_pagesize n-bytes
	  Text page sizes will be of size n-bytes. Valid page sizes are	16k
	  multiplied by	a non negative integer powers of 4 up to a maximum
	  size of 16m. Valid page sizes	are 16k, 64k, 256k, 1m,	4m, and	16m.

     -text_lpage_wait [off|on]
	  Normal behavior in the event of large	page shortages is to continue
	  running utilizing smaller pages instead. If this option is specified
	  as on	then the process will wait until large pages become available
	  for use by the stack segment.

     -migration	[off|on|threshold]
	  Page migration is turned on or off. If a threshold is	specified then
	  page migration will be turned	on and the migration threshold will be
	  set in the same manner as when -migration_level is specified (see
	  below).

     -migration_level threshold
	  Page migration threshold is set to threshold.	 This value specifies
	  the maximum percentage difference between the	number of remote
	  memory accesses and local memory accesses (relative to maximum
	  counter values ) for a given page, before a migration	request	event
	  occurs. A special argument of	0 will turn page migration off.	This
	  option is provided for backward compatibility	only, new scripts
	  should use the -migration option (see	above) instead.

     -propagate
	  Migration and	page size information will be inherited	by descendents
	  which	are exec'ed.

     -mustrun
	  When threads are attached to memories	or cpus, the threads are
	  attached to CPUs on the node using process_cpulink with a request
	  mode of mandatory.

     -verbose or -v
	  Detailed diagnostic information is written to	standard error.

EXAMPLE    [Toc]    [Back]

     To	place data according to	the file placement_file	for the	executable
     a.out that	would normally be run by:
	  % a.out < in > out
     one would simply
	  % dplace -place placement_file a.out < in > out .

     An	example	placement file placement_file, when a.out is two threaded
     might look	like:

     # placement_file
     memories 2	in topology cube # set up 2 memories which are close



									Page 2






DPLACE(1)							     DPLACE(1)



     threads 2			 # number of threads
     run thread	0 on memory 1	 # run the first thread	on the 2nd memory
     run thread	1 on memory 0	 # run the 2nd thread on the first memory


     This specification, would request 2 nearby	memories from the operating
     system. At	creation, the threads are requested to run on an available cpu
     which is local to the specified memory. As	data and stack space is
     touched or	faulted	in, physical memory is allocated from the memory which
     is	local to the thread which initiated the	fault.

     This can be written in a scalable way for a variable number of threads
     using the environment variable NP as follows:

     # scalable	placement_file
     memories $NP in topology cube # set up memories which are close
     threads $NP		   # number of threads
     # run the last thread on the first	memory etc.
     distribute	threads	$NP-1:0:-1 across memories


USING MPI    [Toc]    [Back]

     Since most	MPI implementations use	$MPI_NP+1 threads; where the first
     thread is mainly inactive.	One might use the placement file:

     # scalable	placement_file for MPI
     memories ($MPI_NP + 1)/2 in topology cube # set up	memories which are close
     threads $MPI_NP + 1		   # number of threads
     # ignore the lazy thread
     distribute	threads	1:$MPI_NP across memories


     When using	MPI with dplace, syntax	similar	to the following should	be
     used:
	  mpirun -np <number_of_processes> dplace <dplace_args>	a.out

LARGE PAGES    [Toc]    [Back]

     Some applications run more	efficiently using large	pages.	To run a
     program a.out utilizing 64k pages for both	stack and data,	a placement
     file is not necessary. One	need only invoke the command:
	  dplace -data_pagesize	64k -stack_pagesize 64k	a.out
     from the shell.

PHYSICAL PLACEMENT    [Toc]    [Back]

     Physical placement	can also be accomplished using dplace. The following
     placement file:


     # physical	placement_file for 3 specific memories and 6 threads



									Page 3






DPLACE(1)							     DPLACE(1)



     memories 3	in topology physical near \
	  /hw/module/2/slot/n4/node \
	  /hw/module/3/slot/n2/node \
	  /hw/module/4/slot/n3/node
     threads 6
     #the first	 two threads (0	& 1 ) will run on /hw/module/2/slot/n4/node
     #the second two threads (2	& 3 ) will run on /hw/module/3/slot/n2/node
     #the last	 two threads (4	& 5 ) will run on /hw/module/4/slot/n3/node
     distribute	threads	across memories


     specifies three physical nodes using the proper /hw path. To find out the
     names of the memory nodes on the machine you are using, type "find	/hw
     -name node	-print"	at the shell command prompt.

MUSTRUN    [Toc]    [Back]

     The mustrun option	will bind a thread to a	particular CPU on the node.
     In	cases where threads are	distributed across memories, the CPU selection
     will attempt to schedule CPUs as to maximize CPU to memory	bandwidth.
     For example, on an	Origin 3000, CPUs sharing a memory will	be scheduled
     on	two separate processor busses available	on the node, which serves to
     increase available	memory bandwidth for each processor.  The following
     placement file will demonstrate this behaviour:


     # placement file for 4 memories and 8 threads
     threads 8
     memories 4
     distribute	threads	across memories


     By	running	this placement file using the option -mustrun the CPU
     selection on each memory of an Origin 3000	will attempt to	select CPU
     numbers 0 and 2, or 1 and 3, or 0 and 3, or 1 and 2. The selection	will
     avoid pairing 0 and 1, or 2 and 3,	as these CPUs share a processor
     interface bus. In a situation where a processor selection cannot be done
     optimally as described, then the next available CPU regardless of bus
     attachment	will be	selected.


DEFAULTS    [Toc]    [Back]

     If	command	line arguments are omitted, dplace chooses the following set
     of	defaults:

	  place		  /dev/null
	  data_pagesize	  16k
	  stack_pagesize  16k
	  text_pagesize	  16k
	  migration	  off
	  propagate	  off



									Page 4






DPLACE(1)							     DPLACE(1)



	 mustrun	 off
	  verbose	  off

RESTRICTIONS    [Toc]    [Back]

     Programs must be dynamic executables; non shared executables behavior are
     are unaffected by dplace. Placement files will only affect	direct
     descendents of dplace. Parallel applications must be based	on the
     sproc(2) or fork(2) mechanism. Page sizes for regions which are not
     stack, text, or data can not be specified with dplace (eg:	SYSV shared
     memory). Regions shared by	multiple processes (eg:	DSO text) are faulted
     in	with the pagesize settings of the faulting process.  Dplace sets the
     environment variable _DSM_OFF which will disable libmp's own DSM
     directives	and environment	variables.

ENVIRONMENT    [Toc]    [Back]

     Dplace recognizes and uses	the environment	variables PAGESIZE_DATA,
     PAGESIZE_STACK and	PAGESIZE_TEXT. When using these	variables it is
     important to note that the	units are in kilobytes.	 The command line
     option will override environment variable setting.

ERRORS    [Toc]    [Back]

     If	errors are encountered in the placement_file, the default procedure
     for dplace	is to print a diagnostic message to standard error specifying
     where the error occurred in the placement_file and	abort execution.  If
     errors are	encountered in the libdplace.so	library	during the run-time
     execution of program, then	a diagnostic message is	sent to	standard
     error, a default signal of	SIGKILL	is sent	to all members of the process
     group, and	execution is aborted.

     The mode signal expr statement allows a selection of a specific signal
     number to be generated upon error.	 If the	mode signal expr is specified,
     the action	taken when libdplace.so	detects	a run-time error is to send
     the signal	number derived from expr to the	program	invoked	by dplace.
     Under this	condition the control is returned to the caller, which is the
     program.  The signal number can range from	1 to 32.

     An	example	of how to set the signal number:

     mode signal 16

     Upon detecting an error in	libdplace.so during run-time, signal 16
     (defined as SIGUSR1) is sent to the calling process (in this case the
     program and control is returned to	the caller.

SEE ALSO    [Toc]    [Back]

      
      
     dplace(3),	dplace(5), dprof(1), numa(5), mmci(5), dlook(1), numa_view(1),
     mld(3).


									PPPPaaaaggggeeee 5555
[ Back ]
 Similar pages
Name OS Title
numa_view IRIX a tool for showing NUMA placement information
dlook IRIX a tool for showing memory and process placement
gr_sn IRIX NUMA Memory Management Configuration Tool
sn IRIX NUMA Memory Management Configuration Tool
dplace IRIX NUMA placement specification
gr_nstats IRIX NUMA Memory Management Statistics
nstats IRIX NUMA Memory Management Statistics
dprof IRIX a memory access profiling tool
clshm_diag IRIX obsolete diagnostic tool for CrayLink Shared Memory
clshmctl IRIX obsolete administration tool for CrayLink Shared Memory
Copyright © 2004-2005 DeniX Solutions SRL
newsletter delivery service