Man Linux: Main Page and Category List

NAME

       sg_get_disk_io_stats,   sg_get_disk_io_stats_diff   -   get   disk   io
       statistics

SYNOPSIS

       #include <statgrab.h>

       sg_disk_io_stats *sg_get_disk_io_stats(int *entries);

       sg_disk_io_stats *sg_get_disk_io_stats_diff(int *entries);

DESCRIPTION

       Both calls take a pointer to an int, entries, which is filled with  the
       number  of  disks  the  machine  has.  This  is needed to know how many
       sg_disk_io_stats structures have been returned. A pointer  is  returned
       to the first sg_disk_io_stats.

       sg_get_disk_io_stats  returns  the  disk  IO stored in the kernel which
       holds the amount of data transferred since bootup. On  some  platforms,
       such as Solaris 7, this value is stored in a 32bit int, so wraps around
       when it reaches 4GB. Other platforms, such as Solaris 8, hold the value
       in a 64bit int, which wraps somewhere near 17 million terabytes.

       sg_get_disk_io_stats_diff is the same as sg_get_disk_io_stats except it
       will return the difference since the last call. So, for instance a call
       to sg_get_disk_io_stats_diff is made, and called again 5 seconds later.
       Over that time, 2000 bytes of traffic  were  written  and  10000  bytes
       read.  write_bytes  will store 2000 bytes, read_bytes will store 10000,
       and systime will store 5.  This function copes with wrap arounds by the
       O/S so should be seemless to use.

       On  Solaris libstatgrab will attempt to get the cXtXdXsX representation
       for the disk_name string. If it fails it will use a name like  sd0.  On
       some systems programs calling libstatgrab will need elevated privileges
       to lookup some of the names. The mappings are built up when sg_init  is
       called.

RETURN VALUES

       All  diskio  statistics  return  a  pointer  to  a  structure  of  type
       sg_disk_io_stats.

       typedef struct{
               char *disk_name;
               long long read_bytes;
               long long write_bytes;
               time_t systime;
       }sg_disk_io_stats;

       disk_name
              The name known to the operating system.  (eg. on linux it  might
              be hda)

       read_bytes
              The number of bytes the disk has read.

       write_bytes
              The number of bytes the disk has written.

       systime
              The  time  period  over  which  read_bytes  and write_bytes were
              transferred.

BUGS

       On the very first call sg_get_disk_io_stats_diff will return  the  same
       as  sg_get_disk_io_stats.   After  the first call it will always return
       the difference.

       On operating systems that hold only 32bits of data there is  a  problem
       if  the  values  wrap  twice.  For  example,  on  Solaris  7  if 9GB is
       transferred   and   the   operating   system   wraps   at   4GB,    the
       sg_get_disk_io_stats_diff function will return 5GB.

SEE ALSO

       statgrab(3)

WEBSITE

       http://www.i-scream.org/libstatgrab/