24 Jun, 2005

1 commit

  • This patch creates a new kstrdup library function and changes the "local"
    implementations in several places to use this function.

    Most of the changes come from the sound and net subsystems. The sound part
    had already been acknowledged by Takashi Iwai and the net part by David S.
    Miller.

    I left UML alone for now because I would need more time to read the code
    carefully before making changes there.

    Signed-off-by: Paulo Marques
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Paulo Marques
     

22 Jun, 2005

1 commit

  • The pageset array can potentially acquire a huge amount of memory on large
    NUMA systems. F.e. on a system with 512 processors and 256 nodes there
    will be 256*512 pagesets. If each pageset only holds 5 pages then we are
    talking about 655360 pages.With a 16K page size on IA64 this results in
    potentially 10 Gigabytes of memory being trapped in pagesets. The typical
    cases are much less for smaller systems but there is still the potential of
    memory being trapped in off node pagesets. Off node memory may be rarely
    used if local memory is available and so we may potentially have memory in
    seldom used pagesets without this patch.

    The slab allocator flushes its per cpu caches every 2 seconds. The
    following patch flushes the off node pageset caches in the same way by
    tying into the slab flush.

    The patch also changes /proc/zoneinfo to include the number of pages
    currently in each pageset.

    Signed-off-by: Christoph Lameter
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Christoph Lameter
     

19 Jun, 2005

1 commit


01 May, 2005

2 commits

  • This patch changes calls to synchronize_kernel(), deprecated in the earlier
    "Deprecate synchronize_kernel, GPL replacement" patch to instead call the new
    synchronize_rcu() and synchronize_sched() APIs.

    Signed-off-by: Paul E. McKenney
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Paul E. McKenney
     
  • The patch makes the following function calls available to allocate memory
    on a specific node without changing the basic operation of the slab
    allocator:

    kmem_cache_alloc_node(kmem_cache_t *cachep, unsigned int flags, int node);
    kmalloc_node(size_t size, unsigned int flags, int node);

    in a similar way to the existing node-blind functions:

    kmem_cache_alloc(kmem_cache_t *cachep, unsigned int flags);
    kmalloc(size, flags);

    kmem_cache_alloc_node was changed to pass flags and the node information
    through the existing layers of the slab allocator (which lead to some minor
    rearrangements). The functions at the lowest layer (kmem_getpages,
    cache_grow) are already node aware. Also __alloc_percpu can call
    kmalloc_node now.

    Performance measurements (using the pageset localization patch) yields:

    w/o patches:
    Tasks jobs/min jti jobs/min/task real cpu
    1 484.27 100 484.2736 12.02 1.97 Wed Mar 30 20:50:43 2005
    100 25170.83 91 251.7083 23.12 150.10 Wed Mar 30 20:51:06 2005
    200 34601.66 84 173.0083 33.64 294.14 Wed Mar 30 20:51:40 2005
    300 37154.47 86 123.8482 46.99 436.56 Wed Mar 30 20:52:28 2005
    400 39839.82 80 99.5995 58.43 580.46 Wed Mar 30 20:53:27 2005
    500 40036.32 79 80.0726 72.68 728.60 Wed Mar 30 20:54:40 2005
    600 44074.21 79 73.4570 79.23 872.10 Wed Mar 30 20:55:59 2005
    700 44016.60 78 62.8809 92.56 1015.84 Wed Mar 30 20:57:32 2005
    800 40411.05 80 50.5138 115.22 1161.13 Wed Mar 30 20:59:28 2005
    900 42298.56 79 46.9984 123.83 1303.42 Wed Mar 30 21:01:33 2005
    1000 40955.05 80 40.9551 142.11 1441.92 Wed Mar 30 21:03:55 2005

    with pageset localization and slab API patches:
    Tasks jobs/min jti jobs/min/task real cpu
    1 484.19 100 484.1930 12.02 1.98 Wed Mar 30 21:10:18 2005
    100 27428.25 92 274.2825 21.22 149.79 Wed Mar 30 21:10:40 2005
    200 37228.94 86 186.1447 31.27 293.49 Wed Mar 30 21:11:12 2005
    300 41725.42 85 139.0847 41.84 434.10 Wed Mar 30 21:11:54 2005
    400 43032.22 82 107.5805 54.10 582.06 Wed Mar 30 21:12:48 2005
    500 42211.23 83 84.4225 68.94 722.61 Wed Mar 30 21:13:58 2005
    600 40084.49 82 66.8075 87.12 873.11 Wed Mar 30 21:15:25 2005
    700 44169.30 79 63.0990 92.24 1008.77 Wed Mar 30 21:16:58 2005
    800 43097.94 79 53.8724 108.03 1155.88 Wed Mar 30 21:18:47 2005
    900 41846.75 79 46.4964 125.17 1303.38 Wed Mar 30 21:20:52 2005
    1000 40247.85 79 40.2478 144.60 1442.21 Wed Mar 30 21:23:17 2005

    Signed-off-by: Christoph Lameter
    Signed-off-by: Manfred Spraul
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Manfred Spraul
     

17 Apr, 2005

1 commit

  • Initial git repository build. I'm not bothering with the full history,
    even though we have it. We can create a separate "historical" git
    archive of that later if we want to, and in the meantime it's about
    3.2GB when imported into git - space that would just make the early
    git days unnecessarily complicated, when we don't have a lot of good
    infrastructure for it.

    Let it rip!

    Linus Torvalds