Name

sg_get_disk_io_stats, sg_get_disk_io_stats_r, sg_get_disk_io_stats_diff, sg_get_disk_io_stats_diff_between, sg_free_disk_io_stats, sg_disk_io_compare_name, sg_disk_io_compare_traffic — get disk io statistics

Synopsis

#include <statgrab.h>
sg_disk_io_stats *fsfuncsg_get_disk_io_stats(entries); 
size_t *entries;
 
sg_disk_io_stats *fsfuncsg_get_disk_io_stats_r(entries); 
size_t *entries;
 
sg_disk_io_stats *fsfuncsg_get_disk_io_stats_diff(entries); 
size_t *entries;
 
sg_disk_io_stats *fsfuncsg_get_disk_io_stats_diff_between(cur,  
 last,  
 entries); 
const sg_disk_io_stats *cur;
const sg_disk_io_stats *last;
size_t *entries;
 
sg_error fsfuncsg_free_disk_io_stats(data); 
sg_disk_io_stats *data;
 
int fsfuncsg_disk_io_compare_name(va,  
 vb); 
const void *va;
const void *vb;
 
int fsfuncsg_disk_io_compare_traffic(va,  
 vb); 
const void *va;
const void *vb;
 

Description

The sg_get_disk_io_stats functions provide disk I/O statistics on a per disk basis. All get- and diff-functions take an optional entries parameter, which points (when given) to a size_t to take the number of returned vector entries.

The sg_get_disk_io_stats() and sg_get_disk_io_stats_r() functions deliver the I/O-statistics since the disk has been attached to the system. The sg_get_disk_io_stats_diff() and sg_get_disk_io_stats_diff_between() deliver the difference between two calls of sg_get_disk_io_stats() or sg_get_disk_io_stats_r(), respectively.


sg_disk_io_stats vectors got from sg_get_disk_io_stats_r() or sg_get_disk_io_stats_diff_between() must be freed using sg_free_disk_io_stats() when not needed any more. The caller is responsible for doing it.

Additionally two support functions for qsort(3) are available: sg_disk_io_compare_name() and sg_disk_io_compare_traffic().


On some platforms, such as Solaris 7, the kernel value is stored in a 32bit int, so wraps around when it reaches 4GB. Other platforms, such as Solaris 8 (and most other modern systems), hold the value in a 64bit int, which wraps somewhere near 17 million terabytes. The sg_get_disk_io_stats_diff() function and the sg_get_disk_io_stats_diff_between() function care about these overflows and try to detect overflows when the diff is calculated.

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 for the first time.