Why you should read your log messages from time to time [Update]

I didn't notice this for months. I was only able to use ca. 900 MB of my 1024 MB of RAM. It only happened accidentally that I read through my logs and noticed this:

Dec 26 19:33:37 localhost kernel: Warning only 896MB will be used.
Dec 26 19:33:37 localhost kernel: Use a HIGHMEM enabled kernel.
Dec 26 19:33:37 localhost kernel: 896MB LOWMEM available.

After setting the "High Memory Support" kernel option to 4GB and a quick kernel recompile, I can now use my full RAM. Nice, eh?

Update 2005-12-31: Thanks a lot to all the people pointing out (via comments in the blog and emails) that there's a better way to do this!


Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

A better way to use 1024 MB on i386


There is a better way to enable the use of 1 GB of RAM if you use i386.
It's a patch from Con Kolivas.

As he says:

1g lowmem?
Many machines now have exactly 1Gb ram and the standard memory split on i386 does not allow you to use more than 896Mb ram without enabling high memory for at least 4Gb. The problem is that this incurs an overhead whereas we can simply change this split with this patch to allow i386 architectures to use up to 1Gb ram without enabling highmem. This is configurable if HIGHMEM is disabled. The disadvantage is a small group of programs depend on the split and will not work (such as vmware).

The patch is available at his homepage:



Better solution for 1GB of memory

You don't want to be using the 4GB option just so you can get the extra 100MB of memory; you add overhead to many normal kernel operations that is avoided when you have no HIGHMEM. Instead, you want Con Kolivas' 1gb_lowmem patch, which changes the lowmem limit from 1GB-128MB=896MB to a full 1GB.

Linux memory management article

There is a nice article about Linux memory management at kerneltrap.org.

Should I enable CONFIG_HIGHMEM for my 1 GB RAM system?
It is advised to not enable CONFIG_HIGHMEM in the kernel to utilize
the extra 128 MB you get for your 1 GB RAM system. I/O Devices cannot
directly address high memory from PCI space, so bounce buffers have to
be used. Plus the virtual memory management and paging costs come with
extra mappings.

By the way a 64 bit kernel does not need Highmem ;-)