18 Jul, 2007

1 commit

  • With the slab zeroing allocations cleanups Christoph stubbed in a generic
    kzalloc(), which was missed on SLOB. Follow the SLAB/SLUB changes and
    kill off the __kzalloc() wrapper that SLOB was using.

    Reported-by: Jan Engelhardt
    Signed-off-by: Paul Mundt
    Signed-off-by: Linus Torvalds

    Paul Mundt
     

17 Jul, 2007

1 commit

  • This adds preliminary NUMA support to SLOB, primarily aimed at systems with
    small nodes (tested all the way down to a 128kB SRAM block), whether
    asymmetric or otherwise.

    We follow the same conventions as SLAB/SLUB, preferring current node
    placement for new pages, or with explicit placement, if a node has been
    specified. Presently on UP NUMA this has the side-effect of preferring
    node#0 allocations (since numa_node_id() == 0, though this could be
    reworked if we could hand off a pfn to determine node placement), so
    single-CPU NUMA systems will want to place smaller nodes further out in
    terms of node id. Once a page has been bound to a node (via explicit node
    id typing), we only do block allocations from partial free pages that have
    a matching node id in the page flags.

    The current implementation does have some scalability problems, in that all
    partial free pages are tracked in the global freelist (with contention due
    to the single spinlock). However, these are things that are being reworked
    for SMP scalability first, while things like per-node freelists can easily
    be built on top of this sort of functionality once it's been added.

    More background can be found in:

    http://marc.info/?l=linux-mm&m=118117916022379&w=2
    http://marc.info/?l=linux-mm&m=118170446306199&w=2
    http://marc.info/?l=linux-mm&m=118187859420048&w=2

    and subsequent threads.

    Acked-by: Christoph Lameter
    Acked-by: Matt Mackall
    Signed-off-by: Paul Mundt
    Acked-by: Nick Piggin
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Paul Mundt