* Claudio Freire (klaussfre...@gmail.com) wrote: > Yes, that's basically zero-copy reads. > > It could be done. The kernel can remap the page to the physical page > holding the shared buffer and mark it read-only, then expire the > buffer and transfer ownership of the page if any page fault happens. > > But that incurrs: > - Page faults, lots > - Hugely bloated mappings, unless KSM is somehow leveraged for this
The page faults might be a problem but might be worth it. Bloated mappings sounds like a real issue though. > 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.. Thanks, Stephen
signature.asc
Description: Digital signature