From: Jeff Davis <pgsql@j-davis.com>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: pgsql-performance@postgresql.org
Subject: Re: explanation for seeks in VACUUM
Date: Fri, 14 Dec 2007 19:53:14 -0800
Message-ID: <1197690794.28804.321.camel@dogma.ljc.laika.com> (raw)
In-Reply-To: <15476.1197677090@sss.pgh.pa.us>
References: <1197660594.28804.276.camel@dogma.ljc.laika.com>
<15476.1197677090@sss.pgh.pa.us>
On Fri, 2007-12-14 at 19:04 -0500, Tom Lane wrote:
> Jeff Davis <pgsql@j-davis.com> writes:
> > Where am I going wrong? Are many of these lseeks no-ops or something?
>
> They're not supposed to be, but if you only tracked seeks and not
> reads or writes, it's hard to be sure what's going on.
The seeks were comparable to reads and writes, which is what surprised
me:
$ ktrace -p 42440; sleep 5; ktrace -C
$ kdump -f ktrace.out | grep "GIO fd 38 read" | wc -l
11479
$ kdump -f ktrace.out | grep "GIO fd 38 wrote" | wc -l
11480
$ kdump -f ktrace.out | grep "lseek.0x26" | wc -l
22960
> 8.2's VACUUM should process a btree index (this is a btree index no?)
> in physical order, so I'd expect lseeks only when a page is already in
> buffers --- at least on the read side. On the write side things might
> be a great deal less predictable. You're cleaning out about one tuple
> in 30, so the odds are that nearly every index page is getting dirtied,
> and they're going to need to be written sometime.
Actually, the table I was VACUUMing had both btree and GIN indexes, and
I'm not entirely sure which one was happening at the time. I will
investigate more.
My intuition tells me that, if the pages are being read and dirtied
sequentially, it would be able to write mostly sequentially (at least in
theory).
In the box that was causing the problem (which had more constrained
memory than my reproduced case), it seemed to be swamped by random I/O
-- low CPU usage, and low disk usage (about 1-2 MB/s write), yet VACUUM
would take forever and the box would appear very sluggish.
Regards,
Jeff Davis
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: pgsql-performance@postgresql.org
Cc: pgsql@j-davis.com, tgl@sss.pgh.pa.us
Subject: Re: explanation for seeks in VACUUM
In-Reply-To: <1197690794.28804.321.camel@dogma.ljc.laika.com>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox