Lines Matching full:that

5 .\" modification, are permitted provided that the following conditions
99 that can be used by all of the kernel subsystems.
101 patterns in the UNIX kernel and a hybrid strategy that is time-efficient
107 and is quick enough that no performance loss is observed
120 Often the allocations are for small pieces of memory that are only
132 Examples include protocol control blocks that remain throughout
148 for name translation that allocates a pool of empty buffers.
179 size of memory that is needed.
189 The first criterion for a memory allocator is that it make good use
205 Here, ``requested'' is the sum of the memory that has been requested
207 ``Required'' is the amount of memory that has been
220 that are part of the ``required'' pool that are not
232 The most important criterion for a memory allocator is that it be fast.
237 because the kernel must allocate many data structure that user
242 that is running.
244 Another problem with a slow memory allocator is that programmers
245 of frequently-used kernel interfaces will feel that they
253 consider the case of two subsystems that need memory.
256 sum of the greatest amount of memory that each of
260 greatest amount of memory that either subsystem used.
278 that are ordered by increasing powers of two.
295 There are several special conditions that arise when writing a
296 memory allocator for the kernel that do not apply to a user process
299 the time that the machine is booted.
308 For a user process, the maximum amount of memory that may be allocated
314 However, that adds extra complications such as new
318 Another special condition of the kernel memory allocator is that it
320 Unlike user processes that can only grow and shrink their heap at one end,
322 pieces from that arena which it then populates with physical memory.
323 The effect is much the same as a user process that has parts of
325 except that the kernel can explicitly control the set of pages
327 The result is that the ``working set'' of pages in use by the
328 kernel exactly corresponds to the set of pages that it is really using.
333 A final special condition that applies to the kernel is that
336 For each type of dynamic memory that is allocated,
338 One reason given for having separate allocators is that
357 The figure demonstrates that most
369 The kernel memory allocator that we ended up with is a hybrid
380 To ensure that the allocator is always called for large requests,
398 that showed that 95 to 98% of allocations are of size one kilobyte or less.
408 observes that the power-of-two algorithm yields sizes of 1, 2, 4, 8, \&...
409 pages while the large block algorithm that allocates in multiples
414 that a difference emerges where the power-of-two algorithm will use
446 However, this strategy doubles the memory requirement for allocations that
452 the size of a piece of memory that is being freed,
454 and looking up the size associated with that page.
457 The reason is that many allocations in the kernel are for blocks of
465 that cannot wait for memory to become available.
468 For clients that are willing to wait,
469 the allocator guarrentees that their request will succeed.
489 For example, the allocator that was built on top of the buffer pool allocator
495 we have found that none of the special purpose pools are needed.
498 Consequently applications that used to allocate network
506 and then compare the running time of the routines that
507 implemented the old abstraction versus those that implement the new one.
520 of the running time of the multi-purpose routines that could
522 This number showed that approximately three percent of
528 numerous routines in the kernel that use it.
534 subroutine call overhead for the cases that could
536 we estimate that the allocator would account for
538 These measurements show that the new allocator does not introduce
556 that must be statically allocated at boot time.
570 memory can be shuffled between large requests so that large blocks
575 that size would acquire a large amount of memory
576 that would then not be available for other future requests.
578 In practice, we do not find that the free lists become too large.
582 that can run as part of the idle loop that would sort the elements
587 the page itself could be released back to the free pool so that
589 Although there is no guarantee that all the pieces of a page would ever
601 That part of the system is expected to undergo major revision within
604 The other major allocator that remains is
606 the routine that manages the filesystem buffer pool memory