Oleg Bartunov <oleg(at)sai(dot)msu(dot)su> writes:
> I'm looking for blocks *actually* read from disk, since IO is the most
> important factor.
Well, you won't find that out from Postgres, since it has no idea
whether a read() request was satisfied from kernel disk cache or had
to actually go to disk.
You could turn on log_statement_stats to get some possibly-more-reliable
numbers from the kernel via getrusage(), but this will only tell you
about totals across the whole backend process, not per-relation ...
regards, tom lane