> On Jan 30, 2018, at 8:59 PM, Kelly Caudill <[email protected]> wrote: > > 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; > }
Of course, since those two are uint64_t, setting them to -1 will be problematic. But it is unlikely they would ever be “1”, for example. Kelly > 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
