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