vacuum performance - Mailing list pgsql-performance

From Alan Stange
Subject vacuum performance
Date
Msg-id 405A7576.9000208@rentec.com
Whole thread Raw
Responses Re: vacuum performance
List pgsql-performance
Hello all,

I have a question/observation about vacuum performance.  I'm running
Solaris 9, pg 7.4.1.
The process in questions is doing a vacuum:

bash-2.05$ /usr/ucb/ps auxww | grep 4885
fiasco    4885 19.1  3.7605896592920 ?        O 19:29:44 91:38 postgres:
fiasco fiasco [local] VACUUM

I do a truss on the process and see the output below looping over and
over.   Note the constant opening and closing of the file 42064889.3.

Why the open/close cycle as opposed to caching the file descriptor
somewhere?

If PG really does need to loop like this, it should be much faster to
set the cwd and then open without the path in the file name.  You're
forcing the kernel to do a lot of work walking the path, checking for
nfs mounts, symlinks, etc.

Thanks!

-- Alan

open64("/export/nst1/fi/pg/data1/base/91488/42064889.3", O_RDWR) = 47
llseek(47, 0x18F6E000, SEEK_SET)                = 0x18F6E000
write(47, "\0\0\0 zA9A3D9E8\0\0\0 "".., 8192)   = 8192
close(47)                                       = 0
read(29, "\0\0\0 }ED WF1B0\0\0\0 $".., 8192)    = 8192
open64("/export/nst1/fi/pg/data1/base/91488/42064889.3", O_RDWR) = 47
llseek(47, 0x18F78000, SEEK_SET)                = 0x18F78000
write(47, "\0\0\0 zA9AC 090\0\0\0 "".., 8192)   = 8192
close(47)                                       = 0
llseek(43, 0x26202000, SEEK_SET)                = 0x26202000
read(43, "\0\0\084 EC9FC P\0\0\0 )".., 8192)    = 8192
semop(52, 0xFFBFC5E0, 1)                        = 0
semop(52, 0xFFBFC640, 1)                        = 0
open64("/export/nst1/fi/pg/data1/base/91488/42064889.3", O_RDWR) = 47
llseek(47, 0x18F62000, SEEK_SET)                = 0x18F62000
write(47, "\0\0\0 zA9C2\bB8\0\0\0 "".., 8192)   = 8192
close(47)                                       = 0
read(29, "\0\0\0 }ED X1210\0\0\0 $".., 8192)    = 8192
semop(52, 0xFFBFC5E0, 1)                        = 0
semop(52, 0xFFBFC640, 1)                        = 0
open64("/export/nst1/fi/pg/data1/base/91488/42064889.3", O_RDWR) = 47
llseek(47, 0x18018000, SEEK_SET)                = 0x18018000
write(47, "\0\0\0 zA997ADB0\0\0\0 "".., 8192)   = 8192
close(47)                                       = 0
llseek(43, 0x26200000, SEEK_SET)                = 0x26200000
read(43, "\0\0\084 EC4F5E8\0\0\0 )".., 8192)    = 8192
semop(52, 0xFFBFC5E0, 1)                        = 0
semop(52, 0xFFBFC640, 1)                        = 0
llseek(13, 13918208, SEEK_SET)                  = 13918208
write(13, "D0 Z\001\0\0\0 )\0\0\087".., 8192)   = 8192
write(13, "D0 Z\001\0\0\0 )\0\0\087".., 8192)   = 8192
write(13, "D0 Z\001\0\0\0 )\0\0\087".., 8192)   = 8192
write(13, "D0 Z\001\0\0\0 )\0\0\087".., 8192)   = 8192
write(13, "D0 Z\001\0\0\0 )\0\0\087".., 8192)   = 8192
open64("/export/nst1/fi/pg/data1/base/91488/42064889.3", O_RDWR) = 47
llseek(47, 0x18F52000, SEEK_SET)                = 0x18F52000
write(47, "\0\0\0 zABE7 V10\0\0\0 "".., 8192)   = 8192
close(47)                                       = 0
semop(46, 0xFFBFC5D0, 1)                        = 0
read(29, "\0\0\0 }ED X 2 p\0\0\0 $".., 8192)    = 8192
semop(52, 0xFFBFC5E0, 1)                        = 0
semop(52, 0xFFBFC640, 1)                        = 0
llseek(43, 0x270DA000, SEEK_SET)                = 0x270DA000
write(43, "\0\0\087A2E8 #B8\0\0\0 )".., 8192)   = 8192
llseek(43, 0x261FE000, SEEK_SET)                = 0x261FE000
read(43, "\0\0\084 EC498\0\0\0\0 )".., 8192)    = 8192
poll(0xFFBFC100, 0, 10)                         = 0
open64("/export/nst1/fi/pg/data1/base/91488/42064889.3", O_RDWR) = 47
llseek(47, 0x1804A000, SEEK_SET)                = 0x1804A000
write(47, "\0\0\0 zAA0F8DE0\0\0\0 "".., 8192)   = 8192
close(47)                                       = 0
read(29, "\0\0\0 }ED X RD0\0\0\0 $".., 8192)    = 8192
semop(52, 0xFFBFC5E0, 1)                        = 0
semop(52, 0xFFBFC640, 1)                        = 0
write(13, "D0 Z\001\0\0\0 )\0\0\087".., 8192)   = 8192
write(13, "D0 Z\001\0\0\0 )\0\0\087".., 8192)   = 8192
write(13, "D0 Z\001\0\0\0 )\0\0\087".., 8192)   = 8192
write(13, "D0 Z\001\0\0\0 )\0\0\087".., 8192)   = 8192
open64("/export/nst1/fi/pg/data1/base/91488/42064889.3", O_RDWR) = 47


pgsql-performance by date:

Previous
From: Bruce Momjian
Date:
Subject: Re: [HACKERS] fsync method checking
Next
From: Tom Lane
Date:
Subject: Re: vacuum performance