Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
TEAM(1)			    General Commands Manual		       TEAM(1)

       team - parallel "pipe", allows asynchronous io

       team  [-r]  [-v]	[-i volsize [b|k|m]] [-o volsize [b|k|m]] [blocksize [
       [b|k|m] [processes]]

       Team just copies	its standard input to its standard output. It does  so
       however	forking	 a  team  of independent processes (default is 4), ar-
       ranged in a ring, with reads overlapped with writes.

       Each process will wait for the  end  of	the  read  phase  of  previous
       process,	will then read blocksize bytes (or 512 byte blocks if suffixed
       with b or kilobytes if suffixed with k, or megabytes if	suffixed  with
       m;  the	default	 is  20k)  from	 its standard input, activate the next
       process read phase, wait	for the	previous process write phase end, then
       write  to  its  standard	 output,  and  activate	the next process write

       If the input or output volume ends or an	IO  error  is  detected,  team
       will  ask  wehtether  the  user wants to	continue (but only if the con-
       cerned volume is	a block	or character device and	the program's standard
       error channel is	a tty device). Possible	answers	are

       c      This  means  that	 the  user  wishes  to	continue, but the file
	      pointer shall be reset to	the beginning of the volume, as	a  new
	      volume  has been started anew. This is the the answer to give on
	      end of volume when writing to multiple floppies, etc...

       y      The user simply wishes to	continue, without any change.

       n      The user wishes to stop;	the  program  will  be	terminated  or

       There are just three options, as	follows:

       -i     The  value that follows the option is the	assumed	volume size of
	      the input, and it	is expressed in	the same units as  the	buffer

       -o     The  value that follows the option is the	assumed	volume size of
	      the output, and it is expressed in the same units	as the	buffer

       -v     If  specified as each buffer is read or written the total	number
	      of kilobytes read	or written that	far is printed.

       -r     If specified the number of kilobytes processed and the number of
	      seconds taken is not printed at the end of the run.

       Team consumes system time to synchronize	and task switch	among its pro-
       cesses; also, in	order to avoid slowing it, it is best run on a	quies-
       cent system.

       This  program is	most useful for	output to a device, especially where a
       streaming tape is involved. It may be used to advantage	with  disc  to
       disc and	disc to	tape copies.

       find dir	-print | cpio -oBc | team 20k 8	>/dev/rmt0
       team 20k	4 </dev/rmt0 | cpio -iBcdmu
       pax -w -b 4k * |	team -o	1200k 15k 2 >/dev/rdsk/f0t

       You are advised to experiment with different combinations of block size
       and number of processes;	each program used with team  works  best  with
       certain	parameters,  and performance depends even more strongly	on the
       output device, so experiment with parameters also for  this  (it	 seems
       that the	blocking factor	of the process that feeds team ought to	be in-
       ferior to that given to it, and possibly	inferior to the	limit  on  the
       size of a pipe for your version of the system).	Team ought to be adap-
       tive, and adjust	dynamically both parameters, in	order to reach a state
       where  there  is	 no  pause between each	stage of the ring. This	is too
       difficult to achieve under UNIX.

       Notice also that	this program will read and write  blocks  all  of  the
       same size as prescribed,	except the last, even when reading from	pipes;
       if a read from its input	supplies less bytes than the prescribed	 block
       size,  this  program will read again until its buffer is	filled to norm
       or the input finishes.

       A final note: it	is usually advantageous	to give	to team	a  block  size
       that  is	a multiple of the block	size produced by the program before it
       in a pipeline. Notice that in many cases, such  as  the	tape  archival
       programs,  the  output  will  not  be directly recognizable to the tape
       archiver	in input, but will have	to be reblocked	back to	the  blocksize
       expected	 by  the tape archiver either by way of	dd or reapplication of
       team, that is much faster of course.

       Team will emit a	number of messages comprehensible only to  the	author
       in case of errors. Plase	note them and report them to the author.

       This  is	 not  strictly a bug in	this program, but rather a limitation;
       some device drivers will	have problems when you change volume when this
       program	asks  you whether to continue operation. They require that the
       device be closed	and opened again whenever a volume is changed.	Unfor-
       tunately	 this  cannot  be done,	given the structure of team; with such
       device drivers you effectively cannot use team to write	multiple  vol-

       Some device drivers, on physical	end of file or volume while writing do
       not do the decent thing,	and write a legible truncated block and	return
       its  length;  some drivers, e.g.	some tape drivers, handle physical eof
       on write	quite badly. With these	drivers	you had	better use the -o  op-
       tion  to	 set  a	logical	EOF if you want	to use multiple	volumes. As an
       hint, give the volume size as about five	percent	less than the nominal.
       Whatever	 value you use for output, take	not of it, as you will have to
       use exactly the same value for input!


       Piercarlo Grandi, Milano.

				     (pg)			       TEAM(1)


Want to link to this manual page? Use this URL:

home | help