WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Linux, UNIX, Open Source (http://www.wcm.at/forum/forumdisplay.php?f=13)
-   -   Jobsize > 4GB? Kernel 2.4.20 (http://www.wcm.at/forum/showthread.php?t=90433)

starcry 07.03.2003 15:42

Jobsize > 4GB? Kernel 2.4.20
 
Vielleicht kann mir hier jemand weiterhelfen, wir haben folgendes Problem:

2x Athlon MP 2600+ auf einem TYAN Board mit 4GB DDR, Linux Kernel 2.4.20, beim Kompilieren des Kernels sind folgende Switches gesetzt:
#
# Processor type and features
#

CONFIG_MK7=y

CONFIG_X86_WP_WORKS_OK=y
CONFIG_X86_INVLPG=y
CONFIG_X86_CMPXCHG=y
CONFIG_X86_XADD=y
CONFIG_X86_BSWAP=y
CONFIG_X86_POPAD_OK=y
# CONFIG_RWSEM_GENERIC_SPINLOCK is not set
CONFIG_RWSEM_XCHGADD_ALGORITHM=y
CONFIG_X86_L1_CACHE_SHIFT=6
CONFIG_X86_HAS_TSC=y
CONFIG_X86_GOOD_APIC=y
CONFIG_X86_USE_3DNOW=y
CONFIG_X86_PGE=y
CONFIG_X86_USE_PPRO_CHECKSUM=y
CONFIG_X86_F00F_WORKS_OK=y
CONFIG_X86_MCE=y
# CONFIG_TOSHIBA is not set
# CONFIG_I8K is not set
CONFIG_MICROCODE=y
CONFIG_X86_MSR=y
CONFIG_X86_CPUID=y
# CONFIG_NOHIGHMEM is not set
# CONFIG_HIGHMEM4G is not set
CONFIG_HIGHMEM64G=y
CONFIG_HIGHMEM=y
CONFIG_X86_PAE=y
CONFIG_HIGHIO=y
# CONFIG_MATH_EMULATION is not set
CONFIG_MTRR=y
CONFIG_SMP=y
# CONFIG_MULTIQUAD is not set
# CONFIG_X86_TSC_DISABLE is not set
CONFIG_X86_TSC=y
CONFIG_HAVE_DEC_LOCK=y

Beim Abarbeiten unserer Jobs (Place&Route von ASICs) stirbt der Prozeß Astro sobald er 2,8 MB RAM allokiert mit:
ERROR: fail to allocate more memory, call callback
ERROR: fail in dbIncrease
caught signal 11 [segmentation violation].

DIE ANZEIGE VON TOP :

2:39pm up 35 min, 3 users, load average: 1.15, 1.06, 0.86
57 processes: 54 sleeping, 3 running, 0 zombie, 0 stopped
CPU states: 96.0% user, 3.9% system, 0.0% nice, 0.0% idle
Mem: 3875900K av, 3865496K used, 10404K free, 0K shrd, 1656K buff
Swap: 10241240K av, 9148K used, 10232092K free 1015188K cached

PID USER SIZE SWAP RSS STAT %CPU %MEM TIME COMMAND
1240 star 2732M 8016 2.7G R 96.5 71.9 24:36 Astro
1610 star 1164 0 1164 R 1.8 0.0 0:08 top
1532 hammerl 1144 0 1144 S 1.6 0.0 0:14 top
1 root 524 0 524 S 0.0 0.0 0:04 init

Der Absturz passiert, wenn Mem: xxxx av = xxxx used oder wird.
Hab ich noch irgendetwas vergessen, theoretisch sollte der Job mit diesen Einstellungen auch 64GB groß werden können?
Gibt es einen Kernel mit dem dieses Problem nicht auftaucht?
Ratlos????!?

Bin für jede Hilfe dankbar, die Zeit drängt.
Christian
:confused:

Sloter 11.03.2003 01:18

Einen smp Kernel einsetzen, dann sollte es klappen.

Sloter

starcry 11.03.2003 20:13

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:cool:


Alle Zeitangaben in WEZ +2. Es ist jetzt 11:33 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag