On the swap usage:
There's a parameter (swappiness, on
/proc/sys/vm/swappiness or vm.swappiness on /etc/sysctl.conf) that tells the kernel how aggressively to swap. A value of 100 will swap as much as possible until the swap file is full, while 0 will never ever swap, even if there's space and OOP killer started gunning processes down because of lack of memory. That changed some kernel versions ago, before the change a 0 would only swap when memory was exhausted, and now a 0 means never ever swap no matter what. I was left trying to figure out why OOP was killing processes when the swap file was empty.
On virtual servers I usually keep swappiness at 1, so it won't swap unless there's real need, and on desktops I keep at 85 to free up memory for the file cache. On a RasPi with sdcard storage, I would keep it close to 10, because it's better on the SD to read than to write...