My application randomly returned OOM errors trying to allocate 16M chunks, while Linux had plenty memory used by disk cache (20G).
Swapping disabled. All OS limits seem fine.
After clearing Linux cache with drop_caches error disappeared.
Any idea what to check or is it somehow expected behavior?