On Tue, Jan 31, 2017 at 8:54 AM, Michael Paquier <michael.paqu...@gmail.com> wrote:
> On Mon, Jan 30, 2017 at 10:01 PM, Rushabh Lathia > <rushabh.lat...@gmail.com> wrote: > > Attached is the patch, which extend the existing wait event > infrastructure > > to implement the wait events for the disk I/O. Basically > pg_stat_activity's > > wait event information to show data about disk I/O as well as IPC > primitives. > > > > Implementation details: > > > > - Added PG_WAIT_IO to pgstat.h and a new enum WaitEventIO > > - Added a wait_event_info argument to FileRead, FileWrite, FilePrefetch, > > FileWriteback, FileSync, and FileTruncate. Set this wait event just > before > > performing the file system operation and clear it just after. > > - Pass down an appropriate wait event from caller of any of those > > functions. > > - Also set and clear a wait event around standalone calls to read(), > > write(), fsync() in other parts of the system. > > - Added documentation for all newly added wait event. > > Looks neat, those are unlikely to overlap with other wait events. > Thanks. > > > Open issue: > > - Might missed few standalone calls to read(), write(), etc which need > > to pass the wait_event_info. > > It may be an idea to use LD_PRELOAD with custom versions of read(), > write() and fsync(), and look at the paths where no flags are set in > MyProc->wait_event_info, and log information when that happens. > > Yes, may be I will try this. > > Thanks to my colleague Robert Haas for his help in design. > > Please let me know your thought, and thanks for reading. > > Did you consider a wrapper of the type pg_read_event() or > pg_write_event(), etc.? > I thought on that, but eventually stick to this approach as it looks more neat and uniform with other wait event implementation. > -- > Michael > Thanks, Rushabh Lathia www.EnterpriseDB.com