Vmxnet3 page allocation failure

The Aerospike Knowledge Base has moved to https://support.aerospike.com. Content on https://discuss.aerospike.com is being migrated to either https://support.aerospike.com or https://docs.aerospike.com. Maintenance on articles stored in this repository ceased on December 31st 2022 and this article may be stale. If you have any questions, please do not hesitate to raise a case via https://support.aerospike.com.

vmxnet3 page allocation failure

Context

You may see the client receive the following error: Bad file descriptor, corresponding to the following in the dmesg output:

swapper: page allocation failure. order:0, mode:0x20
Pid: 0, comm: swapper Not tainted 2.6.32-696.16.1.el6.x86_64 #1
Call Trace:
 <IRQ>  [<ffffffff8113e76c>] ? __alloc_pages_nodemask+0x7dc/0x950
 [<ffffffff814b7098>] ? ip_local_deliver+0x98/0xa0
 [<ffffffff814b6a00>] ? ip_rcv+0x190/0x350
 [<ffffffff81177ada>] ? alloc_pages_current+0xaa/0x110
 [<ffffffffa01785b9>] ? vmxnet3_rq_rx_complete+0x5d9/0xdf0 [vmxnet3]
 [<ffffffff8147856c>] ? __napi_complete+0x1c/0x30
 [<ffffffffa0178f43>] ? vmxnet3_poll_rx_only+0x43/0xb0 [vmxnet3]
 [<ffffffff81480fb3>] ? net_rx_action+0x103/0x300
 [<ffffffff810aaf23>] ? hrtimer_get_next_event+0xc3/0x100
 [<ffffffff81085335>] ? __do_softirq+0xe5/0x230
 [<ffffffffa0175c61>] ? vmxnet3_msix_rx+0x31/0x60 [vmxnet3]
 [<ffffffff8100c38c>] ? call_softirq+0x1c/0x30
 [<ffffffff8100fc95>] ? do_softirq+0x65/0xa0
 [<ffffffff810851c5>] ? irq_exit+0x85/0x90
 [<ffffffff81554cb5>] ? do_IRQ+0x75/0xf0
 [<ffffffff8100ba53>] ? ret_from_intr+0x0/0x11
 <EOI>  [<ffffffff81046016>] ? native_safe_halt+0x6/0x10
 [<ffffffff81016a0d>] ? default_idle+0x4d/0xb0
 [<ffffffff81009fe6>] ? cpu_idle+0xb6/0x110
 [<ffffffff81543fb9>] ? start_secondary+0x2c0/0x316

If you see vmxnet3 crash in that alloc_pages_nodemask with page allocation failure, follow the article below.

Solution

Following the article min_free_kbytes allows to configure kernel parameters to give enough free RAM for the vmxnet3 driver.

You should give at least 1.1GiB RAM for the min_free_kbytes and swappiness of 0 to disable unnecessary swappiness. For example:

To make the change live and clear the currently cached memory:

echo 3 > /proc/sys/vm/drop_caches
echo 1153434 > /proc/sys/vm/min_free_kbytes
echo 0 > /proc/sys/vm/swappiness

To make the changes permanent, edit /etc/sysctl.conf and change/add the following parameters:

vm.min_free_kbytes = 1153434
vm.swappiness = 0

Keywords

vmxnet3 alloc_pages_nodemask page allocation failure alloc_pages_current

Timestamp

11/13/2018