double LxQtCpuLoad::getLoadCpu() const { #ifdef STATGRAB_NEWER_THAN_0_90 size_t count; sg_cpu_percents* cur = sg_get_cpu_percents(&count); #else sg_cpu_percents* cur = sg_get_cpu_percents(); #endif return (cur->user + cur->kernel + cur->nice); }
/* * CPU usage as ticks difference in percents, * see <tt>sg_get_cpu_percents(3)</tt> manpage. */ static VALUE statgrab_cpu_percents(VALUE self) { sg_cpu_percents *percents; VALUE info, time_now; if ((percents = sg_get_cpu_percents()) == NULL) statgrab_handle_error(); info = rb_hash_new(); rb_hash_aset(info, ID2SYM(rb_intern("user")), rb_float_new(percents->user)); rb_hash_aset(info, ID2SYM(rb_intern("kernel")), rb_float_new(percents->kernel)); rb_hash_aset(info, ID2SYM(rb_intern("idle")), rb_float_new(percents->idle)); rb_hash_aset(info, ID2SYM(rb_intern("iowait")), rb_float_new(percents->iowait)); rb_hash_aset(info, ID2SYM(rb_intern("swap")), rb_float_new(percents->swap)); rb_hash_aset(info, ID2SYM(rb_intern("nice")), rb_float_new(percents->nice)); rb_hash_aset(info, ID2SYM(rb_intern("time_taken")), INT2NUM(percents->time_taken)); time_now = rb_funcall(rb_cTime, rb_intern("now"), 0); rb_hash_aset(info, ID2SYM(rb_intern("last_call")), rb_funcall(time_now, rb_intern("-"), 1, INT2NUM(percents->time_taken))); return info; }
int get_stats(void) { st.cpu = sg_get_cpu_percents(); if (!st.cpu) { LOG(LOG_INFO, "could not sg_get_cpu_stats"); } st.mem = sg_get_mem_stats(); if (!st.mem) { LOG(LOG_INFO, "could not sg_get_mem_stats"); } st.swap = sg_get_swap_stats(); if (!st.swap) { LOG(LOG_INFO, "could not get_swap_stats"); } st.load = sg_get_load_stats(); if (!st.load) { LOG(LOG_INFO, "could not get_load_stats"); } st.process = sg_get_process_stats(&st.process_entries); if (!st.process) { LOG(LOG_INFO, "could not get_process_stats"); } st.paging = sg_get_page_stats_diff(); if (!st.paging) { LOG(LOG_INFO, "could not get_page_stats_diff"); } st.network = sg_get_network_io_stats_diff(&(st.network_entries)); if (!st.network) { LOG(LOG_INFO, "could not get_network_stats_diff"); } st.diskio = sg_get_disk_io_stats_diff(&(st.diskio_entries)); if (!st.diskio) { LOG(LOG_INFO, "could not get_diskio_stats_diff"); } st.disk = sg_get_fs_stats(&(st.disk_entries)); if (!st.disk) { LOG(LOG_INFO, "could not get_disk_stats"); } st.hostinfo = sg_get_host_info(); if (!st.hostinfo) { LOG(LOG_INFO, "could not get_host_info"); } st.user = sg_get_user_stats(); if (!st.user) { LOG(LOG_INFO, "could not get get_user_stats"); } return 1; }
int get_stats() { stats.cpu_percents = sg_get_cpu_percents(); stats.mem_stats = sg_get_mem_stats(); stats.swap_stats = sg_get_swap_stats(); stats.load_stats = sg_get_load_stats(); stats.process_count = sg_get_process_count(); stats.page_stats = sg_get_page_stats_diff(); stats.network_io_stats = sg_get_network_io_stats_diff(&(stats.network_io_entries)); stats.disk_io_stats = sg_get_disk_io_stats_diff(&(stats.disk_io_entries)); stats.fs_stats = sg_get_fs_stats(&(stats.fs_entries)); stats.host_info = sg_get_host_info(); stats.user_stats = sg_get_user_stats(); return 1; }
void populate_cpu() { if (use_cpu_percent) { sg_cpu_percents *cpu_p = sg_get_cpu_percents(); if (cpu_p != NULL) { add_stat(FLOAT, &cpu_p->user, "cpu", "user", NULL); add_stat(FLOAT, &cpu_p->kernel, "cpu", "kernel", NULL); add_stat(FLOAT, &cpu_p->idle, "cpu", "idle", NULL); add_stat(FLOAT, &cpu_p->iowait, "cpu", "iowait", NULL); add_stat(FLOAT, &cpu_p->swap, "cpu", "swap", NULL); add_stat(FLOAT, &cpu_p->nice, "cpu", "nice", NULL); add_stat(TIME_T, &cpu_p->time_taken, "cpu", "time_taken", NULL); } } else { sg_cpu_stats *cpu_s; cpu_s = use_diffs ? sg_get_cpu_stats_diff() : sg_get_cpu_stats(); if (cpu_s != NULL) { add_stat(LONG_LONG, &cpu_s->user, "cpu", "user", NULL); add_stat(LONG_LONG, &cpu_s->kernel, "cpu", "kernel", NULL); add_stat(LONG_LONG, &cpu_s->idle, "cpu", "idle", NULL); add_stat(LONG_LONG, &cpu_s->iowait, "cpu", "iowait", NULL); add_stat(LONG_LONG, &cpu_s->swap, "cpu", "swap", NULL); add_stat(LONG_LONG, &cpu_s->nice, "cpu", "nice", NULL); add_stat(LONG_LONG, &cpu_s->total, "cpu", "total", NULL); add_stat(TIME_T, &cpu_s->systime, "cpu", "systime", NULL); } } }
double RazorCpuLoad::getLoadCpu() const { sg_cpu_percents* cur = sg_get_cpu_percents(); return (cur->user + cur->kernel + cur->nice); }
int main(int argc, char **argv){ extern char *optarg; int c; int delay = 1; sg_cpu_percents *cpu_percent; sg_cpu_stats *cpu_diff_stats; while ((c = getopt(argc, argv, "d:")) != -1){ switch (c){ case 'd': delay = atoi(optarg); break; } } #ifdef WIN32 delay = delay * 1000; #endif /* Initialise helper - e.g. logging, if any */ sg_log_init("libstatgrab-examples", "SGEXAMPLES_LOG_PROPERTIES", argc ? argv[0] : NULL); /* Initialise statgrab */ sg_init(1); /* XXX must be replaced by termios/(n)curses function .... if( 0 != setvbuf(stdin, NULL, _IONBF, 0) ) { perror("setvbuf"); exit(1); } */ /* Drop setuid/setgid privileges. */ if (sg_drop_privileges() != SG_ERROR_NONE) { sg_die("Error. Failed to drop privileges", 1); } register_sig_flagger( SIGINT, &quit ); /* Throw away the first reading as thats averaged over the machines uptime */ sg_snapshot(); cpu_percent = sg_get_cpu_percents(NULL); if( NULL == cpu_percent ) sg_die("Failed to get cpu stats", 1); /* Clear the screen ready for display the cpu usage */ printf("\033[2J"); while( ( ( cpu_diff_stats = sg_get_cpu_stats_diff(NULL) ) != NULL ) && ( ( cpu_percent = sg_get_cpu_percents_of(sg_last_diff_cpu_percent, NULL) ) != NULL ) ) { int ch; sg_snapshot(); printf("\033[2;2H%-14s : %lld (%6.2f)", "User CPU", cpu_diff_stats->user, cpu_percent->user); printf("\033[3;2H%-14s : %lld (%6.2f)", "Kernel CPU", cpu_diff_stats->kernel, cpu_percent->kernel); printf("\033[4;2H%-14s : %lld (%6.2f)", "IOWait CPU", cpu_diff_stats->iowait, cpu_percent->iowait); printf("\033[5;2H%-14s : %lld (%6.2f)", "Swap CPU", cpu_diff_stats->swap, cpu_percent->swap); printf("\033[6;2H%-14s : %lld (%6.2f)", "Nice CPU", cpu_diff_stats->nice, cpu_percent->nice); printf("\033[7;2H%-14s : %lld (%6.2f)", "Idle CPU", cpu_diff_stats->idle, cpu_percent->idle); printf("\033[8;2H%-14s : %llu", "Ctxts", cpu_diff_stats->context_switches); printf("\033[9;2H%-14s : %llu", " Voluntary", cpu_diff_stats->voluntary_context_switches); printf("\033[10;2H%-14s : %llu", " Involuntary", cpu_diff_stats->involuntary_context_switches); printf("\033[11;2H%-14s : %llu", "Syscalls", cpu_diff_stats->syscalls); printf("\033[12;2H%-14s : %llu", "Intrs", cpu_diff_stats->interrupts); printf("\033[13;2H%-14s : %llu", "SoftIntrs", cpu_diff_stats->soft_interrupts); fflush(stdout); ch = inp_wait(delay); if( quit || (ch == 'q') ) break; } sg_shutdown(); exit(0); }