On Sat, Dec 24, 2016 at 9:56 AM, Joel Jacobson <joel(at)trustly(dot)com> wrote: >> The difficulty with that is it'd require a gettimeofday() call for >> every wait start. Even on platforms where those are relatively cheap,
I just realized how this can be optimized. We only need to set wait_start for every new waiting period, not for every wait start, i.e. not for every call to pgstat_report_wait_start():
In pgstat_report_wait_start(): if (proc->wait_start == 0) proc->wait_start = (pg_time_t) time(NULL);
And then in pgstat_report_wait_end(): proc->wait_start = 0;
This means we only need to call time() or gettimeofday() once per waiting period.