Re: Large pages

From: Jonathan Lewis <>
Date: Tue, 13 Nov 2012 17:24:32 -0000
Message-ID: <>

"Mladen Gogala" <> wrote in message news:k7t91l$l4e$
| On Tue, 13 Nov 2012 10:53:26 +0000, Jonathan Lewis wrote:
| > I can't work out from your statement exactly which bit of what I've
| > is not correct. Could you please clarify.
| Jonathan, the part that is not correct is about every process on Unix
| having its own page table. Page tables for shared memory are also shared.
| There is one per segment, not one per process.
| --


The reason that I referenced Christo's video and notes is that he has results that agree with my comment and contradict yours. From the text: <quote:>
As discussed earlier, each process has a page table. This page table is private for the process and cannot be shared. (Solaris is different in this respect.)

In Oracle, there is usually a large shared memory segment shared amongst multiple processes. Each process still has a page table that is maintained. For example, for a 1.7 Gb SGA (the typical 32-bit limit), 445,440 x 4 Kb pages are needed. We would need 445,440 leaf PTE entries times 4 bytes each - that's about 2 Mb. Each process would need a PTE table that is 2 Mb in size to fully describe its 2 Gb of mappings. If you have a large number of processes, say 1000, then you will need 2000 Mb of RAM to manage a 1.7 Gb SGA. Quite inefficient.

<end quote>

a) he does mention Solaris and intimate shared memory - and explains that shared page tables are possible
b) the article is dated Dec 2007 - so things may have changed

Do you have any specific versions of Unix in mind when you state that the page table for a shared memory segment is automatically shared ? Is this, perhaps a specific default for OEL.



Jonathan Lewis

Author: Oracle Core (Apress 2011)
Received on Tue Nov 13 2012 - 18:24:32 CET

Original text of this message