G'Day Tony,
Sorry about the dynvardrops; there are at least a couple of things you can
try.
1) increasing dynvarsize; this is commented in the script itself:
201 /* boost the following if you get "dynamic variable drops" */
202 #pragma D option dynvarsize=8m
That's 8 Mbytes. You could try 16 Mbytes.
2) reworking the associative array key. From the script:
253 this->dev = args[0]->b_edev;
254 this->blk = args[0]->b_blkno;
255
256 /* save disk event details, */
257 start_uid[this->dev, this->blk] = uid;
I'm using both device number and block number as a 2-key unique ID. I'd
suspect that a 1-key ID would be less expensive, such as by replacing
"this->dev, this->blk" with just "arg0" throughout the script. The downside
is that this is not stable - it may work on Solaris and Mac OS X today, but
not in the future. arg0 is actually a "struct buf *", which as an address
is unique and is a handy 1-key ID, but isn't part of the stable io provider
interface (it's using implementation details from pre-translation).
If you still have issues with drops due to high load, I'd write a much
shorter script to answer the specific question.
Brendan
Post by Tony MacDoodleHello,
dynamic variable drops
dynamic variable drops
dynamic variable drops
Thanks Mike
_______________________________________________
dtrace-discuss mailing list
--
http://dtrace.org/blogs/brendan