[lkml]   [2006]   [Aug]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    SubjectRe: [PATCH 1/1] network memory allocator.
    On Wednesday 16 August 2006 11:00, Evgeniy Polyakov wrote:
    > There is drawback here - if data was allocated on CPU wheere NIC is
    > "closer" and then processed on different CPU it will cost more than
    > in case where buffer was allocated on CPU where it will be processed.
    > But from other point of view, most of the adapters preallocate set of
    > skbs, and with msi-x help there will be a possibility to bind irq and
    > processing to the CPU where data was origianlly allocated.
    > So I would like to know how to determine which node should be used for
    > allocation. Changes of __get_user_pages() to alloc_pages_node() are
    > trivial.

    There are two separate memory areas here: Your own metadata used by the
    allocator and the memory used for skb data.

    avl_node_array[cpu] and avl_container_array[cpu] are only designed to
    be accessed only by the local cpu, so these should be done like

    avl_node_array[cpu] = kmalloc_node(AVL_NODE_PAGES * sizeof(void *),
    GFP_KERNEL, cpu_to_node(cpu));

    or you could make the whole array DEFINE_PER_CPU(void *, which would
    waste some space in the kernel object file.

    Now for the actual pages you get with __get_free_pages(), doing the
    same (alloc_pages_node), will help accessing your avl_container
    members, but may not be the best solution for getting the data
    next to the network adapter.

    Arnd <><
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to
    More majordomo info at
    Please read the FAQ at

     \ /
      Last update: 2006-08-16 13:31    [W:0.020 / U:112.672 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site