📄 libmetrics.c
字号:
val.f = diff / t; } last_bytes_in = bytes_in; last_pkts_in = pkts_in; last_pkts_out = pkts_out; last_bytes_out = bytes_out; stamp = proc_net_dev.last_read; } debug_msg(" ********** BYTES_IN RETURN: %f", val.f); return val;}g_val_tcpu_num_func ( void ){ static int cpu_num = 0; g_val_t val; /* Only need to do this once */ if (! cpu_num) { /* We'll use _SC_NPROCESSORS_ONLN to get operating cpus */ cpu_num = get_nprocs(); } val.uint16 = cpu_num; return val;}g_val_tcpu_speed_func ( void ){ char *p; static g_val_t val = {0};/* i386, ia64, x86_64 and hppa all report MHz in the same format */#if defined (__i386__) || defined(__ia64__) || defined(__hppa__) || defined(__x86_64__) if (! val.uint32 ) { p = proc_cpuinfo; p = strstr( p, "cpu MHz" ); if(p) { p = strchr( p, ':' ); p++; p = skip_whitespace(p); val.uint32 = (uint32_t)strtol( p, (char **)NULL , 10 ); } else { val.uint32 = 0; } }#endif#if defined (__alpha__) if (! val.uint32 ) { int num; p = proc_cpuinfo; p = strstr( p, "cycle frequency [Hz]" ); if(p) { p = strchr( p, ':' ); p++; p = skip_whitespace(p); sscanf(p, "%d", &num); num = num / 1000000; /* Convert to Mhz */ val.uint32 = (uint32_t)num; } else { val.uint32 = 0; } }#endif#if defined (__powerpc__) if (! val.uint32 ) { p = proc_cpuinfo; p = strstr( p, "clock" ); if(p) { p = strchr( p, ':' ); p++; p = skip_whitespace(p); val.uint32 = (uint32_t)strtol( p, (char **)NULL , 10 ); } else { val.uint32 = 0; } }#endif return val;}g_val_tmem_total_func ( void ){ char *p; g_val_t val; p = strstr( update_file(&proc_meminfo), "MemTotal:"); if(p) { p = skip_token(p); val.uint32 = strtol( p, (char **)NULL, 10 ); } else { val.uint32 = 0; } return val;}g_val_tswap_total_func ( void ){ char *p; g_val_t val; p = strstr( update_file(&proc_meminfo), "SwapTotal:" ); if(p) { p = skip_token(p); val.uint32 = strtol( p, (char **)NULL, 10 ); } else { val.uint32 = 0; } return val;}g_val_tboottime_func ( void ){ char *p; g_val_t val; p = update_file(&proc_stat); p = strstr ( p, "btime" ); if(p) { p = skip_token ( p ); val.uint32 = strtod ( p, (char **)NULL ); } else { val.uint32 = 0; } return val;}g_val_tsys_clock_func ( void ){ g_val_t val; val.uint32 = time(NULL); return val;}g_val_tmachine_type_func ( void ){ g_val_t val; #ifdef __i386__ snprintf(val.str, MAX_G_STRING_SIZE, "x86");#endif#ifdef __x86_64__ snprintf(val.str, MAX_G_STRING_SIZE, "x86_64");#endif#ifdef __ia64__ snprintf(val.str, MAX_G_STRING_SIZE, "ia64");#endif#ifdef __sparc__ snprintf(val.str, MAX_G_STRING_SIZE, "sparc");#endif#ifdef __alpha__ snprintf(val.str, MAX_G_STRING_SIZE, "alpha");#endif#ifdef __powerpc__ snprintf(val.str, MAX_G_STRING_SIZE, "powerpc");#endif#ifdef __m68k__ snprintf(val.str, MAX_G_STRING_SIZE, "m68k");#endif#ifdef __mips__ snprintf(val.str, MAX_G_STRING_SIZE, "mips");#endif#ifdef __arm__ snprintf(val.str, MAX_G_STRING_SIZE, "arm");#endif#ifdef __hppa__ snprintf(val.str, MAX_G_STRING_SIZE, "hppa");#endif#ifdef __s390__ snprintf(val.str, MAX_G_STRING_SIZE, "s390");#endif return val;}g_val_tos_name_func ( void ){ g_val_t val; snprintf(val.str, MAX_G_STRING_SIZE, "Linux"); return val;}g_val_tos_release_func ( void ){ g_val_t val; snprintf(val.str, MAX_G_STRING_SIZE, "%s", proc_sys_kernel_osrelease); return val;}/* * A helper function to return the total number of cpu jiffies */unsigned longtotal_jiffies_func ( void ){ char *p; unsigned long user_jiffies, nice_jiffies, system_jiffies, idle_jiffies, wio_jiffies, irq_jiffies, sirq_jiffies; p = update_file(&proc_stat); p = skip_token(p); p = skip_whitespace(p); user_jiffies = strtod( p, &p ); p = skip_whitespace(p); nice_jiffies = strtod( p, &p ); p = skip_whitespace(p); system_jiffies = strtod( p , &p ); p = skip_whitespace(p); idle_jiffies = strtod( p , &p ); if(num_cpustates == NUM_CPUSTATES_24X) return user_jiffies + nice_jiffies + system_jiffies + idle_jiffies; p = skip_whitespace(p); wio_jiffies = strtod( p , &p ); p = skip_whitespace(p); irq_jiffies = strtod( p , &p ); p = skip_whitespace(p); sirq_jiffies = strtod( p , &p ); return user_jiffies + nice_jiffies + system_jiffies + idle_jiffies + wio_jiffies + irq_jiffies + sirq_jiffies; } g_val_tcpu_user_func ( void ){ char *p; static g_val_t val; static int stamp; static double last_user_jiffies, user_jiffies, last_total_jiffies, total_jiffies, diff; p = update_file(&proc_stat); if(proc_stat.last_read != stamp) { stamp = proc_stat.last_read; p = skip_token(p); user_jiffies = strtod( p , (char **)NULL ); total_jiffies = total_jiffies_func(); diff = user_jiffies - last_user_jiffies; if ( diff ) val.f = (diff/(total_jiffies - last_total_jiffies))*100; else val.f = 0.0; last_user_jiffies = user_jiffies; last_total_jiffies = total_jiffies; } return val;}g_val_tcpu_nice_func ( void ){ char *p; static g_val_t val; static int stamp; static double last_nice_jiffies, nice_jiffies, last_total_jiffies, total_jiffies, diff; p = update_file(&proc_stat); if(proc_stat.last_read != stamp) { stamp = proc_stat.last_read; p = skip_token(p); p = skip_token(p); nice_jiffies = strtod( p , (char **)NULL ); total_jiffies = total_jiffies_func(); diff = (nice_jiffies - last_nice_jiffies); if ( diff ) val.f = (diff/(total_jiffies - last_total_jiffies))*100; else val.f = 0.0; last_nice_jiffies = nice_jiffies; last_total_jiffies = total_jiffies; } return val;}g_val_t cpu_system_func ( void ){ char *p; static g_val_t val; static int stamp; static double last_system_jiffies, system_jiffies, last_total_jiffies, total_jiffies, diff; p = update_file(&proc_stat); if(proc_stat.last_read != stamp) { stamp = proc_stat.last_read; p = skip_token(p); p = skip_token(p); p = skip_token(p); system_jiffies = strtod( p , (char **)NULL ); if (num_cpustates > NUM_CPUSTATES_24X) { p = skip_token(p); p = skip_token(p); p = skip_token(p); system_jiffies += strtod( p , (char **)NULL ); /* "intr" counted in system */ p = skip_token(p); system_jiffies += strtod( p , (char **)NULL ); /* "sintr" counted in system */ } total_jiffies = total_jiffies_func(); diff = system_jiffies - last_system_jiffies; if ( diff ) val.f = (diff/(total_jiffies - last_total_jiffies))*100; else val.f = 0.0; last_system_jiffies = system_jiffies; last_total_jiffies = total_jiffies; } return val;}g_val_t cpu_idle_func ( void ){ char *p; static g_val_t val; static int stamp; static double last_idle_jiffies, idle_jiffies, last_total_jiffies, total_jiffies, diff; p = update_file(&proc_stat); if(proc_stat.last_read != stamp) { stamp = proc_stat.last_read; p = skip_token(p); p = skip_token(p); p = skip_token(p); p = skip_token(p); idle_jiffies = strtod( p , (char **)NULL ); total_jiffies = total_jiffies_func(); diff = idle_jiffies - last_idle_jiffies; if ( diff ) val.f = (diff/(total_jiffies - last_total_jiffies))*100; else val.f = 0.0; last_idle_jiffies = idle_jiffies; last_total_jiffies = total_jiffies; } return val;}g_val_t cpu_aidle_func ( void ){ char *p; g_val_t val; double idle_jiffies, total_jiffies; p = update_file(&proc_stat); p = skip_token(p); p = skip_token(p); p = skip_token(p); p = skip_token(p); idle_jiffies = strtod( p , (char **)NULL ); total_jiffies = total_jiffies_func(); val.f = (idle_jiffies/total_jiffies)*100; return val;}g_val_t cpu_wio_func ( void ){ char *p; static g_val_t val; static int stamp; static double last_wio_jiffies, wio_jiffies, last_total_jiffies, total_jiffies, diff; if (num_cpustates == NUM_CPUSTATES_24X) { val.f = 0.; return val; } p = update_file(&proc_stat); if(proc_stat.last_read != stamp) { stamp = proc_stat.last_read; p = skip_token(p); p = skip_token(p); p = skip_token(p); p = skip_token(p); p = skip_token(p); wio_jiffies = strtod( p , (char **)NULL ); total_jiffies = total_jiffies_func(); diff = wio_jiffies - last_wio_jiffies; if ( diff ) val.f = (diff/(total_jiffies - last_total_jiffies))*100; else val.f = 0.0; last_wio_jiffies = wio_jiffies; last_total_jiffies = total_jiffies; } return val;}g_val_t cpu_intr_func ( void ){ char *p; static g_val_t val; static int stamp; static double last_intr_jiffies, intr_jiffies, last_total_jiffies, total_jiffies, diff; if (num_cpustates == NUM_CPUSTATES_24X) { val.f = 0.; return val; } p = update_file(&proc_stat); if(proc_stat.last_read != stamp) { stamp = proc_stat.last_read; p = skip_token(p); p = skip_token(p); p = skip_token(p); p = skip_token(p); p = skip_token(p); p = skip_token(p); intr_jiffies = strtod( p , (char **)NULL ); total_jiffies = total_jiffies_func(); diff = intr_jiffies - last_intr_jiffies; if ( diff ) val.f = (diff/(total_jiffies - last_total_jiffies))*100; else val.f = 0.0; last_intr_jiffies = intr_jiffies; last_total_jiffies = total_jiffies; } return val;}g_val_t cpu_sintr_func ( void ){ char *p; static g_val_t val; static int stamp; static double last_sintr_jiffies, sintr_jiffies, last_total_jiffies, total_jiffies, diff; if (num_cpustates == NUM_CPUSTATES_24X) { val.f = 0.; return val; } p = update_file(&proc_stat); if(proc_stat.last_read != stamp) { stamp = proc_stat.last_read; p = skip_token(p); p = skip_token(p); p = skip_token(p); p = skip_token(p); p = skip_token(p); p = skip_token(p); p = skip_token(p); sintr_jiffies = strtod( p , (char **)NULL ); total_jiffies = total_jiffies_func(); diff = sintr_jiffies - last_sintr_jiffies; if ( diff ) val.f = (diff/(total_jiffies - last_total_jiffies))*100; else val.f = 0.0; last_sintr_jiffies = sintr_jiffies; last_total_jiffies = total_jiffies; } return val;}g_val_tproc_run_func( void ){ char *p; g_val_t val; p = update_file(&proc_loadavg); p = skip_token(p); p = skip_token(p); p = skip_token(p); val.uint32 = strtol( p, (char **)NULL, 10 ); val.uint32--; /* This shouldn't happen.. but it might */ if (val.uint32 <0) val.uint32 = 0; return val;}g_val_tproc_total_func ( void ){ char *p; g_val_t val; p = update_file(&proc_loadavg); p = skip_token(p); p = skip_token(p); p = skip_token(p); p = skip_whitespace(p); while ( isdigit(*p) ) p++; p++; /* skip the slash-/ */ val.uint32 = strtol( p, (char **)NULL, 10 ); return val;}g_val_tmem_free_func ( void ){ char *p; g_val_t val; p = strstr( update_file(&proc_meminfo), "MemFree:" ); if(p) { p = skip_token(p); val.uint32 = strtol( p, (char **)NULL, 10 ); } else { val.uint32 = 0; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -