[SIGAR-62] linux swap.page_{in,out} impl
This commit is contained in:
parent
fb7446d7f3
commit
585d510fb4
|
@ -32,6 +32,7 @@
|
||||||
#define pageshift(x) ((x) << sigar->pagesize)
|
#define pageshift(x) ((x) << sigar->pagesize)
|
||||||
|
|
||||||
#define PROC_MEMINFO PROC_FS_ROOT "meminfo"
|
#define PROC_MEMINFO PROC_FS_ROOT "meminfo"
|
||||||
|
#define PROC_VMSTAT PROC_FS_ROOT "vmstat"
|
||||||
#define PROC_MTRR PROC_FS_ROOT "mtrr"
|
#define PROC_MTRR PROC_FS_ROOT "mtrr"
|
||||||
#define PROC_STAT PROC_FS_ROOT "stat"
|
#define PROC_STAT PROC_FS_ROOT "stat"
|
||||||
#define PROC_UPTIME PROC_FS_ROOT "uptime"
|
#define PROC_UPTIME PROC_FS_ROOT "uptime"
|
||||||
|
@ -424,7 +425,7 @@ int sigar_mem_get(sigar_t *sigar, sigar_mem_t *mem)
|
||||||
|
|
||||||
int sigar_swap_get(sigar_t *sigar, sigar_swap_t *swap)
|
int sigar_swap_get(sigar_t *sigar, sigar_swap_t *swap)
|
||||||
{
|
{
|
||||||
char buffer[BUFSIZ];
|
char buffer[BUFSIZ], *ptr;
|
||||||
|
|
||||||
/* XXX: we open/parse the same file here as sigar_mem_get */
|
/* XXX: we open/parse the same file here as sigar_mem_get */
|
||||||
int status = sigar_file2str(PROC_MEMINFO,
|
int status = sigar_file2str(PROC_MEMINFO,
|
||||||
|
@ -440,6 +441,33 @@ int sigar_swap_get(sigar_t *sigar, sigar_swap_t *swap)
|
||||||
|
|
||||||
swap->page_in = swap->page_out = -1;
|
swap->page_in = swap->page_out = -1;
|
||||||
|
|
||||||
|
status = sigar_file2str(PROC_VMSTAT,
|
||||||
|
buffer, sizeof(buffer));
|
||||||
|
|
||||||
|
if (status == SIGAR_OK) {
|
||||||
|
/* 2.6+ kernel */
|
||||||
|
if ((ptr = strstr(buffer, "\npswpin"))) {
|
||||||
|
ptr = sigar_skip_token(ptr);
|
||||||
|
swap->page_in = sigar_strtoull(ptr);
|
||||||
|
ptr = sigar_skip_token(ptr);
|
||||||
|
swap->page_out = sigar_strtoull(ptr);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
/* 2.2, 2.4 kernels */
|
||||||
|
status = sigar_file2str(PROC_STAT,
|
||||||
|
buffer, sizeof(buffer));
|
||||||
|
if (status != SIGAR_OK) {
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((ptr = strstr(buffer, "\nswap"))) {
|
||||||
|
ptr = sigar_skip_token(ptr);
|
||||||
|
swap->page_in = sigar_strtoull(ptr);
|
||||||
|
swap->page_out = sigar_strtoull(ptr);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return SIGAR_OK;
|
return SIGAR_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue