openafs/doc/man-pages/pod1/xstat_fs_test.pod
Mark Vitale 4e85324729 xstat: prevent CPU loop when -period 0
Historically xstat_cm_test and xstat_fs_test have supported option
'-period <mm>' to specify continuous operaiton for a length of time.  If
'-period 0' was specified, both programs exited immediately.

Beginning with commits 2c1a7e4733 'xstat:
add xstat_*_Wait functions' and 6b67cac432
'convert xstat and friends to pthreads', xstat_cm_test and xstat_fs_test
now support -period 0 to run "forever".  This support is implemented in
xstat_cm_Wait and xstat_fs_Wait, respectively.  Although the "wait
forever" logic was added to allow consolidation of similar code in
afsmonitor, it also changed how xstat_cm_test and xstat_fs_test behave
for '-period 0'.

Unfortunately, there is a bug in this support, at least when running on
pthreads.  After the initial 24 minute timer expires, the while (1) will
repeatedly run select with a timeout that is now 0.  This causes the
while loop to consume 100% of the CPU on which this thread is
dispatched.

Instead, modify the wait-forever logic to specify NULL for the select()
timeout value.  Also update the man page to document that '-period 0'
means forever.

Change-Id: I25d0d5be0eedb8bf3de495785b9b03a3e3d45221
Reviewed-on: https://gerrit.openafs.org/14366
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
2020-10-23 11:41:30 -04:00

127 lines
3.7 KiB
Plaintext

=head1 NAME
xstat_fs_test - Displays data collections from the File Server process
=head1 SYNOPSIS
=for html
<div class="synopsis">
B<xstat_fs_test> [I<initcmd>] S<<< B<-fsname> <I<file server name(s) to monitor>>+ >>>
S<<< B<-collID> <I<collection(s) to fetch>>+ >>> [B<-onceonly>]
S<<< [B<-frequency> <I<poll frequency, in seconds>>] >>>
S<<< [B<-period> <I<data collection time, in minutes>>] >>> [B<-debug>] [B<-version>] [B<-help>]
B<xstat_fs_test> [B<initcmd>] S<<< B<-fs> <I<File Server name(s) to monitor>>+ >>>
S<<< B<-c> <I<Collection(s) to fetch>>+ >>> [B<-o>]
S<<< [B<-fr> <I<poll frequency, in seconds>>] >>>
S<<< [B<-p> <I<data collection time, in minutes>>] >>> [B<-d>] [B<-version>] [B<-h>]
=for html
</div>
=head1 DESCRIPTION
The B<xstat_fs_test> command tests the routines in the F<libxstat_fs.a>
library and displays the data collections associated with the File Server
(the C<fs> process). The command executes in the foreground.
The command produces a large volume of output; to save it for later
analysis, direct it to a file.
=head1 OPTIONS
=over 4
=item I<initcmd>
Accommodates the command's use of the AFS command parser, and is optional.
=item B<-fsname> <I<file server name to monitor>>+
Specifies the fully qualified hostname of each file server machine for
which to monitor the File Server process.
=item B<-collID> <I<collection to fetch>>+
Specifies each data collection to return, which defines the type and
amount of data the command interpreter gathers about the File Server.
Data is returned in a predefined data structure.
There are four acceptable values:
=over 4
=item C<0>
Provides profiling information about the numbers of times different
internal File Server routines were called since the File Server
started. This value is not currently implemented; it returns no data.
=item C<1>
Reports various internal performance statistics related to the File Server
(for example, vnode cache entries and Rx protocol activity).
=item C<2>
Reports all of the internal performance statistics provided by the C<1>
setting, plus some additional, detailed performance figures about the File
Server (for example, minimum, maximum, and cumulative statistics regarding
File Server RPCs, how long they take to complete, and how many succeed).
=item C<3>
Reports File Server callback processing statistics since the File Server
started, including the number of call of callbacks added (AddCallBack), the
number of callbacks broken (BreakCallBacks), and the number of callback
space reclaims (GetSomeSpaces).
=back
=item B<-onceonly>
Gathers statistics just one time. Omit this flag to have the command
continue to probe the Cache Manager for statistics at the frequency
specified by the B<-frequency> argument; in this case press Ctrl-C to stop
the probes.
=item B<-frequency> <I<poll frequency>>
Sets the frequency in seconds at which the program initiates probes to the
Cache Manager. The default is 30 seconds.
=item B<-period> <I<data collection time>>
Sets the number of minutes the program runs; at the end of this period of
time, the program exits. The default is 10 minutes. Period 0 means run
forever.
=item B<-debug>
Displays a trace on the standard output stream as the command runs.
=item B<-help>
Prints the online help for this command. All other valid options are
ignored.
=item B<-version>
Prints the program version and then exits. All other valid options
are ignored.
=back
=head1 SEE ALSO
L<xstat_cm_test(1)>
=head1 COPYRIGHT
IBM Corporation 2000. <http://www.ibm.com/> All Rights Reserved.
This documentation is covered by the IBM Public License Version 1.0. It was
converted from HTML to POD by software written by Chas Williams and Russ
Allbery, based on work by Alf Wachsmann and Elizabeth Cassell.