Meminfo total: 3097452 kB shows how much RAM your OS can access. So it is 3GB, as you say you have that much memory in your system, so it is fine.
DMI total: 4096000 kB comes from your BIOS and shows how much memory is installed according to the BIOS.
Accuracy: 75.00 Memory totals not close enough is just what you thought, the ratio of the two above: Meminfo_total/DMI_total. (rounded down to 2 decimal places)
So this test is for testing if your OS is correctly detecting an using all your available RAM. If the
Accuracy is above 90% then the test PASSes, if it is under it FAILs.
You may ask the question: Why is it passing when it is above 90%, shouldn't this test only pass if the accuracy is exactly 100%? Since that would mean that the OS has access to all the installed memory, under 100% means there is a problem.
The answer is that there is a safe situation when the OS doesn't has access to all the installed memory: When you have an integrated device which uses shared memory and the BIOS reserves some memory for this device from the installed RAM. This is usually an integrated VGA card. So if you have an integrated VGA, it is usually perfectly normal that the accuracy is below 100%, so the test passes even with only 90%. Some minimal RAM is also reserved for some BIOS stuff but those are a negligible amount.
You could argue though that 90% is just an arbitrary number, why not 85% or 80%? Yes, it is arbitrary, and I don't know why was exactly 90% chosen for this test.
You can view the source code of this test in
/usr/share/checkbox/scripts/memory_compare, it is a simple bash script on 12.04, on later releases it is a python script. You can also run it from there with
Now it is clear that you have no problems with your RAM, since you installed 3GB and all is available. So why is this test reporting that you have 4GB installed memory?
Two situations possible:
So to test the second case run
sudo dmidecode -t 17, this is how the test gains access to the BIOS data about RAM. Observe the output if it contains only RAM modules. If it outputs other devices, like in the above linked bugreport, and that device has a Size property, then this test will add the size of that device too to the RAM, and the
DMI total output will show more RAM than it is available.
This bug was corrected in the later releases, from 12.10. But in 12.04 we have the old bash script with the bug. And the output you wrote in your comment is from this old bash version of the script.