I'm running Debian Wheezy on a Model B+ which has 512MB of RAM. I've set start_x=0 and gpu_mem=16 in /boot/config.txt and the command vcgencmd get_mem arm && vcgencmd get_mem gpu is showing an expected:
arm=496M
gpu=16M
What isn't expected is that free -h only lists 480M of RAM for the arm:
total used free shared buffers cached
Mem: 480M 411M 69M 4.4M 88M 261M
-/+ buffers/cache: 60M 419M
Swap: 0B 0B 0B
So I'm listed as having 480M total instead of 496M like vcgencmd shows. Why might this be? I thought this might because free presents it as mebibytes instead of megabytes but provided the conversion option free -h --si gives:
total used free shared buffers cached
Mem: 491M 390M 101M 29M 116M 234M
-/+ buffers/cache: 39M 451M
Swap: 0B 0B 0B
Still 5MB short. What may the discrepancy be?