Ray Fucillo wrote: > Nick Piggin wrote: > >> fork() can be changed so as not to set up page tables for >> MAP_SHARED mappings. I think that has other tradeoffs like >> initially causing several unavoidable faults reading >> libraries and program text. >> >> What kind of application are you using? > > > The application is a database system called Caché. We allocate a large > shared memory segment for database cache, which in a large production > environment may realistically be 1+GB on 32-bit platforms and much > larger on 64-bit. At these sizes fork() is taking hundreds of > miliseconds, which can become a noticeable bottleneck for us. This > performance characteristic seems to be unique to Linux vs other Unix > implementations. > > As Andi said, hugepages might be a very nice feature for you guys to look into and might potentially give a performance increase with reduced TLB pressure, not only your immediate fork problem. Anyway, the attached patch is something you could try testing. If you do so, then I would be very interested to see performance results. Thanks, Nick -- SUSE Labs, Novell Inc.