Re: memory & filesystem corruption under heavy load?

Linus Torvalds (torvalds@cs.helsinki.fi)
Sun, 7 Apr 1996 07:45:18 +0300 (EET DST)


VERY interesting.

On Sat, 6 Apr 1996, Markus Kossmann wrote:
>
> I have problems with system crashes under heavy load, too.
> My System :
> P100
> Asus TP4 Board 16 MB FPM-DRAM 512k 15ns Cache (Triton chipset)
> NCR 53C810 SCSI with Quantum LPS 1080S (sda ) , XP32150 (sdb) and
> Toshiba XM3401TA cdrom
> IDE :Connor CP30254 (hda) Seagate ST3660A (hdb)
> VGA : ATI Mach 64 4MB VRAM
> Linux / = sdb6 /usr = sdb7 /usr/src = sdb8
>
> I first got these problems with 1.3.3? ( I don't remember, at that time
> I didn't have internet access). I tracked the problems back to 1.3.18
> when 4MB-page-tables were introduced. With the following patch in
> include/asm-i386/pgtable.h I disabled them :

You should be able to disable the 4MB pages with the kernel boot command
of "mem=nopentium" too (just add it as an append to your lilo config
file). Do your problems go away with that too, even on an unpatched
kernel?

> With an patched 1.3.84 I have run a make -j of 1.3.84 without any crash
> ( Using 70 MB virtual memory ( 16 phys + 54 swap ) and running time > 3h
> ;-))

Umm.. I started looking at the code, and I did find one problem in the
4MB page setup, but that should not matter on any normal machine (it only
matters if your machine doesn't ahve an even multiple of 4MB or RAM in
it).

There is a test that looks something like this in arch/i386/mm/init.c:

if (address <= end_mem + 4*1024*1024 &&
(x86_capability & 8))

Just change the "+" into a "-", and that particular bug should be fixed.

Does that one-character fix correct this problem for you? (You _might_
have 384kB re-mapped memory above your 16MB). I don't see why the extra
TLB mapping should make any difference at all even when the bug is there,
but just in case..

Anyway, thanks for the interesting report. I'll track this down, somehow
(maybe my intel contacts can tell me if there are known problems with the
4MB code on some chips)

Linus