Start a conversation

exanic_acquire[_unused_filter]_buffer() returns error "Cannot allocate memory" although sufficient buffers remain

This problem occurs due to Linux memory fragmentation. The function needs to allocate contiguous memory to operate. If a machine is up for a long time (especially if it undergoes heavy memory churn), memory can become fragmented and congested which limits the number of pages available for allocation.

The ExaNIC driver will report this in the system log as "'exanic0: Failed to allocate 512 page(s) for filter DMA region".

A suggestion to resolve this is to run 'echo 1 >/proc/sys/vm/compact_memory' which will attempt to compact the memory in the kernel to free up contiguous blocks.  

If that doesn't help you could try 'sync; echo 3 >/proc/sys/vm/drop_caches'." This should cause the kernel to drop its caches (e.g. for file system objects) and again free up contiguous memory.  

For more information on these commands see:

Choose files or drag and drop files
Was this article helpful?
  1. Phil Manuel

  2. Posted
  3. Updated