vacuum performance

Поиск
Список
Период
Сортировка
От Alan Stange
Тема vacuum performance
Дата
Msg-id 405A7576.9000208@rentec.com
обсуждение исходный текст
Ответы Re: vacuum performance  (Tom Lane <tgl@sss.pgh.pa.us>)
Список 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 по дате отправления:

Предыдущее
От: Bruce Momjian
Дата:
Сообщение: Re: [HACKERS] fsync method checking
Следующее
От: Tom Lane
Дата:
Сообщение: Re: vacuum performance