Я вижу неожиданные результаты при использовании dtrace, поскольку мои -entry
и -return
результаты не всегда коррелируют, я вижу слишком много или слишком мало и упростил свой сценарий, чтобы изучить, чтоидет не так.
Я пытаюсь профилировать количество времени, потраченного в require "./foo"
с в моем коде Ruby, используя следующий сценарий D:
ruby*:::require-entry
{
self->start = timestamp;
@counts["require-entry"] = count();
}
ruby*:::require-return
/self->start/
{
@counts["correlated require returns"] = count();
self->start = 0;
}
ruby*:::require-return
/!self->start/
{
/* @reqTimes[copyinstr(arg0)] = quantize(self->start - timestamp); */
@counts["uncorrelated require returns"] = count();
}
Запуск этой печати:
$ time sudo dtrace -q -s script.d -c './script.rb'
correlated require returns 5691
uncorrelated require returns 7872
require-entry 7877
sudo dtrace -q -s script.d -c './script.rb' 0.22s user 0.22s system 3% cpu 13.488 total
- правильно ли я использую переменные
self->
(против this->
или аналогичные?) - мои предикаты верны?
- при запуске dtraceтаким образом, я "гоняюсь" против зондов, активирующихся до запуска скрипта?