On Fri, Jan 13, 2006 at 11:16:17AM -0600, Jim Wahlig
wrote:> I have a script that uses speculative tracing and is getting the error:
> dtrace: 3 failed speculations (no speculative buffer available)
> frequently.
>
> I''ve added "-x nspec=30" to my script, but
haven''t noticed any change.
> I started with 5 and bumped it up to 30 without any discernible
> difference. Am I doing something wrong or should I make the number bigger?
It could be either -- it''s hard to say without seeing the script. The
problem could be a missing commit() or discard(), or it could be that
you''re
just underestimating the amount of parallelism in this path. (Also, note
that you might want to lower the speculative buffer size ("specsize")
if
you need to really crank the number of speculative buffers.) One way
to explore this would be to change the speculation()''s to be "@ =
sum(1)",
and change the commit()s and discard()s to be "@ = sum(-1)". Let that
run
for a while. If the problem is a leaking speculative buffer (a missing
commit()/discard()), one would expect the aggregation value to be large.
If the problem is simply a large degree of parallelism, one would expect
that number to be smaller -- especially if you remove the load before
stopping the script. In any case, send the script; it may just be that
there''s a simple issue causing you to miss a commit() or discard()...
- Bryan
--------------------------------------------------------------------------
Bryan Cantrill, Solaris Kernel Development. http://blogs.sun.com/bmc