Discussion:
iotop and dynamic variable drops
Tony MacDoodle
2011-02-24 17:06:20 UTC
Permalink
Hello,

How do I eliminate the following when running iotop dtrace script:

dynamic variable drops
dynamic variable drops
dynamic variable drops

Thanks Mike
Brendan Gregg
2011-02-28 21:06:42 UTC
Permalink
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 MacDoodle
Hello,
dynamic variable drops
dynamic variable drops
dynamic variable drops
Thanks Mike
_______________________________________________
dtrace-discuss mailing list
--
http://dtrace.org/blogs/brendan
Loading...