Beispiel #1
0
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);
}
Beispiel #2
0
/*
 * 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;
}
Beispiel #3
0
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;
}
Beispiel #4
0
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);
		}
	}
}
Beispiel #6
0
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);
}