Baseado no programa memdump originalmente encontrado aqui Criei um script para a leitura seletiva de aplicativos especificados de volta à memória. remember
:
#!/bin/bash
declare -A Q
for i in "$@"; do
E=$(readlink /proc/$i/exe);
if [ -z "$E" ]; then.
#echo skipped $i;.
continue;.
fi
if echo $E | grep -qF memdump; then.
#echo skipped $i >&2;.
continue;.
fi
if [ -n "${Q[${E}]}" ]; then.
#echo already $i >&2;.
continue;.
fi
echo "$i $E" >&2
memdump $i 2> /dev/null
Q[$E]=$i
done | pv -c -i 2 > /dev/null
Uso: algo como
# ./remember $(< /mnt/cgroup/tasks )
1 /sbin/init
882 /bin/bash
1301 /usr/bin/hexchat
...
2.21GiB 0:00:02 [ 1.1GiB/s] [ <=> ]
...
6838 /sbin/agetty
11.6GiB 0:00:10 [1.16GiB/s] [ <=> ]
...
23.7GiB 0:00:38 [ 637MiB/s] [ <=> ]
#
Ele pula rapidamente a memória não-trocada (gigabytes por segundo) e desacelera quando a troca é necessária.