Installed 32GB memory - Manjaro only sees 27GB?

So i bought another memory stick, i should have 32GB, but free -h lists total memroy as 27Gi.

    ~  free -h                                                                                                                                                                                                                                                              ✔  14s  
               total        used        free      shared  buff/cache   available
Mem:            27Gi       1,9Gi        23Gi       189Mi       1,8Gi        24Gi
Swap:           16Gi          0B        16Gi
    ~  free                                                                                                                                                                                                                                                                         ✔ 
               total        used        free      shared  buff/cache   available
Mem:           27945        1905       24236         189        1803       25476
Swap:          16894           0       16894

Yet, sudo lshw -short -C memory sees all 32GB.

H/W path              Device          Class          Description
================================================================
/0/0                                  memory         64KiB BIOS
/0/f                                  memory         32GiB System Memory
/0/f/0                                memory         [empty]
/0/f/1                                memory         16GiB DIMM DDR4 Synchronous Unbuffered (Unregistered) 3200 MHz (0,3 ns)
/0/f/2                                memory         [empty]
/0/f/3                                memory         16GiB DIMM DDR4 Synchronous Unbuffered (Unregistered) 3200 MHz (0,3 ns)
/0/11                                 memory         384KiB L1 cache
/0/12                                 memory         3MiB L2 cache
/0/13                                 memory         16MiB L3 cache

Where’s the other 5 gb? :smiley:
Is this some kind of 1000 vs 1024 thing like with SSds? They list 500GB but you actually get 450GB because of different calculations?

In BIOS (or rather UEFI), it sees both sticks normally, and lists 32 GB.
Both are Crucial 16GB 3200 CL22 sticks (though, one gets recognized as Micron in bios).
They don’t look the same, but i assume that’s just some manufacturing process thing? The sytem does recognize 32 GB and the speed and all, just not sure why free is showing 27 total.

Just curious where those 5GB went, and if it’s something that i should be concerned about - as in - faulty memory or something.

When i had 16GB free showed 15, but that’s just 1 GB discrepancy, this is 5…

Also, how do i check if they’re running in dual channel?

2 Likes

Hi,

Part of your guess is correct about the unit. (1000 vs 1024)
If you now only call up “free”, you will also see “more memory”.

But this should only account for 1-2GB.

Do you have an onboard graphics card? Depending on the Bios setting, these also branch off a few GB of memory accordingly.

1 Like

Look in your BIOS/UEFI settings for what percentage of the installed RAM it reserves for the onboard graphics processor.

4 Likes

I do, and @Aragorn did point out in another thread that free doesn’t see RAM allocated to the GPU - i didn’t know that.

I will check that out, definitely! Thank you so much!

I think it is allocated to the GPU.
What’s better though? Having it allocated specifically or on “auto” mode? Do AMD (mesa) drivers automatically allocate video memory as needed? Cause if that’s so, i’d rather have it on auto…

Anyway, i’ll check and report back.

Here is a Link for you:
https://www.unitjuggler.com/convert-memory-from-GB-to-GiB.html

1 Like

Yes, it was allocated to the GPU.

This is free -h now:

               total        used        free      shared  buff/cache   available
Mem:            30Gi       1,5Gi        28Gi       125Mi       1,1Gi        28Gi
Swap:           16Gi          0B        16Gi

It was set to something called “UMA_GAME_OPTIMISED”, i’ve set it to “auto” now.
If the games work normally, i’ll keep it like that. I think the driver should dynamically allocate memory right? And for other GPU applications like looking-glass?

This seems right now - it’s seeing 30Gi, so that 1-2 GB is 1000 vs 1024. :slight_smile:

It’s a matter of preference and usage. If you’re going to be running graphics-intensive things — e.g. heavy gaming or heavy 3D rendering stuff — then you’ll want as much video memory as you can get, so to speak.

“Auto” mode doesn’t have anything to do with on-the-fly allocation. It’s just a setting that allows the firmware to determine how much of your RAM will be set aside for video depending on the amount of installed RAM, as opposed to that you’d set the value yourself.

In my experience…

  • If the system has 8 GiB of RAM, then the firmware will allocate about 256 MiB for graphics.
  • If the system has 16 GiB of RAM, then the firmware will allocate about 512 MiB for graphics.
  • If the system has 32 GiB of RAM, then the firmware will allocate 1 to 2 GiB for graphics.
  • If the system has 64 GiB of RAM, then the firmware will allocate 4 to 8 GiB for graphics.

Let’s just put it this way: I’m not a gamer and my screen resolution is only 1920 x 1080, but I do have various 3D effects enabled in Plasma, and I haven’t had any problems yet with the 0.5 GiB worth of RAM that my onboard graphics processor uses.

1 Like

I see! Thank you.

Basically, the only thing i play is Guild Wars 2 and basically 5-10 year old games. :smiley:
Nothing i’d need a new GPU for right now, so if those work without issues, and looking-glass as well, then i’m fine. :slight_smile:

If not, i’ll allocate more memory to be dedicated to the GPU.

And yeah, Plasma isn’t that intense, it uses resources pretty well! And looks beautiful, not to mention all the useful features that i’ll probably never want to live without haha. :smiley:

The missing Gb may as well be a tmpfs mounted on /tmp … In such case the /tmp is a file system into the ram, so rather a quick one !
look at return from df or cat /etc/fsatb
https://wiki.archlinux.org/title/Tmpfs

2 Likes

Ok mine is about that region (31GiB according to free and 31.3GiB according to conky), but I have a CPU without graphics, and a dedicated GPU.

So either I’ve missed/mis-configured something or the UEFI needs to reserve it no matter what. Any other options that you’re aware of?

I can’t think of anything else atm (apart from tmpfs, which seems too high up :man_shrugging:).

@DerTodesengel88

Sorry but that’s storage, RAM modules are manufactured in GiB.

@Denis_Pom

Have you tried looking at df? 32GiB RAM == 16GiB for /tmp

Perhaps some small amount of RAM is reserved for tmpfs at a lower level…I can’t rule it out, but I doubt it. :man_shrugging:

Some of the memory may be reserved for legacy PCI devices — although this should not be an issue on 64-bit hardware due to the remapping of memory addresses and the sparse memory model — and there could also be a disparity between the decimal and binary quantifiers — GB versus GiB.

I’m guessing that the firmware itself will also be taking up some of the installed RAM, for doing low-level things.

No, tmpfs is never subtracted from the total amount of memory as shown by free. The memory usage of tmpfs — which is not solely RAM-based, as its contents can be paged out — falls under the “shared memory” header.

That’s only the default setting for the maximum amount of virtual memory that the tmpfs in question may consume — the three bold-printed terms in this sentence are important. :wink:

  1. tmpfs is a filesystem in virtual memory, not in RAM. The Linux kernel uses virtual memory, which means that the data can exist either in RAM or on the swap device.

  2. The default maximum size for tmpfs is half of the installed RAM, but the maximum value can be specified at mount time.

  3. The maximum value of tmpfs is the amount of virtual memory reserved for that particular tmpfs mount. It does not mean that the tmpfs would actually be using that much memory. Every unused byte of that maximum amount is still available as regular virtual memory, and only the virtual memory addresses of the tmpfs that contain data are to be subtracted from the total amount of available virtual memory.

So if you have a 16 GiB tmpfs mounted at /tmp and it only contains 1 MiB of data, then the rest of that reserved capacity is still usable as RAM. That’s why it’s called shared memory. :wink:

4 Likes

I think this is probably it. :smile:

The numbers are wrong 32GB == 29.8GiB, and both are displaying ~31GiB. Unless I misunderstand your meaning.

I know, and I didn’t think it could be tmpfs, but I couldn’t preclude it entirely based on what I know.

My premise was that it can’t reserve all of it, and what you put in is in virtual memory just like everything else, but perhaps there was a small part in reserved memory. I was mostly just trying not to be too negative. :grin:

Thank you for confirming my understanding of tmpfs, it’s nice to have knowledgable people around. :smile:

2 Likes

@Denis_Pom About the df or cat /etc/fsatb:

cat /etc/fsatb says no such file or directory

and df outputs this:

Filesystem      Size  Used Avail Use% Mounted on
dev              16G     0   16G   0% /dev
run              16G  1,9M   16G   1% /run
/dev/nvme0n1p2  449G  253G  196G  57% /
tmpfs            16G  646M   15G   5% /dev/shm
/dev/nvme0n1p2  449G  253G  196G  57% /var/cache
/dev/nvme0n1p2  449G  253G  196G  57% /home
/dev/nvme0n1p2  449G  253G  196G  57% /var/log
tmpfs            16G   22M   16G   1% /tmp
/dev/nvme0n1p1  300M  608K  299M   1% /boot/efi
tmpfs           3,1G  108K  3,1G   1% /run/user/1000

sorry, it’s cat /etc/fstab
From df, you have a tmpfs (max 16GB) of which about 1 GB is currently used. So at least 1Gb less for the available RAM.

1 Like

Oh wow, i didn’t even notice lol! I knew it’s fSTab but i just assumed it’s not present for some reason. Never occured to me the letters were switched. :smiley: It would be weird if wasn’t present though haha. :laughing:

Anyway, here’s the output:

# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a device; this may
# be used with UUID= as a more robust way to name devices that works even if
# disks are added and removed. See fstab(5).
#
# <file system>             <mount point>  <type>  <options>  <dump>  <pass>
UUID=F547-92B5                            /boot/efi      vfat    umask=0077 0 2
UUID=27a6f9c0-8b45-42c5-85e1-be095307048f /              btrfs   subvol=/@,defaults,discard=async,ssd 0 0
UUID=27a6f9c0-8b45-42c5-85e1-be095307048f /home          btrfs   subvol=/@home,defaults,discard=async,ssd 0 0
UUID=27a6f9c0-8b45-42c5-85e1-be095307048f /var/cache     btrfs   subvol=/@cache,defaults,discard=async,ssd 0 0
UUID=27a6f9c0-8b45-42c5-85e1-be095307048f /var/log       btrfs   subvol=/@log,defaults,discard=async,ssd 0 0
UUID=b58bc35c-1a93-4c4c-a1ec-5eefe535dea6 swap           swap    defaults,noatime 0 0
tmpfs                                     /tmp           tmpfs   defaults,noatime,mode=1777 0 0

I can live without 1-2 GB of unavailable memory if it’s used for good. :slight_smile:
So far, that second stick jumpstarted my system immensely! And i’m getting 75 FPS in Guild Wars 2 in areas that were before chugging at 45! Probably because it now has more memory to use, i set the memory allocation for GPU to “auto” in UEFI, and well, now it’s dual channel so it’s WAY faster!

I never knew the difference would be so huge, i mean, even Manjaro is a bit more snappy. Though to its credit, it was from the beginning, but somehow it’s even faster now! :smiley: