Alan Cox 0164e05781 Replace the linear search in vm_map_findspace() with an O(log n)
algorithm built into the map entry splay tree.  This replaces the
first_free hint in struct vm_map with two fields in vm_map_entry:
adj_free, the amount of free space following a map entry, and
max_free, the maximum amount of free space in the entry's subtree.
These fields make it possible to find a first-fit free region of a
given size in one pass down the tree, so O(log n) amortized using
splay trees.

This significantly reduces the overhead in vm_map_findspace() for
applications that mmap() many hundreds or thousands of regions, and
has a negligible slowdown (0.1%) on buildworld.  See, for example, the
discussion of a micro-benchmark titled "Some mmap observations
compared to Linux 2.6/OpenBSD" on -hackers in late October 2003.

OpenBSD adopted this approach in March 2002, and NetBSD added it in
November 2003, both with Red-Black trees.

Submitted by: Mark W. Krentel
2004-08-13 08:06:34 +00:00
..
2004-08-11 23:23:05 +00:00
2004-06-14 00:38:54 +00:00
2004-08-13 06:22:35 +00:00
2004-08-08 13:23:05 +00:00
2004-08-11 23:41:53 +00:00
2004-08-13 06:22:35 +00:00
2004-08-13 07:38:58 +00:00
2004-07-28 06:59:55 +00:00
2004-07-28 06:59:55 +00:00
2004-08-05 13:01:29 +00:00
2004-08-08 13:23:05 +00:00