Igor Kromin |   Consultant. Coder. Blogger. Tinkerer. Gamer.

My photo frame has had some new pictures added to it recently after which it started to crash. Turns out it was running out of memory. I guess 256Mb of RAM could not accommodate for a 128Mb JVM as well as the OS. I decided to add some virtual memory swap space to it only to find that dphys-swapfile was not installed by default in Minibian. This article describes the steps I followed to get virtual memory working.

First, this is the kind of error that I was seeing...
 dmesg output
[ 2923.832511] Out of memory: Kill process 2291 (java) score 611 or sacrifice child
[ 2923.839974] Killed process 2291 (java) total-vm:266796kB, anon-rss:131832kB, file-rss:4764kB

This was verified by running 'free'...
 free -h
total used free shared buffers cached
Mem: 212M 153M 58M 0B 10M 81M
-/+ buffers/cache: 62M 150M
Swap: 0B 0B 0B

No swap space! No big deal, just install dphys-swapfile as the root user.

 Command ran as root
apt-get install dphys-swapfile

During installation a 512Mb swap file is configured for you, but if you want to change that it can be done by editing the /etc/dphys-swapfile configuration file. The default is like this...

Now just run the setup and turn on the swap space...
 Commands ran as root
dphys-swapfile setup
dphys-swapfile swapon

Running 'free' again confirms that the swap space has been added...
 free -h
total used free shared buffers cached
Mem: 212M 188M 24M 0B 12M 112M
-/+ buffers/cache: 63M 149M
Swap: 511M 0B 511M

These settings stay after a restart, so there is nothing else to do once you've set it up. After these changes I have not had a single crash.

I'd not recommend enabling swap on a Raspberry Pi unless you really need it and don't care about performance. In my case, it doesn't matter if it runs slower since it's just a photo frame, but the same won't apply in all use cases.


Have comments or feedback on what I wrote? Please share them below!
comments powered by Disqus
Other posts you may like...