summaryrefslogtreecommitdiff
path: root/usr/src/uts/common/os/lwp.c
diff options
context:
space:
mode:
authorJerry Jelinek <jerry.jelinek@joyent.com>2014-11-14 15:45:33 -0800
committerRobert Mustacchi <rm@joyent.com>2014-12-03 13:36:45 -0800
commit2dc692e04c2d360aa723d8436a83b8f44e8fa77b (patch)
tree8bddba2cba84f8117ae3cd34ef4ec290d28f98f6 /usr/src/uts/common/os/lwp.c
parent83ff55dcd7fc7c3356d7b2d3f67ec99970728d9b (diff)
downloadillumos-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.c11
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;