manpagez: man pages & more
man cvdb(8)
Home | html | info | man
cvdb(8)                                                                cvdb(8)




NAME

       cvdb - Xsan Client File System Debugger


SYNOPSIS

       cvdb [options]


DESCRIPTION

       cvdb  provides  a mechanism for developers and system administrators to
       extract debugging information from the Xsan File System client filesys-
       tem.   It  can  be used by system administrators to change the level of
       system logging that the client filesystem performs.  There  is  also  a
       switch to retrieve various statistics.


USAGE

       cvdb  is  a multi-purpose debugging tool, performing a variety of func-
       tions. A rich set of options provide the user with control over various
       debug and logging functions. The main features of cvdb are as follows:
            Control debug logging.
            Control level and verbosity of syslog logging.
            Retrieve statistics.


OPTIONS

       -g     Retrieve  the  debug log from a running system. The log pointers
              are reset after this command, so that  the  next  invocation  of
              cvdb -g will retrieve new information from the buffer.

       -C     Continuously  snap the trace.  (Only useful with the -g option.)

       -S stopfile
              Stop snapping the trace when the file stopfile  appears.   (Only
              useful when also using the -g and -C options.)

       -D msec
              Delay  msec  milliseconds  between  trace snaps.  The default is
              1000 msec or one second.  (Only useful when also  using  the  -C
              and -g options.)

       -F     Save  the  trace  output  to  files  named  cvdbout.000000, cvd-
              bout.000001, etc.  instead of writing to standard output.  These
              files  will appear in the current working directory.  (Only use-
              ful when also using the -C and -g options.)

       -n cnt After writing cnt files, overwrite the cvdbout out files  start-
              ing with cvdbout.000000.  This will essentially "wrap" the trace
              output.

       -N name
              Use name instead of cvdbout for the cvdb  output  files.   (Only
              useful when also using the -C, -g, and -F options.)

       -d     Disable debug logging. This is the initial (start-up) default.

       -e     Enable debug logging. Disabled by default.  Note: care should be
              taken when enabling logging in a production environment as  this
              can significantly reduce file system performance.

       -m modules=bitvector logmask=bitvector
              Specify the trace points for a given module or modules.

       -l     List the current trace points and their mask values.

       -L     List the available trace/debug points.

       -s syslog={none|notice|info|debug}
              Set  the  syslog logging value. The default at mount time is no-
              tice. See mount_acfs(8) for more information.

       -R size=[nbytes[k|m|g]]
              Resize the the debug log.  By default, the size of  the  log  is
              4MB.  The minimum allowed size is 32768 bytes.

       -v     Be verbose about the operations.

       -i     Print  various statistics about the directory cache.  If enabled
              and configured, the directory cache contains a number of buffers
              of directory contents.  This cache is shared by all mounted Xsan
              file systems.  Without -v, the following are printed:

                     The number of directory buffers currently cached and  the
                     maximum number allowed.

                     The number of times a buffer has been "hit" in the cache.

                     The number of times a cache search missed and required an
                     RPC to the MDC.

                     The  number  of times a read of the directory re-used the
                     LAST buffer that was used on the  previous  read  of  the
                     same  directory (similar to a cache hit but doesn't probe
                     the cache).

                     The number of times a read of a directory  specified  the
                     EOF offset.

                     The  number  of  times the directory cache for a specific
                     directory was invalidated.  For example, if the directory
                     contents  changed after it was read and a subsequent read
                     directory was done thereby causing the invalidation.

              If -v is also specified, -i displays more statistics.  Note that
              there  are  2 hashes in the directory cache: one for all buffers
              and one by directory and file system.

                     The number of entries in the hash used to find dir  cache
                     buffers.

                     The  # of searches using the directory cache buffer hash.

                     The total # of probes searching the directory  cache  for
                     buffers.   This  can  be larger than searches in the hash
                     since multiple buffers may hit the same hash bucket.

                     The maximum probes after hitting a particular hash bucket
                     (for buffers).

                     The maximum probes in the hash by directory and file sys-
                     tem.

              -b     Print various statistics about each  buffer  cache.   The
                     only  other  option  that  can  be  used with this is -v.
                     There   are   buffer   caches   per   cachebufsize,   see
                     mount_acfs(8).   For  each buffer cache, the following is
                     printed:

                            # of mounted file systems using this buffer cache

                            # of buffers and total memory used

                            # of cache hits (and percentage)

                            # of cache misses (and percentage)

                            # of checks for write throttling to  prevent  over
                            use  by one file system.  Write throttles only oc-
                            cur when more than 1  file  system  is  using  the
                            cache.

                            # of times writes were throttled

                     If  the -v option is also used with -b, the following ad-
                     ditional statistics are printed for each buffer cache:

                            buffercachecap, see mount_acfs(8)

                            buffercachewant (internal, means thread is waiting
                            for a buffer)

                            bufhashsize  (internal,  # of entries in hash used
                            to search buffers)

                            bcdirtycnt (internal, # of  buffers  with  "dirty"
                            data queued in cache)

                            dirty_ndone  (internal, bcdirtycnt + buffers being
                            written)

                            flusheractive (internal,  flag  indicating  buffer
                            flusher is active)

                            deferredflush (internal, # of buffers deferred af-
                            ter files are closed)

                            dirtywaiters (internal, # of threads  waiting  due
                            to throttling)

                            rsvd  max  (internal,  maximum  amount of reserved
                            space seen)

                            non-zero rsvd min (internal, minimum amount of re-
                            served space seen > 0)

                            successful rsvd requests (internal, # of times re-
                            served space was needed)

                            failed rsvd requests (internal,  #  of  times  re-
                            served space not available)

              -B     Print  buffer  cache statistics using a curses based dis-
                     play that refreshes every second.  Statistics  are  main-
                     tained  separately  for  reads and writes, for each cache
                     segment, and each mount point.  Statistics labeled  Cumu-
                     lative  are  those representing the totals since the com-
                     mand was invoked or since the last reset.  Those  labeled
                     Current  represent  the  change  in  the last one second,
                     roughly corresponding to the display refresh interval.

                     Two keystrokes are interactively  recognized  on  systems
                     supporting  curses.  A q, quit, will cause the display to
                     terminate.  An r, reset, will reset the cumulative  coun-
                     ters to zeros.

                     The  -B  option is intended to be used to to analyze per-
                     formance of the buffer cache with  various  applications,
                     I/O subsystems, and various configuration parameters.

                     The  refreshing display is supported on clients that have
                     a curses capability.  Other clients will produce  a  line
                     oriented output with similar content.

                     A  deadman timer will terminate the display after 30 sec-
                     onds with no file systems  mounted.   This  is  to  avoid
                     hanging during file system shutdown.

              -x     Print distributed LAN proxy client and server statistics.
                     The only other options that can be used with this are  -X
                     and  -f.   The proxy statistics are collected at both the
                     client and server ends  of  each  proxy  connection.  The
                     client  will  have  a connection entry for each path to a
                     proxy server for each proxy client file system.  A  proxy
                     server will have a connection entry for each path to each
                     client which has the file sytem mounted.

                     Note: The distributed LAN proxy options are  only  avail-
                     able  on  platforms  which  support  the  distributed LAN
                     client or server.

                     The following information is  displayed  for  each  proxy
                     connection:

                            Client/Server System ID This IP address identifies
                                   the remote host.

                            Client  IP  Addr The IP address of the Client side
                                   of the connection.

                            Server IP Addr The IP address of the  Server  side
                                   of the connection.

                            Read Bytes/Sec Measured recent read performance of
                                   the connection.

                            Write Bytes/Sec Measured recent write  performance
                                   of the connection.

                            FS Read Bytes/Sec Measured recent read performance
                                   for all connections for this file system.

                            FS Write Bytes/Sec Measured recent  write  perfor-
                                   mance  for  all  connections  for this file
                                   system.

                            Queued I/O Outstanding I/O (backlog) for this con-
                                   nection.   The  backlog  is  meaningful for
                                   client side connections only.

              -X option
                     Dump statistics for each path in  comma  separated  value
                     (CSV) format.  (Only useful with the -x option.) The fol-
                     lowing options are available:

                     1  Dump remote endpoint IP address and backlog in  bytes.
                        This option is only relevant for client mounts.

                     2  Dump  remote  endpoint  IP  address and read bytes per
                        second.

                     3  Dump remote endpoint IP address and  write  bytes  per
                        second.

              -f fsname
                     Specifies  the file system name associated with an action
                     option.  For proxy statistics(-x option), filter on  con-
                     nections  for  the  given file system.  This parameter is
                     required for the read/write statistics (-y or -Y) option.


              -y, -Y Display  the  read/write  statistics  for the file system
                     specified with the -f  option  (required).  If  -Y,  also
                     clear the stats.

              -z     NOTE: Not intended for general use.  Only use when recom-
                     mended by Quantum  Support  as  a  performance  measuring
                     tool.   Setting  this option could result in data corrup-
                     tion, loss of data, or unintended exposure of  uninitial-
                     ized disk data!!

                     This  option turns on the DEVNULL capability and only ap-
                     plies to linux clients.  Once enabled  this  option  will
                     continue to be enabled until reboot.  When this option is
                     enabled, all I/O for files with the DEVNULL  affinity  is
                     not  performed  at  the lowest level.  The code paths are
                     all executed including the allocation of space,  but  the
                     data  is  not  read  or written to disk.  Instead, writes
                     simply complete the I/O and return and reads zero out the
                     "read" buffer and complete the I/O.

                     Files without the DEVNULL affinity are unaffected by this
                     setting.

                     Before attempting to use this capability,  make  sure  no
                     one  is  already using DEVNULL as an affinity on any file
                     system the client has access too.  Then, modify the  file
                     system  configuration  file, snfs_config(5), for the file
                     system under test to contain DEVNULL as an affinity on at
                     least one stripe group that can hold data.  Next, restart
                     the fsm.  Then, use cvmkdir(1) with -k DEVNULL to  create
                     a  directory to hold files to be used for this test.  Fi-
                     nally, enable the feature with this option, cvdb -z.


DEBUG LOGGING

       Developing code that runs in the kernel is very different than program-
       ming  a user-level application. To assist plugin developers who may not
       be familiar with the kernel environment, Xsan provides a simple "trace-
       point  like"  debugging  mechanism. This mechanism allows developers to
       use printf-like statements to assist in debugging their code.

       To use the debugging facility, each module  (typically  a  ".c"  file),
       must declare a structure of type ModuleLogInfo_t. This structure is de-
       fined in include/sys/irix/log.h. This structure defines the name of the
       module as it will appear in the debug statements, and indicates the de-
       bug level that is in effect for that module.

          ModuleLogInfo_t  MyLogModule =
                  { "mymodule_name", DEBUGLOG_NONE};


       To use the facility, each module must call the AddLogModule()  routine.
       This  is  typically  done  when the module is first initialized (in the
       xxx_start() routine for a plugin). When logging is no  longer  required
       (as  when the plugin is unloaded), the module should call RemoveLogMod-
       ule() to free up the system resources.

       Logging is not enabled by default. To enable logging at any time, spec-
       ify the enable flag (-e)

          shrubbery %h: cvdb -e

       To disable logging, specify the disable flag.

          shrubbery %h: cvdb -d -v
          Disabling debug logging

       The  level  of  debugging  is controlled via a 64-bit mask. This allows
       each module to have 64 different, discrete trace/log points. If the log
       point  is  enabled  when  the code is executed, the trace point will be
       dumped to the circular buffer.

       A complete listing of all the pre-defined trace points can be  obtained
       via:

          rabbit %h:   cvdb -L
          Trace points:
              cvENTRY      0x0001
              cvEXIT       0x0002
              cvINFO       0x0004
              cvNOTE       0x0008
              cvWARN       0x0010
              cvMEM        0x0020
              cvNUKE       0x0040
              cvLOOKUP     0x0080
              cvGATE       0x0100
              cvSTRAT      0x0200
              cvRWCVP      0x0400

       These  trace points would then be used to control the verbosity of log-
       ging. Using the example above, if the cvEXIT and  cvINFO  trace  points
       are enabled, then only those trace points would be dumped to the log.

       To  enable  the  trace points, the first step is to determine the ID of
       the module. This is done with the list command.

          shrubbery %h: cvdb -l
          Module 'cvfs_memalloc'  module 0x000001 logmask 0x0000000000000000
          Module 'cvfs_fsmsubr'   module 0x000002 logmask 0x0000000000000000
          Module 'cvfs_fsmdir'    module 0x000004 logmask 0x0000000000000000
          Module 'cvfs_fsmvfsops' module 0x000008 logmask 0x0000000000000000
          Module 'cvfs_fsmvnops'  module 0x000010 logmask 0x0000000000000000
          Module 'cvfs_sockio'    module 0x000020 logmask 0x0000000000000000
          Module 'cvfs_subr'      module 0x000040 logmask 0x0000000000000000
          Module 'cvfs_vfsops'    module 0x000080 logmask 0x0000000000000000
          Module 'cvfs_vnops'     module 0x000100 logmask 0x0000000000000000
          Module 'cvfs_dmon'      module 0x000200 logmask 0x0000000000000000
          Module 'cvfs_rwlock'    module 0x000400 logmask 0x0000000000000000
          Module 'cvfs_rw'        module 0x000800 logmask 0x0000000000000000
          Module 'cvfs_fsmtokops' module 0x001000 logmask 0x0000000000000000
          Module 'cvfs_extent'    module 0x002000 logmask 0x0000000000000000
          Module 'cvfs_plugin'    module 0x004000 logmask 0x0000000000000000
          Module 'cvfs_disk'      module 0x008000 logmask 0x0000000000000000

       To enable the cvENTRY and cvEXIT trace points of  the  plugin,  rwlock,
       vnops, and memalloc routines, use the modules command.

          shrubbery %h: cvdb -m modules=0x4501 logmask=3

       The  bit  masks  are additive, not replacement. This means that modules
       and trace points you do not specify are unaffected. To turn on all  de-
       bugging on all trace points, specify minus one (-1).

          shrubbery %h: cvdb -m modules=-1 logmask=-1

       Once the module has been added to the system, log messages will then be
       dumped into a 1 meg circular buffer. Modules may find it convenient  to
       declare  a  macro in each file so that the form of log messages will be
       the same in each file. For example, the following macro definition  and
       following  log function would dump information to the log buffer if the
       trace point is enabled:

          #define LOGINFO          (&MyLogModule)

          LogMsg(LOGINFO, cvEXIT, "Plugin read return error %d bytes %llx",
                    error, num_bytes);

       To extract the messages from the log on a running system,  use  the  -g
       option of cvdb.


SYSLOG

       The Xsan client file system can log certain events so that they show up
       on the system console and in the system log, /var/adm/SYSLOG. The  ver-
       bosity  of messages can be controlled via the syslog parameter. The de-
       fault is to log all messages.  See syslogd(1M) for more information  of
       setting up system logging.

       There  are  four log levels: none, notice, info, and debug . The levels
       are prioritized so that the debug level is the  most  verbose;  setting
       the  level  to  none will turn off logging completely.  The events that
       are logged at each level are as follows:

       notice
              o reconnection with the FSM.

       info
              o all notice messages, plus
              o socket daemon termination

       debug
              o Currently unused

       The log level is set to debug by default.


BUSY UNMOUNTS

       Occasionally, it will be impossible to unmount  the  Xsan  volume  even
       when  it appears that all processes are no longer using the volume. The
       problem is that the processes are most  likely  in  the  zombie  state;
       while they do not show up in ps, then can be found using icrash. Usual-
       ly, these processes are waiting on a lock in the Xsan file  system,  or
       waiting for a response from the FSM.


DEBUG LOGGING EXAMPLES

       To enable logging:
              cvdb -e

       To disable logging:
              cvdb -d

       To retrieve (get) log information on a running system:
              cvdb -g > cvdbout

       To  continuously retrieve log information on a running system, snapping
       the trace once per second:
              cvdb -g -C > cvdbout

       To  continuously retrieve log information on a running system, snapping
       the trace once every two seconds and stopping when the file named  STOP
       appears:
              cvdb -g -C -D 2000 -S STOP > cvdbout

       To  continuously retrieve log information on a running system, and save
       the output to files named cvdbout.000000,  cvdbout.0000001,  etc.   and
       wrapping after 100 files have been written:
              cvdb -g -C -F -n 100

       To  continuously  snap traces named /tmp/snap.000000, /tmp/snap.000001,
       etc.:
              cvdb -g -C -F -N /tmp/snap

       To list all the modules and their enabled trace points:
              cvdb -l

       To set trace points in individual modules:
              cvdb -m modules=bitmask_of_modules logmask=tracepoints.

       To resize the log to 12 megabytes:
              cvdb -R 12m

       To dump out all the pre-defined trace points:
              cvdb -L


SEE ALSO

       syslogd(1M), umount(8), cvdbset(8)



Xsan File System                  March 2015                           cvdb(8)

Mac OS X 10.12.3 - Generated Thu Feb 9 18:12:18 CST 2017
© manpagez.com 2000-2024
Individual documents may contain additional copyright information.