add buffer cache project
[ikiwiki.git] / docs / developer / ProjectsPage.mdwn
index 673c810..b38b811 100644 (file)
@@ -50,6 +50,7 @@ Projects that can be clearly used for Google Code-In are marked with their categ
 * `WARN` corrections to utilities (GCI:Code)
 * Bring in code from other *BSDs:
 * smbfs changes from FreeBSD (GCI:Code)
+* rpc.lockd and rpc.statd sync with FreeBSD (GCI:Code)
 * Add extended slice support to `fdisk`
 * Install Coverity and fix the FreeBSD bugs that were uncovered by Coverity, but do not just blindly pull over the FreeBSD patches. Make sure that you first understand what the patch does.
 * C99 Standards Conformance. The todo list is on [[/docs/developer/StandardsConformanceProject]] (GCI:Code)
@@ -246,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.