From d14b1d19b404dcc4795d8a76751a186717a0ddaa Mon Sep 17 00:00:00 2001 From: Jerry Jelinek Date: Wed, 6 Apr 2016 23:19:04 -0700 Subject: 6934 add kstat to track anon memory reservation failure (ENOMEM) Reviewed by: Toomas Soome Reviewed by: Josef 'Jeff' Sipek Reviewed by: Garrett D'Amore Reviewed by: Yuri Pankov Reviewed by: Igor Kozhukhov Approved by: Dan McDonald --- usr/src/uts/common/os/zone.c | 3 +++ usr/src/uts/common/sys/zone.h | 2 ++ usr/src/uts/common/vm/vm_anon.c | 1 + 3 files changed, 6 insertions(+) (limited to 'usr/src') 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); -- cgit v1.2.3