summaryrefslogtreecommitdiff
path: root/module/bsnmp-jails.c
diff options
context:
space:
mode:
Diffstat (limited to 'module/bsnmp-jails.c')
-rw-r--r--module/bsnmp-jails.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/module/bsnmp-jails.c b/module/bsnmp-jails.c
index b6eca88..542d30c 100644
--- a/module/bsnmp-jails.c
+++ b/module/bsnmp-jails.c
@@ -169,6 +169,7 @@ struct jaildat {
uint32_t cpu_time_offset;
uint32_t n_processes;
uint32_t n_threads;
+ uint64_t rss_memory;
/* Top process information */
uint32_t n_ptops;
@@ -887,6 +888,7 @@ process_refresh_all (void)
int nentries, i, jid;
uint32_t cpu_time;
void *alloc;
+ int pagesize;
/* Get a process listing */
kp = kvm_getprocs (kvm_handle, KERN_PROC_PROC, 0, &nentries);
@@ -897,6 +899,7 @@ process_refresh_all (void)
/* Sort the input we get, in reverse */
qsort (kp, nentries, sizeof (*kp), process_compar_kp_pid);
+ pagesize = getpagesize ();
/* Mark all processes in the jail for later sweep */
TAILQ_FOREACH (jail, &jaildats, link) {
@@ -905,6 +908,7 @@ process_refresh_all (void)
jail->n_processes = 0;
jail->n_threads = 0;
+ jail->rss_memory = 0;
jail->cpu_time_total = jail->cpu_time_offset;
}
@@ -923,6 +927,8 @@ process_refresh_all (void)
jail->n_processes += 1;
jail->n_threads += kp[i].ki_numthreads;
+ jail->rss_memory += (kp[i].ki_rssize * pagesize);
+
/* Find the top level process within jail to account to */
tkp = &kp[i];
@@ -1453,6 +1459,9 @@ op_jailentry (struct snmp_context *ctx, struct snmp_value *value,
case LEAF_jailDiskFiles:
value->v.counter64 = jail->disk_files;
return SNMP_ERR_NOERROR;
+ case LEAF_jailResidentSize:
+ value->v.counter64 = jail->rss_memory;
+ return SNMP_ERR_NOERROR;
default:
ASSERT (0);
return SNMP_ERR_NOSUCHNAME;