From d866bea98fe29b8c228211c91d3fd3d9693f0e7a Mon Sep 17 00:00:00 2001 From: sjg Date: Thu, 21 Feb 2013 23:29:15 -0800 Subject: [PATCH] add buffer cache project --- docs/developer/ProjectsPage.mdwn | 6 ++++++ 1 files changed, 6 insertions(+), 0 deletions(-) diff --git a/docs/developer/ProjectsPage.mdwn b/docs/developer/ProjectsPage.mdwn index 3d5b60e..b38b811 100644 --- a/docs/developer/ProjectsPage.mdwn +++ b/docs/developer/ProjectsPage.mdwn @@ -247,6 +247,12 @@ Projects that can be clearly used for Google Code-In are marked with their categ * Adjust error messages to print the spinlock desc field. * This change will require a full world & kernel recompile. +### Partially rewrite buffer cache +* Buffer cache buffers map VM pages from the filesystems VM-backed vnodes, the "buffer space" is the maximum amount of virtual space to allocate to these buffers. +* When the buffer_map KVA space gets fragmented it caused very expensive defrag operations, the buffer_map KVA was recently increased to double the actual buffer space to allow full space utilization in the face of fragmentation and reduce the frequency of defrag operations. +* Rewrite the buffer cache to have separate spaces or separate buffer pools for different sizes (16, 32, 64, 128, 256... up to max). +* The vm_map API is used to allocate kvm out of the buffer_map. If the buffer's KVAs are preallocated then things can basically just be setup linearly at boot time. + ### Add informational hardware-related sysctl's * MacOS X exports a bunch of cpu-specific sysctl's detailing sizes, layout, features, etc. Most/all of this could be detected by a userspace program, but exporting these makes the barrier of entry to cpu-conditional code lower. * Research which of these sysctl's is the most useful and add them, using the same node names as OSX. -- 1.7.7.2