Skip to contentSkip to conversation

BUG in the kernels 2.4.x

DISCUSSION Eduard Phetisov 2 participants 2 messages Aug 10, 2001

lore
Share & tools
lore
#0 lore raw

I think what I find a bug in the kernels 2.4.x.
Bug apears then several processes allocates some memory. If size of the free memory less then size of claimed memory by processes, system went down. Such phenomenon apears on the several Linux systems. Affected systems
Servers:
Compaq Proliant 8500 (CPU 8xXeon 600, 8Gb RAM, Raid Compaq 5300, OS RedHat 7.0, 7.1, kernels 2.4.2 2.4.3 2.4.4 2.4.5 2.4.7), start.sh parameters 200 50 10
WIT (CPU 8xXeon 700, 8Gb RAM, Raid Mylex DAC960 OS RedHat 6.2, 7.0, 7.1, SuSe 7.2, Mandrake 8.0, kernels 2.4.2 2.4.4 2.4.7 2.4.8) start.sh parameters 200 50 10
IBM (CPU 2xPentium III 500, RAM 1Gb, OS RedHat 6.2, kernels 2.4.2 2.4.3 2.4.4 2.4.5) start.sh parameters 200 10 10

Workstantions:
Cpu Pentium III 600 , RAM 128Mb, OS RedHat 7.0, kernels 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.7, start.sh parameters 70 10 2
Cpu Celeron (Copermine) 600, RAM 64Mb, OS RedHat 7.1, kernels 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.7, start.sh parameters 70 10 2 Cpu Celeron (Copermine) 900, RAM 128Mb, OS RedHat 7.1, kernels 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.7, start.sh parameters 70 10 2 Cpu Celeron (Copermine) 912, RAM 128Mb, OS Mandrake 8.0, kernels 2.4.3 2.4.4, start.sh parameters 70 10 2

with following programs

// Memuse.c is a very funny programm
#include <malloc.h>
#include <stdio.h>

main(int argc, char **argv)
{
int ms, rss, i, sum;
char * arr;

if (argc < 2)

  {
    printf("usage %s MS(MB) RSS(MB)\n", argv[0]);
    exit(255);
  }
  ms = atoi(argv[1])*1024*1024;
  rss = atoi(argv[2])*1024*1024;
  printf("MS=%d bytes, RSS=%d bytes\n", ms, rss);
  printf("Allocating memory ...\n");
  arr = malloc(ms);
  if (arr==NULL)
    exit(printf("Malloc returns NULL\n"));
  for(i=0;i<ms;arr[i]=(i++ & 255));
  printf("Memory Allocated\n");
  while(1)
  {
      for(sum=i=0;i<rss;arr[i] = (i++) & 255);
      sleep(3);

}
}

and with shell script
#!/bin/bash
i=0
if [ $# -ne 3 ]
then
echo Usage $0 Count Use RSS
exit -1
fi
while [ $i -ne $1 ]
do

        memuse $2 $3 &
        echo $i
        i=`expr $i + 1`

done;

Analogous situation must appear every morning, because we have a big database in our busines (Oarcle, database size is about 100Gb and awerage transaction activity about 1000 transactions per second), which used by over then 400 people. Kernels 2.2.x (we use 2.2.19 with several cenges, which allow to use 1.6Gb in the shared memory) works properly in this situation, but it can't use more then 4Gb of memory, so please help us and solve this problem.

#1 lore raw
Quoted 4 lines · Eduard Phetisov

I think what I find a bug in the kernels 2.4.x.
Bug apears then several processes allocates some memory. If size of the free memory less then size of claimed memory by processes, system went down.

What do you mean by system went down ?

Complete lockup or slowndown?