Qubes itself takes 8G RAM. Is it normal?

Dom0 and sys-firewall are VMs with default 4G max RAM. Qubes maxes out RAM. That’s 8G. With sys-net and other internals, Qubes itself takes 8G.

Is this normal? Or a bug?

Why does a firewall need 4g? 400M is more than enough in my home router! Also , dom0 is just a management VM. I reckon 500M should be enough.

This leaves RAM for 2 VMs, which slugging Firefox in each.

No need to speculate about how dom0 works, the memory required or how memory is utilized: The Qubes documentation is fairly complete in this regard. Qubes recommends 16Gb of RAM and that’s a good place to start. Please see below for more detail. There are also a number of Forum posts on this matter.

Yes, it seems second link indicates that the Qubes memory manager distributes all of the available memory among running VMs.

Dom0 needs around 1G to run the WM and all those daemon staff. I would recommend that you leave at least 1.5G for dom0.

sys-firewall, by default, is the update proxy of dom0, and needs to parse the repositories’ package lists. This process will be slow if there are not enough RAM, and you will put more stress on your swap ( aka SSD/HDD ). I personally never gives it less than 1G.

Consider Liteqube.