> >From my limited understanding, there are 2 kinds of > speculation > related failures that are seen: > Failures due to insufficient number of buffers (no > speculative buffer > available) and failures due to using a buffer that is > busy getting > discarded/committed (available buffer(s) still busy) > For the former consider increasing the number of > buffers with the > nspec option. For the latter, consider setting the > CPU cleanrate to > value beyond the default (101) > The "Abort due to systemic unresponsiveness" > indicates heavy load. > This if addressed will probably not throw the "error > on enabled probe" > error assuming data access is happening right. > > When is the speculative buffer created? When is it > committed? Can the > paths being speculated be reduced? > > -Shiv > syscall::fork*:entry {
self->spec = speculation(); } syscall::fork*:return /self->spec/ { speculate(self->spec); } syscall::fork*:return /self->spec && errno != 0/ { /* * If errno is non-zero, we want to commit the speculation. */ commit(self->spec); self->spec = 0; } syscall::fork*:return /self->spec && errno == 0/ { /* * If errno is not set, we discard the speculation. */ discard(self->spec); self->spec = 0; } As I mentioned we want to capture code path for a fork failre. Any changes needed? I am more interested in knowing why it aborted? Sar o/p tell around 40% cpu idle (of-course the sar granularity is less). Thanks for any comments. -- This message posted from opensolaris.org _______________________________________________ dtrace-discuss mailing list dtrace-discuss@opensolaris.org