add buffer cache project
authorsjg <sjg@web>
Fri, 22 Feb 2013 07:29:15 +0000 (23:29 -0800)
committerCharlie Root <root@leaf.dragonflybsd.org>
Fri, 22 Feb 2013 07:29:15 +0000 (23:29 -0800)
docs/developer/ProjectsPage.mdwn

index 3d5b60e..b38b811 100644 (file)
@@ -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.
 
 * 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.
 ### 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.