From: sjg Date: Fri, 22 Feb 2013 07:29:15 +0000 (-0800) Subject: add buffer cache project X-Git-Url: http://gitweb.dragonflybsd.org/ikiwiki.git/commitdiff_plain/d866bea98fe29b8c228211c91d3fd3d9693f0e7a add buffer cache project --- 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.