Sigar小记

Sigar = System Information Gatherer And Reporter

源码地址

https://github.com/hyperic/sigar
文档和源码分享地址

src Makefile

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
SUBDIRS = os

INCLUDES = @INCLUDES@

lib_LTLIBRARIES = libsigar.la

libsigar_la_LDFLAGS = $(SIGAR_LIBS)

libsigar_la_LIBADD = $(top_builddir)/src/os/@SRC_OS@/libsigar_os.la

libsigar_la_CFLAGS = -I$(top_srcdir)/include

libsigar_la_SOURCES = \
sigar.c \
sigar_cache.c \
sigar_fileinfo.c \
sigar_format.c \
sigar_getline.c \
sigar_ptql.c \
sigar_signal.c \
sigar_util.c \
sigar_version_autoconf.c

EXTRA_DIST=\
sigar_version.c.in \
CMakeLists.txt

sigar.h

sigar_cpu_info_t,sigar_cpu_t,sigar_cpu_list_t

  1. sigar_cpu_info_t存放的数据是对cpu所有核心的综合列表
  2. sigar_cpu_t则是对具体某个cpu的描述
  3. sigar_cpu_list_t包含了sigar_cpu_t
1
2
3
4
5
6
7
8
9
10
11
typedef struct {
char vendor[128];
char model[128];
int mhz;
int mhz_max;
int mhz_min;
sigar_uint64_t cache_size;
int total_sockets;
int total_cores;
int cores_per_socket;
} sigar_cpu_info_t;
1
2
3
4
5
6
7
8
9
10
11
12
typedef struct {
sigar_uint64_t
user,
sys,
nice,
idle,
wait,
irq,
soft_irq,
stolen,
total;
} sigar_cpu_t;
1
2
3
4
5
typedef struct {
unsigned long number;
unsigned long size;
sigar_cpu_t *data;
} sigar_cpu_list_t;

内存

1
2
3
4
5
6
7
8
9
10
11
typedef struct {
sigar_uint64_t
ram,
total,
used,
free,
actual_used,
actual_free;
double used_percent;
double free_percent;
} sigar_mem_t;

路由

同理sigar_net_route_list_t中包含sigar_net_route_t数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
typedef struct {
sigar_net_address_t destination;
sigar_net_address_t gateway;
sigar_net_address_t mask;
sigar_uint64_t
flags,
refcnt, // 引用计数
use,
metric,
mtu,
window,
irtt; // 初始往返时间
char ifname[MAX_INTERFACE_NAME_LEN];
} sigar_net_route_t;

sigar.c

调用一些库函数获取系统相关的数据,建表存数据

CPU

函数或变量 描述
sigar_proc_cpu_get 获取CPU占用
sigar_cpu_info_list_create 根据SIGAR_CPU_INFO_MAX创建CPU信息列表sigar_cpu_info_list_t *cpu_infos
sigar_cpu_info_list_grow 一倍扩展列表空间(原有空间基础上扩展SIGAR_CPU_INFO_MAX个单位)
sigar_cpu_info_list_destroy 清除*cpu_infos数据
sigar_cpu_list_create 创建sigar_cpu_list_t *cpulist
sigar_cpu_list_grow 扩展cpu_list空间
sigar_cpu_list_destroy 清除数据

内存

路由

函数或变量 描述
sigar_net_route_list_create 根据SIGAR_NET_ROUTE_LIST_MAX创建路由列表
sigar_net_route_list_grow 一倍扩展空间
sigar_net_route_list_destroy 清除数据


----------- 本文结束 -----------




0%