summaryrefslogtreecommitdiff
path: root/usr/src
diff options
context:
space:
mode:
authorJerry Jelinek <jerry.jelinek@joyent.com>2016-04-06 23:19:04 -0700
committerRobert Mustacchi <rm@joyent.com>2016-04-30 08:20:30 -0700
commitd14b1d19b404dcc4795d8a76751a186717a0ddaa (patch)
treecb30c0229c66f3a4587ffdf1c461315b95a5a9f4 /usr/src
parentc22cda1b41022b307ea9fda8c9dc19e6329a109a (diff)
downloadillumos-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.c3
-rw-r--r--usr/src/uts/common/sys/zone.h2
-rw-r--r--usr/src/uts/common/vm/vm_anon.c1
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);