Here is a handy script that will check all processes and report what is swapping
#!/bin/bash
for pid in `ps x|awk '{print $1}'`; do
result=`cat /proc/$pid/status|grep VmSwap|awk '{print $2}'|grep -v ^"0"`
if [ ! -z "$result" ]; then
programresult=`ps x|grep $pid|grep -v grep`
if [ $? == 0 ]; then
program=`echo $programresult|awk '{print $5}'|grep -v ^grep`
fi
echo "$pid $program swap = $result kB"
fi
done
You can also pipe the output like this to sort the largest swap processes:
|sort -nr -k4
The old way that never worked very well:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ SWAP COMMAND
7371 on 20 0 1558m 1148 740 S 0 0.0 0:00.02 1.5g services.exe
7369 on 20 0 1558m 1084 708 S 0 0.0 0:00.02 1.5g wineboot.exe
Run top then press 'O' (capital letter o) followed by 'p' then 'enter'. Now processes should be sorted by their swap usage.
linux, processes, swappinghere, swapping, bin, bash, pid, ps, awk, proc, grep, vmswap, quot, z, programresult, echo, fi, swap, kb, output, largest, nr, user, pr, ni, virt, res, shr, cpu, mem, exe, wineboot, sorted, usage,