Обсуждение: BG writer question?

Поиск
Список
Период
Сортировка

BG writer question?

От
Alan Stange
Дата:
Hello all,

I just was running strace in the writer process and I noticed this pattern:

select(0, NULL, NULL, NULL, {0, 200000}) = 0 (Timeout)
getppid()                               = 4240
time(NULL)                              = 1123773324
mmap2(NULL, 528384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
0x81000) = 0x69ea3000
semop(1409034, 0xffffc0bc, 1)           = 0
<...seeks and writes...>
munmap(0x69ea3000, 528384)              = 0
select(0, NULL, NULL, NULL, {0, 200000}) = 0 (Timeout)
getppid()                               = 4240
time(NULL)                              = 1123773324
mmap2(NULL, 528384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
0x81000) = 0x69ea3000
semop(1605648, 0xffffc0bc, 1)           = 0
<...seeks and writes...>
munmap(0x69ea3000, 528384)              = 0
select(0, NULL, NULL, NULL, {0, 200000}) = 0 (Timeout)


why mmap and munmap each time?    mmap and munmap are fairly expensive
operations (on some systems), especially on multi cpu machines.  munmap
in particular generally needs to issue cross calls to the other cpus to
ensure any page mappings are invalidated.

Just curious.

Thanks!

-- Alan

Re: BG writer question?

От
Alvaro Herrera
Дата:
On Thu, Aug 11, 2005 at 11:25:27AM -0400, Alan Stange wrote:

> why mmap and munmap each time?    mmap and munmap are fairly expensive
> operations (on some systems), especially on multi cpu machines.  munmap
> in particular generally needs to issue cross calls to the other cpus to
> ensure any page mappings are invalidated.

There are no mmap/munmap calls in our code.  The problematic code is
probably somewhere in the libc.  Maybe it'd be useful to figure out
where it's called and why, with an eye on working around that.

--
Alvaro Herrera (<alvherre[a]alvh.no-ip.org>)
"I love the Postgres community. It's all about doing things _properly_. :-)"
(David Garamond)