Product SiteDocumentation Site

7.4.7. Is Your RAM Not Being Recognized?

In some cases the kernel does not recognize all of your memory (RAM), which causes the system to use less memory than is installed. You can find out how much RAM is being utilized using the free -m command. If the displayed total amount of memory does not match your expectations, it is likely that at least one of your memory modules is faulty. On BIOS-based systems, you can use the Memtest86+ utility to test your system's memory - see Section 8.5.1, “Loading the Memory (RAM) Testing Mode” for details.

Note

If you have 4GB or more memory installed, but Fedora only shows around 3.5GB or 3.7GB, you have probably installed a 32-bit version of Fedora on a 64bit kernel. For modern systems, use the 64-bit (x86_64) version.
Some hardware configurations have a part of the system's RAM reserved and unavailable to the main system. Notably, laptop computers with integrated graphics cards will reserve some memory for the GPU. For example, a laptop with 4 GB of RAM and an integrated Intel graphics card will show only roughly 3.7 GB of available memory, even with a 64-bit system.
Additionally, the kdump crash kernel dumping mechanism reserves some memory for the secondary kernel used in case of the primary kernel crashing. This reserved memory will also not be displayed as available when using the free command. For details about kdump and its memory requirements, see the Fedora System Administrator's Guide, available at http://docs.fedoraproject.org/.
If you made sure that your memory does not have any issues, you can try and set the amount of memory manually using the mem= kernel option.
Procedure 7.5. Configuring the Memory Manually
  1. Start your computer and wait until the boot loader menu appears. If you set your boot loader timeout period to 0, hold down the Esc key to access it.
  2. When the boot loader menu appears, use your cursor keys to highlight the entry you want to boot and press the e key to edit this entry's options.
  3. In the list of options, find the kernel line - that is, the line beginning with the keyword linux (or, in some cases, linux16). Append the following option to the end of this line:
    mem=xxM
    Replace xx with the amount of RAM you have in megabytes.
  4. Press F10 or Ctrl+X to boot your system with the edited options.
  5. Wait for the system to boot and log in. Then, open a command line and execute the free -m command again. If total amount of RAM displayed by the command matches your expectations, append the following to the line beginning with GRUB_CMDLINE_LINUX in the /etc/default/grub file to make the change permanent:
    mem=xxM
    Replace xx with the amount of RAM you have in megabytes.
  6. After you updated the file and saved it, refresh the boot loader configuration so that the change will take effect. Run the following command with root privileges:
    # grub2-mkconfig --output=/boot/grub2/grub.cfg
In /etc/default/grub, the above example would look similar to the following:
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release.*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="rd.lvm.lv=rhel/root vconsole.font=latarcyrheb-sun16 rd.lvm.lv=rhel/swap $([ -x /usr/sbin/rhcrashkernel.param ] && /usr/sbin/rhcrashkernel-param || :) vconsole.keymap=us rhgb quiet mem=1024M"
GRUB_DISABLE_RECOVERY="true"
See the Fedora System Administrator's Guide, available at http://docs.fedoraproject.org/, for more information about working with the GRUB2 boot loader.