Habe mittlerweile die Antwort selbst gefunden:
Unter Linux (32Bit) kann man maximal 3.5-3.7 GB pro Job allokieren.
Um dies zu realisieren müssen einige Modifikationen am Kernel vorgenommen werden, die ich hier kurz beschreiben möchte:
1. Download eines Kernels (Achtung funktioniert nicht mit allen!) 2.4.18
cd /usr/src; gzip -dc linux-2.4.18.tar.gz |tar -xvf -
2. Backup der Dateien
/usr/src/linux-2.4.18/include/asm-i386/page.h,
/usr/src/linux-2.4.18/include/asm-i386/processor.h, sowie
/usr/src/linux-2.4.18/include/arch/i386/vmlinux.lds
3. Editieren von page.h
Ändern der Zeile:
#define __PAGE_OFFSET (0xC0000000)
nach
#define __PAGE_OFFSET (0xE0000000)
4. Editieren von processor.h
Ändern der Zeile:
#define TASK_UNMAPPED_BASE (TASK_SIZE / 3)
nach:
#define TASK_UNMAPPED_BASE (TASK_SIZE / 16)
5. Editieren von vmlinux.lds
Ändern der Zeile:
. = 0xC0000000 + 0x100000
nach :
= 0xE0000000 + 0x100000
Steht gleich am Anfang der Datei!
6. Im Makefile noch eine eigene Kernelnote eintragen (das erleichtert das Arbeiten mit verschiedenen Versionen).
EXTRAVERSION = .HIGHMEM_PATCH-3.6GB
7.mit make xconfig das Setup überarbeiten, wobei unbedingt folgende Werte für den Abschnitt "Processor Type and Features" gesetzt sein müssen (im .conf nachschauen!)
# CONFIG_NOHIGHMEM is not set
CONFIG_HIGHMEM4G=y
# CONFIG_HIGHMEM64G is not set
CONFIG_HIGHMEM=y
CONFIG_X86_PAE=y
CONFIG_HIGHIO=y
# CONFIG_MATH_EMULATION is not set
CONFIG_MTRR=y
CONFIG_SMP=y #<= nur bei Multiprozessor-Maschinen
8. den Kernel neu kompilieren und installieren!
make dep clean bzImage modules modules_install install
9. den neuen Kernel im lilo eintragen und lilo starten, fertig.
Danach kann ich mit meiner Applikation wenigstens über 3GB RAM ansprechen.
Es gibt auch noch vorkompilierte Kernel die diesen 0xe Patch draufhaben, die ich allerdings nicht getestet habe. Zu finden ist einer unter:
//http://www.magma-da.com/c/@OZjWUr9JTT8GQ/Pages/OSRequirements.html
Wenn jemand noch Erfahrungen mit großen Prozessen hat, so bin ich für jede Info dankbar.
lg
starcry
