diff options
author | Jerry Jelinek <jerry.jelinek@joyent.com> | 2016-04-06 23:19:04 -0700 |
---|---|---|
committer | Robert Mustacchi <rm@joyent.com> | 2016-04-30 08:20:30 -0700 |
commit | d14b1d19b404dcc4795d8a76751a186717a0ddaa (patch) | |
tree | cb30c0229c66f3a4587ffdf1c461315b95a5a9f4 /usr/src | |
parent | c22cda1b41022b307ea9fda8c9dc19e6329a109a (diff) | |
download | illumos-joyent-d14b1d19b404dcc4795d8a76751a186717a0ddaa.tar.gz |
6934 add kstat to track anon memory reservation failure (ENOMEM)
Reviewed by: Toomas Soome <tsoome@me.com>
Reviewed by: Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
Reviewed by: Garrett D'Amore <garrett@damore.org>
Reviewed by: Yuri Pankov <yuri.pankov@nexenta.com>
Reviewed by: Igor Kozhukhov <ikozhukhov@gmail.com>
Approved by: Dan McDonald <danmcd@omniti.com>
Diffstat (limited to 'usr/src')
-rw-r--r-- | usr/src/uts/common/os/zone.c | 3 | ||||
-rw-r--r-- | usr/src/uts/common/sys/zone.h | 2 | ||||
-rw-r--r-- | usr/src/uts/common/vm/vm_anon.c | 1 |
3 files changed, 6 insertions, 0 deletions
diff --git a/usr/src/uts/common/os/zone.c b/usr/src/uts/common/os/zone.c index 095c4dbfce..2f041fdb03 100644 --- a/usr/src/uts/common/os/zone.c +++ b/usr/src/uts/common/os/zone.c @@ -1831,6 +1831,7 @@ zone_mcap_kstat_update(kstat_t *ksp, int rw) zmp->zm_anonpgin.value.ui64 = zone->zone_anonpgin; zmp->zm_execpgin.value.ui64 = zone->zone_execpgin; zmp->zm_fspgin.value.ui64 = zone->zone_fspgin; + zmp->zm_anon_alloc_fail.value.ui64 = zone->zone_anon_alloc_fail; return (0); } @@ -1862,6 +1863,8 @@ zone_mcap_kstat_create(zone_t *zone) kstat_named_init(&zmp->zm_anonpgin, "anonpgin", KSTAT_DATA_UINT64); kstat_named_init(&zmp->zm_execpgin, "execpgin", KSTAT_DATA_UINT64); kstat_named_init(&zmp->zm_fspgin, "fspgin", KSTAT_DATA_UINT64); + kstat_named_init(&zmp->zm_anon_alloc_fail, "anon_alloc_fail", + KSTAT_DATA_UINT64); ksp->ks_update = zone_mcap_kstat_update; ksp->ks_private = zone; diff --git a/usr/src/uts/common/sys/zone.h b/usr/src/uts/common/sys/zone.h index aabda563a7..34d00c3e89 100644 --- a/usr/src/uts/common/sys/zone.h +++ b/usr/src/uts/common/sys/zone.h @@ -388,6 +388,7 @@ typedef struct { kstat_named_t zm_anonpgin; kstat_named_t zm_execpgin; kstat_named_t zm_fspgin; + kstat_named_t zm_anon_alloc_fail; } zone_mcap_kstat_t; typedef struct { @@ -574,6 +575,7 @@ typedef struct zone { uint64_t zone_anonpgin; /* anon pages paged in */ uint64_t zone_execpgin; /* exec pages paged in */ uint64_t zone_fspgin; /* fs pages paged in */ + uint64_t zone_anon_alloc_fail; /* cnt of anon alloc fails */ /* * Misc. kstats and counters for zone cpu-usage aggregation. diff --git a/usr/src/uts/common/vm/vm_anon.c b/usr/src/uts/common/vm/vm_anon.c index 86da4f51f9..4fd32a3f4a 100644 --- a/usr/src/uts/common/vm/vm_anon.c +++ b/usr/src/uts/common/vm/vm_anon.c @@ -793,6 +793,7 @@ anon_resvmem(size_t size, boolean_t takemem, zone_t *zone, int tryhard) mutex_enter(&p->p_lock); if (rctl_incr_swap(p, zone, ptob(npages)) != 0) { mutex_exit(&p->p_lock); + atomic_add_64(&zone->zone_anon_alloc_fail, 1); return (0); } mutex_exit(&p->p_lock); |