Man Page collector.1




NAME

     collector - subcommands of	dbx  used  for	performance  data
     collection


SYNOPSIS

     dbx


DESCRIPTION

     The term collector	is used	to describe the	 data  collection
     features  in  dbx and the runtime support for those features
     in	libcollector.so.

     The  dbx collector	does not work for applications written in
     the  Java(TM) programming language;  it can collect data for
     the Java virtual machine, but the Java-specific  functional-
     ity  does	not  work  from	 dbx.  (The  terms  "Java virtual
     machine" and "JVM"	mean a virtual machine for  the	 Java(TM)
     platform.)

     The data collected	is described in	the collect(1) man  page.
     The collect command can collect data without using	dbx.


DBX COMMANDS

     The commands accepted by dbx  to  support	performance  data
     collection	are as follows.

     collector { enable	| disable }
	  Enable or disable data collection.

	  If no	process	is active,  control  whether  or  not  an
	  experiment  is collected when	a process starts.  If the
	  mode is disable, do not collect performance  data.   If
	  the  mode  is	 enable,  collect data for all subsequent
	  runs.

	  If a process is running, but	no  experiment	is  being
	  collected,  and an enable command is received, start an
	  experiment on	the running process.   If  a  disable  is
	  given, but no	experiment is being collected, ignore the
	  command with a warning.

	  If a process is running, an experiment  is  being  col-
	  lected,  and	a  disable command is received,	terminate
	  the experiment.  If enable is	given, ingore the command
	  with a warning.

	  If an	experiment is terminated, but the process is left
	  running  and an enable command is received, start a new
	  experiment.

     collector pause
	  Temporarily stop recording data during  an  experiment.
	  Ignore the command with no warning if	recording of data
	  is already paused.  Ignore the command with  a  warning
	  if no	experiment is running.

     collector resume
	  Resume recording data	during an experiment.  Ignore the
	  command  with	 no  warning  if recording of data is not
	  paused.  Ignore the command with a warning if	no exper-
	  iment	is running.

     collector profile { on | off }
	  Enable or disable collection of  clock-based	profiling
	  data.	 If  an	 experiment is active, ignore the command
	  with a warning.  Default is enabled.

     collector profile timer value
	  Set the profiling timer interval to value.   The  value
	  can  be  an  integer or a floating-point number, with	a
	  suffix of u for values in microseconds, or m for values
	  in  milliseconds.   If  no  suffix  is used, assume the
	  value	to be in milliseconds.	Set the	default	 interval
	  to 10	milliseconds.

	  The interval value can also be  given	 as  one  of  the
	  strings "hi" or "high" for profiling at a 1 millisecond
	  interval, "lo" or "low" for profiling	 at  a	100  mil-
	  lisecond  interval,  or "on" for profiling at	a 10 mil-
	  lisecond interval.  These interval values are	 approxi-
	  mate.

	  If the value is smaller than the system clock	profiling
	  minimum  set it to the minimum; if it	is not a multiple
	  of the clock profiling resolution  round  down  to  the
	  nearest  multiple  of	 the  clock  resolution.   If  it
	  exceeds the clock profiling maximum, report  an  error.
	  If it	is negative or zero, report an error.

	  If an	experiment is active, ignore the command  with	a
	  warning.

     collector hwprofile { on |	off }
	  Enable or disable hardware-counter overflow  profiling.
	  On  systems whose hardware or	operating system does not
	  support hardware-counter overflow profiling, return  an
	  error	 on  detecting	an  attempt  to	enable it.  If an
	  experiment is	active,	ignore the command with	 a  warn-
	  ing.	Default	is disabled.

     collector hwprofile list
	  Print	a usage	summary, including the default configura-
	  tion	of  the	 experiment.  If  the  processor supports
	  hardware counter profiling, print two	lists  containing
	  information  about  hardware	counters.  The first list
	  will contain "well known" hardware counters; the second
	  list will contain raw	hardware counters.

	  For example, the  collector  hwprofile  list	  command
	  invoked on a Sun OS SPARC-based system would produce an
	  output similar to the	following:

	    Well known HW counters available for profiling:
		cycles[/{0|1}],9999991 (`CPU Cycles', alias for	Cycle_cnt; CPU-cycles)
		insts[/{0|1}],9999991 (`Instructions Executed',	alias for Instr_cnt; events)
		icm[/1],100003 (`I$ Misses', alias for IC_miss;	events)
		...
	    Raw	HW counters available for profiling:
		Cycle_cnt[/{0|1}],1000003 (CPU-cycles)
		Instr_cnt[/{0|1}],1000003 (events)
		Dispatch0_IC_miss[/0],1000003 (CPU-cycles)
		...

     collector hwprofile counter ctr_def...[,ctr_n_def]
	  Collect hardware counter overflow profiles. The  number
	  of  counter definitions, (ctr_def through ctr_n_def) is
	  processor-dependent. For example, on an UltraSPARC  III
	  system,  up  to  two	counters may be	programmed; on an
	  Intel	Pentium	4 with Hyperthreading, up to 18	 counters
	  are  available.  The	user  can  ascertain  the maximum
	  number of hardware counters definitions  for	profiling
	  on  a	 target	 system,  and  the full	list of	available
	  hardware  counters,  by  running  the	 collect  command
	  without any arguments.  This option is not available on
	  Linux	systems.

	  Each counter definition  takes  one  of  the	following
	  forms,  depending  on	 whether  attributes for hardware
	  counters are supported on the	processor:

	  1. [+]ctr[/reg#],interval

	     [+]ctr[/reg#] interval

	     Examples:
		  collector hwprofile counter cycles,on,insts
		  collector hwprofile counter cycles on	insts

	     Note: For historical reasons, a space can	still  be
	     used as the delimiter between hardware counters.

	  2. [+]ctr[~attr=val]...[~attrN=valN][/reg#],interval



	     Example:
	       collector hwprofile counter FP_dispatched_fpu_ops~umask=0x3/2,10007

	  enables the Floating Point Add and Multiply  operations
	  to  be  tracked.  (For  more details on valid	attribute
	  values, refer	to  the	 processor  documentation).   The
	  "/2"	value specifies	instructions to	be executed using
	  the second register of the hardware. The CPU cycle pro-
	  filing is done at an interval	rate of	10007 events.

	  The meanings of the counter definition options  are  as
	  follows:

	  Value	    Meaning

	  +	    Optional parameter that  can  be  applied  to
		    memory-related  counters.  Causes  collect to
		    backtrack in an attempt to find the	 instruc-
		    tion that triggered	the overflow, and to find
		    the	virtual	and  physical  addresses  of  the
		    memory reference. Backtracking will	only work
		    with counters of type load,	store,	or  load-
		    store,  as	displayed  in  the  counter  list
		    obtained  by  running  the	collect	  command
		    without any	command-line arguments.

	  ctr	    Processor-specific counter name. The user can
		    ascertain  the  list of counter names by run-
		    ning  the  collect	 command    without   any
		    command-line arguments.

	  attr=val  On some processors,	attribute options can  be
		    associated	with  a	 hardware counter. If the
		    processor supports	attribute  options,  then
		    running   collect  without	any  command-line
		    arguments will specify  the	 counter  defini-
		    tion,  ctr_def,  in	 the  second  form listed
		    above, and provide a list of attribute  names
		    to use for attr.  Value val	can be in decimal
		    or	hexadecimal  format.  Hexadecimal  format
		    numbers  are  in  C	 program format	where the
		    number is prepended	by a zero and  lower-case
		    x (0xhex_number).

	  reg#	    Hardware register to use for the counter.  If
		    not	 specified, collect will attempt to place
		    the	counter	into the first available register
		    and	 as a result, may be unable to place sub-
		    sequent counters due to  register  conflicts.
		    If	the user specifies more	than one counter,
		    the	counters must  use  different  registers.
		    The	list of	allowable register numbers can be
		    ascertained	by running  the	 collect  command
		    without any	command-line arguments.

	  interval
		    Sampling  frequency,  set  by  defining   the
		    counter  overflow value.  Valid values are as
		    follows:

		    Value     Meaning

		    on	      Select the default rate, which  can
			      be  determined  by running the col-
			      lect command without  any	 command-
			      line   arguments.	  Note	that  the
			      default value for	all raw	 counters
			      is  the  same,  and  may not be the
			      most suitable value for a	 specific
			      counter.

		    hi	      Set interval  to	approximately  10
			      times shorter than on.

		    lo	      Set interval  to	approximately  10
			      times longer than	on.

		    value     Set interval to a	 specific  value,
			      specified	in decimal or hexadecimal
			      format.

	  An experiment	can specify both hardware counter profil-
	  ing  and  clock-based	 profiling.   If hardware counter
	  profiling is specified, but  clock-based  profiling  is
	  not  explicitly specified, turn off clock-based profil-
	  ing.

     collector synctrace { on |	off }
	       Enable or disable  collecting  of  synchronization
	       tracing	data.	Default	is off.	 If an experiment
	       is active, ignore the command with a warning.

     collector synctrace threshold value
	       Set the threshold for synchronization delay  trac-
	       ing according to	the given value, which can be one
	       of the following:

	       Value	 Meaning

	       calibrate or on
			 Use a calibrated  threshold,  determined
			 at runtime.

	       off	 Turn off synchronization delay	tracing.

	       n	 Use   an   threshold	 value	  of	n
			 microseconds. A zero value enables trac-
			 ing of	all events.

	       The default setting is calibrate.  If  an  experi-
	       ment is active, ignore the command with a warning.

     collector mpitrace	{ on | off }
	       Enable or disable collecting of MPI tracing  data.
	       Default	is  off.   If  an  experiment  is active,
	       ignore the command with a warning.

     collector heaptrace { on |	off }
	       Enable or disable collecting of heap tracing data.
	       Default	is  off.   If  an  experiment  is active,
	       ignore the command with a warning.

     collector tha { on	| all |	<option>  | off	}			||
	       Control	 collecting   of  Thread  Analyzer  data.  |
	       Default is  off.	  If  an  experiment  is  active,  |
	       ignore  the  command  with  a warning.  The target  |
	       executable  must	 be  instrumented  for	 datarace  |
	       detection;  see	the  tha(1)  man  page	for  more  |
	       detail.						   |

	       <option>	is  a  comma-separated	list  the  Thread  |
	       Analyzer	 data  options.	  The  only <option> sup-  |
	       ported at this time  is	races.	 Others	 will  be  |
	       added later.  all and on	both collect races data.   |

     collector archive { on | off | copy }
	       Set the mode for	archiving  the	experiment.   The
	       default	is on, corresponding to	normal archiving.
	       If the mode is set to off, do no	archiving. If the
	       mode  is	 set  to copy, copy all	load objects used
	       into the	experiment.  A user that moves the exper-
	       iment  to  a  different	machine, or reads it from
	       another machine,	should enable the copying of  all
	       load  objects.  If an experiment	is active, ignore
	       the command with	a warning.

     collector limit value
	       Limit the amount	of  profiling  data  recorded  to
	       value  megabytes.  The limit applies to the sum of
	       all profiling data and tracing data,  but  not  to
	       sample  points. The limit is only approximate, and
	       can be  exceeded.   When	 the  limit  is	 reached,
	       record no more profiling	or tracing data, but keep
	       the experiment open and record samples  until  the
	       target  process	terminates.   If an experiment is
	       active, ignore the command with a warning.

	       The default limit on the	amount of  data	 recorded
	       is  2000	 Mbytes.   To  remove the limit, the user
	       sets value to "none" or "unlimited".

     collector status
	       Report on the status of any open	experiment.

     collector show
	       Show the	current	settings of all	collector control
	       variables.

     collector sample {	periodic | manual }
	       Set  the	 sampling  mode	 to  either  periodic  or
	       manual.	If  periodic is	specified, record samples
	       at the current sampling frequency.  If  manual  is
	       specified,  record  periodic samples.  Samples can
	       be recorded manually using collector sample record
	       regardless  of  which  mode  is	specified.  If an
	       experiment is active, ignore the	 command  with	a
	       warning.

     collector sample record [name]
	       Record a	sample,	with the optional label	name.  If
	       an  experiment  is  not active, ignore the command
	       with a warning.

     collector sample period value
	       Set the sampling	 frequency  to	value,	given  in
	       seconds.	  If  an experiment is active, ignore the
	       command with a warning.

     collector dbxsample { on |	off }
	       Control the collection of samples when  dbx  stops
	       the  target process.  For the on	option,	collect	a
	       sample each time	dbx stops the target process;  if
	       off , collect no	samples.  Default is on.

     collector store directory name
	       Set the collector directory to name.  If	an exper-
	       iment  is  active, ignore the command with a warn-
	       ing.

     collector store experiment	name
	       Set the output experiment name  to  name.   If  an
	       experiment  is  active,	ignore the command with	a
	       warning.	 If a name  is	not  specified,	 use  the
	       default name. The default name is described in the
	       collect(1) man page.

     collector store group name
	       Set the experiment group	 name  to  name.   If  an
	       experiment  is  active,	ignore the command with	a
	       warning.

     collector version
	       Report the version of libcollector.so  that  would
	       be used to collect data.

     help collector
	       Prompt the user about the various  collector  com-
	       mands available.


OBSOLETE DBX COMMANDS

     A few commands previously accepted	by dbx are now	obsolete;
     they are:

     collector enable_once
	  Ignored with a warning.  The command used to allow ena-
	  bling	data collection	for just one run.

     collector close
	  Treated as collector disable if an experiment	 is  run-
	  ning.	  Ignored with a warning if no experiment is run-
	  ning.

     collector quit
	  Treated as collector disable if an experiment	 is  run-
	  ning.	  Ignored with a warning if no experiment is run-
	  ning.

     collector address_space { on | off	}
	  Address space	data is	no longer supported.  The command
	  is ignored with a warning.

     collector store filename name
	  Accepted as collector	store experiment, for compatibil-
	  ity.	Sets the output	experiment name	to name.


FOLLOWING DESCENDANT PROCESSES

     When a process that is collecting performance data	creates	a
     descendant	 process, the collector	continues to collect data
     on	the parent process, with the following	exception:  If	a
     process calls any variant of exec,	the experiment terminates
     abnormally	if the exec succeeds, and continues if	the  exec
     fails.   In  either  case,	the experiment can be read by the
     performance analysis tools.

     If	you want to record data	for  a	descendant  process,  you
     should  attach  dbx  to  the  newly created process and then
     start an experiment on the	descendant process using  collec-
     tor  enable.   If	you want to automatically collect data on
     all descendant processes, use the collect(1) command.



ATTACHING TO A PROCESS

     You can attach dbx	to a process, and use the collector  com-
     mands to collect performance data from it.

     To	 collect  data	for  applications  that	 install   signal
     handlers	 or    use   libcpc.so,	  preload   the	  library
     libcollector.so before starting the executable. This ensures
     that  the	collector's  wrapper  around the real routines is
     referenced, rather	than the routines themselves. To  preload
     the  library,  set	 the  value  of	 the environment variable
     LD_PRELOAD	to libcollector.so  and	 set  the  value  of  the
     environment  variable  LD_LIBRARY_PATH to /opt/SUNWspro/lib.
     If	using SPARC[tm]	V9 64-bit architecture,	then also set the
     environment       variable	      LD_LIBRARY_PATH_64       to
     /opt/SUNWspro/lib/v9.  If	the  performance  tools	 are  not
     installed	in /opt/SUNWspro/lib, ask your system administra-
     tor for the  correct  path.   If  you  are	 only  collecting
     clock-based  data or hardware-counter overflow data, you may
     not need to preload the collector	library,  but  preloading
     the  collector  library  ensures that the data collection is
     protected from various problems.

     To	avoid having the LD_PRELOAD setting  in	 effect	 for  all
     other  programs  started  from  the  same	shell, remove the
     LD_PRELOAD	setting	after the data-collection run.

     After the executable has been started,  determine	its  PID,
     and  attach  dbx  to  it. At that point, you can enable data
     collection.

     If	you started the	executable from	dbx without enabling data
     collection,  you can pause	it from	dbx at any time, and then
     enable data collection.


SEE ALSO

     analyzer(1), collect(1),  dbx(1),	er_archive(1),	er_cp(1),
     er_export(1),  er_mv(1), er_print(1), er_rm(1), tha(1), lib-
     collector(3), and the Performance Analyzer	manual.