So, without really thinking too much, I ran this script:
#!/bin/bash
SWAP="${1:-512}"
NEW="$[SWAP*1024]"; TEMP="${NEW//?/ }"; OLD="${TEMP:1}0"
sed "/^Swap\(Total\|Free\):/s,$OLD,$NEW," /proc/meminfo > /etc/fake_meminfo
mount --bind /etc/fake_meminfo /proc/meminfo
It worked really well for lying about my swap-space, but now I'd like good old commands like
free -m
to work again, but /proc/meminfo is totally empty and the server doesn't seem to know anything about it's RAM any more, even with atop or somesuch.
Thanks for reading.
Best Answer
Just unmount it:
umount /proc/meminfo
All those programs (
free
,top
,atop
, etc.) have to get their information from somewhere. And that somewhere is/proc/meminfo
.If you want to provide fake information for one program, run it in a mount namespace:
If you want to lie only about the swap space, make the fake
meminfo
file a dynamic file via a FUSE filesystem. (Note: a named pipe also works, but only if it's accessed by a single program at a time.)