Re: OOM when adding ipv6 route: How to make available more per-cpu memory?

Eric Dumazet
2010-11-06T07:26:38Z

Le vendredi 05 novembre 2010 à 17:07 -0700, Ben Greear a écrit :

> We just tried creating 1000 macvlans with IPv6 addrs on a 64-bit machine
> with 12GB RAM. Only around 520 interfaces properly set their IPs, and
> again there are errors about of-of-memory from 'ip', but no obvious
> splats in dmesg.
>
> 'top' shows 10G or so free.
>
> It will take some time to figure out what exactly is returning
> the ENOMEM....

At least, nothing to do with percpu stuff ?

On my 4GB machine, 16 'cpus' (but 32 possible cpus), I was able to
allocate.
8192 percpu 8192 bytes structures

(total : 32 * 8192 * 8192 = 2 Gbytes)

setup_percpu: NR_CPUS:32 nr_cpumask_bits:32 nr_cpu_ids:32 nr_node_ids:2
PERCPU: Embedded 26 pages/cpu @ffff88007fc00000 s76032 r8192 d22272 u131072
pcpu-alloc: s76032 r8192 d22272 u131072 alloc=1*2097152
pcpu-alloc: [0] 00 02 04 06 08 10 12 14 17 19 21 23 25 27 29 31
pcpu-alloc: [1] 01 03 05 07 09 11 13 15 16 18 20 22 24 26 28 30

grep Vmalloc /proc/meminfo
VmallocTotal: 34359738367 kB
VmallocUsed: 2202592 kB
VmallocChunk: 34356996456 kB

Make sure udev / hotplug is not the problem, if you create your devices
very fast.

(modprobe dummy numdummies=2000) can be very slow because of that.
All tasks are fighting for RTNL or sysfs mutex.