diff options
author | Jerry Jelinek <jerry.jelinek@joyent.com> | 2014-11-14 15:45:33 -0800 |
---|---|---|
committer | Robert Mustacchi <rm@joyent.com> | 2014-12-03 13:36:45 -0800 |
commit | 2dc692e04c2d360aa723d8436a83b8f44e8fa77b (patch) | |
tree | 8bddba2cba84f8117ae3cd34ef4ec290d28f98f6 /usr/src/uts/common/os/lwp.c | |
parent | 83ff55dcd7fc7c3356d7b2d3f67ec99970728d9b (diff) | |
download | illumos-gate-2dc692e04c2d360aa723d8436a83b8f44e8fa77b.tar.gz |
5340 add kstats to track reason for fork failures
Reviewed by: Richard Elling <richard.elling@richardelling.com>
Reviewed by: Garrett D'Amore <garrett@damore.org>
Reviewed by: Igor Kozhukhov <ikozhukhov@gmail.com>
Reviewed by: Josef 'Jeff' Sipek <josef.sipek@nexenta.com>
Approved by: Dan McDonald <danmcd@omniti.com>
Diffstat (limited to 'usr/src/uts/common/os/lwp.c')
-rw-r--r-- | usr/src/uts/common/os/lwp.c | 11 |
1 files changed, 9 insertions, 2 deletions
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; |