2

I am using Lubuntu 14.04

I have two sticks of 4 GB RAM, they work fine under Windows. But when I open the LXTask it says I have 7868 MB when it should show 8192 MB.

Using no integrated graphics (Radeon R9 270X). The Athlon X4 760K does not feature them at all.

free -m output:

david@lubuntu:~$ free -m
             total       used       free     shared    buffers     cached
Mem:          7868       7118        750         11         36       2008
-/+ buffers/cache:       5073       2795
Swap:         8135          0       8135

UPDATE

The -h output still reports less than 8GB:

david@lubuntu:~$ free -h
             total       used       free     shared    buffers     cached
Mem:          7.7G       7.1G       632M        11M        38M       2.0G
-/+ buffers/cache:       5.1G       2.6G
Swap:         7.9G         0B       7.9G
3
  • No, it sports a HD 7870 and the cpu is Athlon X4 760K Apr 6, 2015 at 14:26
  • 1
    Please edit your question to add the new information from your comment and please also add the output of lsb_release -a
    – Elder Geek
    Apr 6, 2015 at 14:34
  • Check /proc/meminfo file with cat /proc/meminfo . You should have line MemTotal which reports physical ram Source. Also, as ElderGeek has noted, there's always some ram reserved by the system for peripherals (keyboard, display) and such Apr 18, 2015 at 17:30

3 Answers 3

4

This is because Windows and Linux have different understandings of how many bytes there are in one kilobyte, as this article explains.

For example

In Windows

Windows assumes that there are 1024 Bytes in a Kilobyte unit, and 1024 Kilobytes in a Megabyte unit etc.

In Ubuntu (GNU/Linux) …

Ubuntu assumes, a 1000 bytes constitute a Kilobyte (KB) unit, 1000 Kilobytes for a Megabyte (MB) and so on.


This ‘confusion’ came into existence in the old days, due to various computer storage hardware devices, such as ‘RAM’ and ‘ROM’ using 1024 as the ‘unit prefix’ (for technical reasons) when converting between units (except for ‘bytes’).

But most other storage devices such as HDDs and Flash drives, using 1000 as the base ‘unit prefix’, while calculating the sizes. So there arose a bit of a confusion among the experts, which to use while displaying file sizes in different units.

For a better explanation, read the Wikipedia entry on binary prefix

The computer industry currently uses terms such as kilobyte, megabyte, and gigabyte, and corresponding symbols KB, MB, and GB, in two different ways. In citations of main memory or RAM capacity, gigabyte customarily means 1073741824 bytes. This is a power of 1024 (specifically 10243), and 1024 is a power of 2 (specifically 210), therefore this usage is referred to as a binary prefix.

In most other contexts, the industry uses kilo, mega, giga, etc., in a manner consistent with their meaning in the International System of Units (SI): as powers of 1000. For example, a 500 gigabyte hard drive holds 500000000000 bytes, and a 100 megabit per second Ethernet connection transfers data at 100000000 bit/s. In contrast with “binary prefix”, this usage is referred to as a “decimal prefix“, as 1000 is a power of 10. So later, to avoid confusions, the IEC and NIST standardized them, and changed the symbols...

In usage, products and concepts typically described using powers of 1024 would continue to be, but with the new IEC prefixes. For example, a memory module of 536870912 bytes (512×1048576) would be referred to as 512 MiB or 512 mebibytes instead of 512 MB or 512 megabytes. Conversely, since hard drives have historically been marketed using the SI convention that “giga” means 1000000000, a “500 GB” hard drive would still be labelled as such.

According to these recommendations, operating systems and other software would also use binary and SI prefixes in the same way, so the purchaser of a “500 GB” hard drive would find the operating system reporting either “500 GB” or “466 GiB“, while 536870912 bytes of RAM would be displayed as “512 MiB”.

In simple terms, if an operating system uses the term ‘megabyte’ (MB), then it should use the 1000 bytes per kilobyte (KB), 1000 kilobytes to a megabyte (‘MB‘) etc perceptual value (‘decimal prefix), while converting between the units.

If it uses the value 1024 (‘binary prefix’), then it should address them as ‘kibibytes’ (KiB), ‘mebibytes (MiB) etc.

So in that sense, it does not matter whether the OS uses the ‘binary prefix’ or the ‘decimal prefix’, what’s important is that it uses the correct symbols to display them.

It is apparent that Windows is using the ‘binary prefix’, as if you take the first image, then you will see that it lists the size as ‘710,934,528 bytes’. Now take a calculator and divide it by ‘1024’, which should give you its size in ‘kibibytes’. Then re-divide it again and it will give you the value 678, which is in ‘mebibytes (MiB).

Now do the same, using the second image that was taken in Ubuntu. But this time, use the value 1000 instead of 1024, and you will get the output in megabytes (MB), 710.9.

I honestly do not know about ‘IEC’ and ‘NIST’ laws and how they are applied, but Windows, since it uses the ‘binary prefix’, should be using symbols KiB, MiB, GiB etc rather than using KB, MB, GB etc, and therefore seems like in a direct violation as well (the paper only says ‘would’ though).

2
  • No problems, mate. If you find this answer useful you can accept it.
    – Sh1d0w
    Apr 6, 2015 at 14:52
  • this explanation no longer works when 32Gb RAM installed are reported as only 11.8Gb askubuntu.com/q/1112955/524458
    – el-teedee
    Jan 27, 2019 at 14:04
2

To see RAM in terms that your used to open a terminal and issue the command free -h - I have 2GB of ram in this system and my output is as follows for free -m (which returns results in "megabytes":

$ free -m
             total       used       free     shared    buffers     cached
Mem:          2005       1816        189        259        161        935
-/+ buffers/cache:        719       1285
Swap:          973         34        939

free -h returns (in human readable form):

$ free -h
             total       used       free     shared    buffers     cached
Mem:          2.0G       1.8G       151M       253M       166M       931M
-/+ buffers/cache:       756M       1.2G
Swap:         973M        34M       939M

You may find this formatting more to your liking!

Another reason why your system may report less RAM than installed is RAM reserved by the system for specific purposes, Sometimes there's a reserved video aperture on one of the BIOS setup pages. You may be able to free some up by reducing that size. There are many variables when you get down to system hardware. Your motherboard manufacturer may be able to shed more light on this for you.

You can get output on the RAM reserved by the system by issuing the command dmesg | grep BIOS | grep reserved and you may be able to decrease this by modifying settings in the BIOS, but getting it down to zero on a modern system is highly unlikely. You may also find this informative.

1
  • Still says less than 8GB: david@lubuntu:~$ free -h total used free shared buffers cached Mem: 7.7G 7.1G 632M 11M 38M 2.0G -/+ buffers/cache: 5.1G 2.6G Swap: 7.9G 0B 7.9G Apr 6, 2015 at 14:44
1

While the description about KiB/KB and so on in shaddy's answer is correct, it's not correct that the difference is between Linux and Windows, it's only about presentation in particular programs. In particular, free shows results in KiB, which is easy to check on the man page:

Show all output fields automatically scaled to shortest three digits and 
display the units of print out. The following units are used:

   B = bytes
   K = kibibyte
   M = mebibyte
   G = gibibyte
   T = tebibyte
   P = pebibyte

The general rule of thumb is usually rather: HDDs: multiplier is 1000, RAM: multiplier is 1024. But best check in docs of the tools you are using.

And to the actual question: As you clarified that you have integrated graphics the correct answer is most likely that some memory is simply reserved for it.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .