Teile und herrsche

2.6.15-mm3 bringt eine Option zur Konfiguration der Grenze zwischen Kernel- und Userspace im RAM. Mögliche Optionen sind 3G/1G (default), 3G/1G (ohne Highmem), 2G/2G und 1G/3G. Einen ähnlichen Patch gab es bereits vor zwei Jahren für Kernel 2.4.23. Die Option zielt auf ein Problem ab, welches auf 32-Bit-Systemen besteht und sich in der Default-Einstellung (3G/1G) so auswirkt, dass Userspace-Applikationen Zugriff auf bis zu 3 GB RAM haben, der Kernel aber nur 896 MB RAM direkt ansprechen kann. Die fehlenden 128 MB verwendet der Kernel zur Verwaltung des restlichen Speichers.

Auf einem System mit einem Gigabyte Speicher muss oft bereits ein Teil des RAMs mithilfe interner Mappings in die “Highmem”-Area geschoben werden, eine Funktion, welche man ansonsten erst auf Systemen mit bis zu 4 bzw. bis zu 64 GB RAM (via PAE) benötigt. PCI-Geräte können diesen Bereich nicht nutzen, was den Gebrauch von temporären Puffern in niedereren Speicherbereichen erzwingt. Deren Gebrauch sowie der Aufwand für die zusätzlichen Mappings kostet Zeit, weswegen man bisher meist einfach auf die “verlorenen” 128 MByte RAM verzichtete – ein Umstand den Jens Axboe, der Autor des Patches, nicht so recht akzeptieren will.

Denn immer mehr User können sich ein Gigabyte Speicher leisten, benutzen aber nicht unbedingt Applikationen, welche 3 GB Speicher pro Prozess benötigen. Für diese Fälle bietet sich die Einstellung 2G/2G an. Auf Rechnern mit sehr vielen laufenden Prozessen, welche erst in Summe gesehen viel Speicher ansprechen (beispielsweise Terminal-Server), kann die Option 1G/3G von Nutzen sein. Für User mit noch mehr Speicher führt auch weiterhin kein Weg an Highmem vorbei.