oom-killer killing processes despite having plenty of free swap
Solution 1:
Take a look at this page for some information that may help in diagnosing your problem.
In particular, you need to look at /proc/meminfo
and /proc/slabinfo
for more information as a start.
Solution 2:
You have a device driver or other kernel subsystem allocating a large amount of real-memory. That's the reason it's not swapping out to your swap space.
You need to identify the work-load you are doing and try to isolate the kernel system that's allocating large amounts of memory.