I have always done as instructed by
http://dtrace.org/guide/chp-variables.html#chp-variables
“Always assign zero to thread-local variables that are no longer in use.”
Someone recently suggested I could improve the efficiency of a script by
setting them to -1 instead of 0, to avoid the work of deallocating and then
reallocating.
I guess it depends on the the meaning of "no longer in use”.
syscall::mmap:entry
/monprocs[execname]/
{
self->ts = timestamp;
self->vts = vtimestamp;
}
syscall::mmap:return
/self->ts/
{
this->dt = timestamp - self->ts;
/* @time = quantize(timestamp - self->ts); */
@cnt[zonename] = count();
@min[zonename] = min(this->dt);
@max[zonename] = max(this->dt);
@avg[zonename] = avg(this->dt);
@avgV[zonename] = avg(vtimestamp - self->vts);
self->ts = 0;
self->vts = 0;
}
Outside of any thread calling mmap(), self->ts and self->vts are not “in use”.
But, in this application, threads call mmap() all the time. So they will get
allocated again very soon.
If I set them to -1 instead of 0 (and changed the predicate to check for 0 or
-1), I can avoid a lot of work managing/cleaning up that space.
If my dtrace (or some other?) happened to use the same variable name to trace
something else, that would be bad.
Any other reason not to do this?
Any comment on whether this is worth doing?
Kelly
-------------------------------------------
dtrace-discuss
Archives: https://www.listbox.com/member/archive/184261/=now
RSS Feed: https://www.listbox.com/member/archive/rss/184261/25769126-e243886f
Modify Your Subscription:
https://www.listbox.com/member/?member_id=25769126&id_secret=25769126-8d47a7b2
Powered by Listbox: http://www.listbox.com