The main problem I ran into was that the instrumentation nodes currently are

> nested. That is, all the time for your children counts against you as well.
> Is
> that what we want for I/O costs?

As for me, I see nothing wrong with such costs model. I think it is good to
know stuff like "the whole query took 3244 I/O" and "this join takes 34
I/O". So, every instrumentation node should not try to figure out its
intrinsic I/O counters.

Another point is both "time" and "I/O" metrics should match. I do not see a
reason to change current "actual time" behaviour.



> If it is then I think it's fairly simple, have a global set of counters for
> various I/O events which are zeroed when the executor starts. Every time an
> instrumentation node starts it notes the starting point for all those
> counters, whenever it ends take the difference and add that to its personal
> counts.
>
I've tried to use "ReadBufferCount and friends" from
storage\buffer\buf_init.c, however it is showing zeroes for some unknown yet
reason. Hope, there is no fundamental problem behind.

One more problem with current counters in buf_init.c is ResetBufferUsage
that zeroes those counters at random (e.g. if log_executor_stats or
log_statement_stats is enabled). I am not sure if it could interfere with
instrumentation.


Regards,
Vladimir Sitnikov

Reply via email to