Provided by: libstatgrab-dev_0.92.1-1.2build1_amd64 bug

NAME

       sg_get_cpu_stats,      sg_get_cpu_stats_r,      sg_get_cpu_stats_diff,     sg_get_cpu_stats_diff_between,
       sg_get_cpu_percents, sg_get_cpu_percents_of, sg_get_cpu_percents_r, sg_free_cpu_stats - get cpu usage

SYNOPSIS

       #include <statgrab.h>

       sg_cpu_percents *sg_get_cpu_percents (size_t *entries);

       sg_cpu_percents *sg_get_cpu_percents_of (sg_cpu_percent_source cps, size_t *entries);

       sg_cpu_percents *sg_get_cpu_percents_r (const sg_cpu_stats *whereof, size_t *entries);

       void sg_free_cpu_percents (sg_cpu_percents *data);

       sg_cpu_stats *sg_get_cpu_stats (size_t *entries);

       sg_cpu_stats *sg_get_cpu_stats_diff (size_t *entries);

       sg_cpu_stats *sg_get_cpu_stats_r (size_t *entries);

       sg_cpu_stats *sg_get_cpu_stats_diff_between (const sg_cpu_stats *cpu_now, const sg_cpu_stats *cpu_last,
                                                   size_t *entries);

       sg_error sg_free_cpu_stats (sg_cpu_stats *data);

DESCRIPTION

       These   are   the  categories  of  data  delivered  by  the  cpu  stats  module:  sg_get_cpu_stats()  and
       sg_get_cpu_stats_r()   deliver   native   cpu   counters   since   the   machine   has   been    started,
       sg_get_cpu_stats_diff()  and  sg_get_cpu_stats_diff_between()  deliver  native  cpu  counters between two
       sg_get_cpu_stats() calls and  sg_get_cpu_percents_of()  and  sg_get_cpu_percents_r()  deliver  correlated
       relative cpu counters (where total is 100%).

       API Shortcut

       ┌──────────────────────────────┬───────────────────┬────────────────────────────┐
       │function                      │ returns           │ data owner                 │
       ├──────────────────────────────┼───────────────────┼────────────────────────────┤
       │sg_get_cpu_stats              │ sg_cpu_stats *    │ libstatgrab (thread local) │
       ├──────────────────────────────┼───────────────────┼────────────────────────────┤
       │sg_get_cpu_stats_r            │ sg_cpu_stats *    │ caller                     │
       ├──────────────────────────────┼───────────────────┼────────────────────────────┤
       │sg_get_cpu_stats_diff         │ sg_cpu_stats *    │ libstatgrab (thread local) │
       ├──────────────────────────────┼───────────────────┼────────────────────────────┤
       │sg_get_cpu_stats_diff_between │ sg_cpu_stats *    │ caller                     │
       ├──────────────────────────────┼───────────────────┼────────────────────────────┤
       │sg_get_cpu_percents_of        │ sg_cpu_percents * │ libstatgrab (thread local) │
       ├──────────────────────────────┼───────────────────┼────────────────────────────┤
       │sg_get_cpu_percents_r         │ sg_cpu_percents * │ caller                     │
       └──────────────────────────────┴───────────────────┴────────────────────────────┘
       The sg_cpu_stats buffer received from sg_get_cpu_stats_r()  and  the  sg_get_cpu_stats_diff_between()  as
       well   as   the  sg_cpu_percents  buffer  received  from  sg_get_cpu_percents_r()  must  be  freed  using
       sg_free_cpu_stats() or the sg_free_cpu_percents(), respectively, when not needed any more. The caller  is
       responsible for doing it.

       The  value  stored  (the "ticks") will vary between operating systems. For example Solaris has a total of
       100 per second, while Linux has substantially more. Also, different  operating  systems  store  different
       information - you won't find nice cpu on Solaris for example.

       Modern   systems   shall   provide   information   about   the   clock   tick   resolution   by  invoking
       sysconf(_SC_CLK_TCK).

RETURN VALUES

       There are two structures returned by the CPU statistics functions.

       typedef struct {
               unsigned long long user;
               unsigned long long kernel;
               unsigned long long idle;
               unsigned long long iowait;
               unsigned long long swap;
               unsigned long long nice;
               unsigned long long total;

               unsigned long long context_switches;
               unsigned long long voluntary_context_switches;
               unsigned long long involuntary_context_switches;
               unsigned long long syscalls;
               unsigned long long interrupts;
               unsigned long long soft_interrupts;

               time_t systime;
       } sg_cpu_stats;

       typedef struct {
               double user;
               double kernel;
               double idle;
               double iowait;
               double swap;
               double nice;
               time_t time_taken;
       } sg_cpu_percents;

       user kernel idle iowait swap nice total
              The different CPU states.

       context_switches    voluntary_context_switches    involuntary_context_switches    syscalls     interrupts
       soft_interrupts
              The different program actions on CPU.

       systime time_taken
              The time taken in seconds since the last call of the function, or the system time.

SEE ALSO

       statgrab(3)

WEBSITE

       ⟨https://libstatgrab.org/⟩