From 2dc692e04c2d360aa723d8436a83b8f44e8fa77b Mon Sep 17 00:00:00 2001 From: Jerry Jelinek Date: Fri, 14 Nov 2014 15:45:33 -0800 Subject: 5340 add kstats to track reason for fork failures Reviewed by: Richard Elling Reviewed by: Garrett D'Amore Reviewed by: Igor Kozhukhov Reviewed by: Josef 'Jeff' Sipek Approved by: Dan McDonald --- usr/src/uts/common/os/lwp.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'usr/src/uts/common/os/lwp.c') diff --git a/usr/src/uts/common/os/lwp.c b/usr/src/uts/common/os/lwp.c index 6d518e1aae..feb8e76c42 100644 --- a/usr/src/uts/common/os/lwp.c +++ b/usr/src/uts/common/os/lwp.c @@ -146,6 +146,7 @@ lwp_create(void (*proc)(), caddr_t arg, size_t len, proc_t *p, if (rctlfail) { mutex_exit(&p->p_zone->zone_nlwps_lock); mutex_exit(&p->p_lock); + atomic_inc_32(&p->p_zone->zone_ffcap); return (NULL); } p->p_task->tk_nlwps++; @@ -204,6 +205,7 @@ lwp_create(void (*proc)(), caddr_t arg, size_t len, proc_t *p, p->p_zone->zone_nlwps--; mutex_exit(&p->p_zone->zone_nlwps_lock); mutex_exit(&p->p_lock); + atomic_inc_32(&p->p_zone->zone_ffnomem); return (NULL); } } else { @@ -217,6 +219,7 @@ lwp_create(void (*proc)(), caddr_t arg, size_t len, proc_t *p, p->p_zone->zone_nlwps--; mutex_exit(&p->p_zone->zone_nlwps_lock); mutex_exit(&p->p_lock); + atomic_inc_32(&p->p_zone->zone_ffnomem); return (NULL); } } @@ -582,10 +585,12 @@ grow: err = CL_FORK(curthread, t, bufp); t->t_cid = cid; } - if (err) + if (err) { + atomic_inc_32(&p->p_zone->zone_ffmisc); goto error; - else + } else { bufp = NULL; + } } /* @@ -612,6 +617,7 @@ grow: * All lwpids are allocated; fail the request. */ err = 1; + atomic_inc_32(&p->p_zone->zone_ffnoproc); goto error; } /* @@ -631,6 +637,7 @@ grow: if (PROC_IS_BRANDED(p)) { if (BROP(p)->b_initlwp(lwp)) { err = 1; + atomic_inc_32(&p->p_zone->zone_ffmisc); goto error; } branded = 1; -- cgit v1.2.3