amarao (amarao_san) wrote,

slub allocation fail memory fragmentation jumbo frames

Продолжаю исследовать проблему. Пока собираю ссылки.


Allocating Rx Buffers when Using Jumbo Frames
Allocating Rx buffers when using Jumbo Frames on 2.6.x kernels may fail if
the available memory is heavily fragmented. This issue may be seen with PCI-X
adapters or with packet split disabled. This can be reduced or eliminated
by changing the amount of available memory for receive buffer allocation, by
increasing /proc/sys/vm/min_free_kbytes.


If you are allocating more than a page worth of bytes you can use
vmalloc(). It'll allocate virtual memory in
the kernel map. This block is not contiguous in physical memory,
but the MMU makes it look like it is for you
(so it'll only look contiguous to the CPUs, not to external device
drivers). If you really need large physically contiguous memory
for some weird device, you have a problem: it is poorly supported
in Linux because after some time memory fragmentation in a running
kernel makes it hard
. The best way is to allocate the block early
in the boot process via the alloc_bootmem routine.
Tags: jumbo frames, linux kernel, linux network

  • Post a new comment


    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.