To see what architecture (32bits=x86 or 64bits=x86_64) you have installed :
arch
To see the total RAM (in GB) the software-part of the system detects :
free -h | awk 'NR>0{arr[$2]}END{for(i in arr) print i}' | grep G
To see the total RAM (in GiB) the hardware-part of the system detects :
sudo lshw -class memory | grep GiB -m 1
To see each RAM slot and what does your system sees installed in each* :
sudo lshw -class memory | grep GiB
note : GB is gigabyte (1000³ bytes, decimal table) and GiB is gibibyte (1024³ bytes, binary table). It's OK to see exactly how much RAM you have in GiB and it also is OK to see a little less than "real" RAM you have in GB. Just saying.
In this example, I use my own system, which :
- it has a 64bits (x86_64) architecture.
- it uses 7,8GB (= 8GiB) of RAM
- it has 8GiB installed on the motherboard
- it has 4x 2GiB installed (2GiB per slot)
note: "taille" means "size" in french.
![output example](https://i.stack.imgur.com/c2MAs.png)
This should help you at first, I'll come back if I think of something else. Hopefully it will be a real answer, this is at most a tip to verify your sayings and what your system sees.
Best Answer
The only solution that I know of is BadMem (by Rick van Rein), who is able to block bad memory sectors in Linux.
It works by instructing the kernel to lock those memory addresses you specified. This effectively stops Linux from ever addressing those addresses when allocating (and deallocating) memory.
You can read all about at the BadMEM-HOWTO page!
Possible auxiliary documentation can be found at:
BadRAM - Community Ubuntu Documentation.
Linux Journal - Running Linux with Broken Memory By Rick van Rein