commit-hurd
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[SCM] GNU Mach branch, master, updated. v1.6-41-ge3cdb6f


From: Richard Braun
Subject: [SCM] GNU Mach branch, master, updated. v1.6-41-ge3cdb6f
Date: Sat, 20 Feb 2016 00:16:15 +0000

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU Mach".

The branch, master has been updated
       via  e3cdb6f6ad3f2ef690cc5822178efb3bde93fa9a (commit)
      from  f9ac76867be8c7f6943ca42d93521e5ad97e42a4 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit e3cdb6f6ad3f2ef690cc5822178efb3bde93fa9a
Author: Richard Braun <address@hidden>
Date:   Sat Feb 20 00:48:38 2016 +0100

    Avoid slab allocation failures caused by memory fragmentation
    
    Since the slab allocator has been changed to sit directly on top of the
    physical allocator, failures caused by fragmentation have been observed,
    as one could expect. This change makes the slab allocator revert to
    kernel virtual memory when allocating larger-than-page slabs. This
    solution is motivated in part to avoid the complexity of other solutions
    such as page mobility, and also because a microkernel cannot be extended
    to new arbitrary uncontrolled usage patterns such as a monolithic kernel
    with loadable modules. As such, large objects are rare, and their use
    infrequent, which is compatible with the use of kernel virtual memory.
    
    * kern/slab.c: Update module description.
    (KMEM_CF_SLAB_EXTERNAL, KMEM_CF_VERIFY): Update values.
    (KMEM_CF_DIRECT): Remove macro.
    (KMEM_CF_DIRECTMAP): New macro.
    (kmem_pagealloc_directmap, kmem_pagefree_directmap,
    kmem_pagealloc_virtual, kmem_pagefree_virtual): New functions.
    (kmem_pagealloc, kmem_pagefree, kmem_slab_create, kmem_slab_destroy,
    kalloc, kfree): Update to use the new pagealloc functions.
    (kmem_cache_compute_sizes): Update the algorithm used to determine slab
    size and other cache properties.
    (kmem_slab_use_tree, kmem_cache_free_to_slab, host_slab_info): Update to
    correctly use the cache flags.
    (slab_init): Add KMEM_CACHE_DIRECTMAP to the kmem_slab_cache init flags.
    * kern/slab.h (KMEM_CACHE_VERIFY): Change value.
    (KMEM_CACHE_DIRECTMAP): New macro.
    * vm/vm_map.c (vm_map_init): Add KMEM_CACHE_DIRECTMAP to the
    vm_map_entry_cache init flags.

-----------------------------------------------------------------------

Summary of changes:
 kern/slab.c |  153 +++++++++++++++++++++++++++++++++++------------------------
 kern/slab.h |    3 +-
 vm/vm_map.c |    8 ++-
 3 files changed, 99 insertions(+), 65 deletions(-)


hooks/post-receive
-- 
GNU Mach



reply via email to

[Prev in Thread] Current Thread [Next in Thread]