On Wed, Jan 15, 2014 at 1:35 PM, Stephen Frost <sfr...@snowman.net> wrote: >> And there's a nice bingo. Had forgotten about KSM. KSM could help lots. >> >> I could try to see of madvising shared_buffers as mergeable helps. But >> this should be an automatic case of KSM - ie, when reading into a >> page-aligned address, the kernel should summarily apply KSM-style >> sharing without hinting. The current madvise interface puts the burden >> of figuring out what duplicates what on the kernel, but postgres >> already knows. > > I'm certainly curious as to if KSM could help here, but on Ubuntu 12.04 > with 3.5.0-23-generic, it's not doing anything with just PG running. > The page here: http://www.linux-kvm.org/page/KSM seems to indicate why: > > ---- > KSM is a memory-saving de-duplication feature, that merges anonymous > (private) pages (not pagecache ones). > ---- > > Looks like it won't merge between pagecache and private/application > memory? Or is it just that we're not madvise()'ing the shared buffers > region? I'd be happy to test doing that, if there's a chance it'll > actually work..
Yes, it's onlyl *intended* for merging private memory. But, still, the implementation is very similar to what postgres needs: sharing a physical page for two distinct logical pages, efficiently, with efficient copy-on-write. So it'd be just a matter of removing that limitation regarding page cache and shared pages. If you asked me, I'd implement it as copy-on-write on the page cache (not the user page). That ought to be low-overhead. -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers