Hi all,
I've stumbled on a problem, on a test machine, using openSUSE 11.1
x86_64 system with 512MB of RAM. This test was just to confirm a friends
claim that he was unable to get a working server with that kind of hardware.
The problem is that openSUSE uses all of the memory for simple
tasks, like fsck. Just as an example, here is an strace of a fsck.vfat
on a filesystem. For this I just left the system with 90MB free memory
before I ran this command:
2090 execve("/sbin/fsck.vfat", ["fsck.vfat", "/dev/sdb1"], [/* 20 vars
*/]) = 0
2090 brk(0) = 0x60f000
2090 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS,
-1, 0) = 0x7f093726f000
2090 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS,
-1, 0) = 0x7f093726e000
2090 access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or
directory)
2090 open("/etc/ld.so.cache", O_RDONLY) = 3
2090 fstat(3, {st_mode=S_IFREG|0644, st_size=32722, ...}) = 0
2090 mmap(NULL, 32722, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f0937266000
2090 close(3) = 0
2090 open("/lib64/libc.so.6", O_RDONLY) = 3
2090 read(3,
"\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\240\346\1\0\0\0\0\0"...,
832) = 832
2090 fstat(3, {st_mode=S_IFREG|0755, st_size=1406248, ...}) = 0
2090 mmap(NULL, 3506872, PROT_READ|PROT_EXEC,
MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f0936cfa000
2090 fadvise64(3, 0, 3506872, POSIX_FADV_WILLNEED) = 0
2090 mprotect(0x7f0936e49000, 2097152, PROT_NONE) = 0
2090 mmap(0x7f0937049000, 20480, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x14f000) = 0x7f0937049000
2090 mmap(0x7f093704e000, 17080, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f093704e000
2090 close(3) = 0
2090 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS,
-1, 0) = 0x7f0937265000
2090 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS,
-1, 0) = 0x7f0937264000
2090 arch_prctl(ARCH_SET_FS, 0x7f09372646f0) = 0
2090 open("/dev/urandom", O_RDONLY) = 3
2090 read(3, "\25\v\205\210\266\247\351\223", 8) = 8
2090 close(3) = 0
2090 mprotect(0x7f0937049000, 16384, PROT_READ) = 0
2090 mprotect(0x60b000, 4096, PROT_READ) = 0
2090 mprotect(0x7f0937270000, 4096, PROT_READ) = 0
2090 munmap(0x7f0937266000, 32722) = 0
2090 fstat(1, {st_mode=S_IFCHR|0600, st_rdev=makedev(5, 1), ...}) = 0
2090 ioctl(1, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost isig icanon
echo ...}) = 0
2090 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS,
-1, 0) = 0x7f093726d000
2090 write(1, "dosfsck 2.11, 12 Mar 2005, FAT32"..., 38) = 38
2090 open("/dev/sdb1", O_RDONLY) = 3
2090 fstat(3, {st_mode=S_IFBLK|0660, st_rdev=makedev(8, 17), ...}) = 0
2090 lseek(3, 0, SEEK_SET) = 0
2090 read(3, "\353X\220mkdosfs\0\0\2
\0\2\0\0\0\0\370\0\0?\0\377\0\0\0\0\0"..., 512) = 512
2090 lseek(3, 160039240192, SEEK_SET) = 160039240192
2090 brk(0) = 0x60f000
2090 brk(0x630000) = 0x630000
2090 read(3, "\353R\220NTFS
\0\2\10\0\0\0\0\0\0\0\370\0\0?\0\377\0?\0\0\0"..., 512) = 512
2090 lseek(3, 3072, SEEK_SET) = 3072
2090 read(3, "\353X\220mkdosfs\0\0\2
\0\2\0\0\0\0\370\0\0?\0\377\0\0\0\0\0"..., 512) = 512
2090 lseek(3, 512, SEEK_SET) = 512
2090 read(3,
"RRaA\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 512)
= 512
2090 mmap(NULL, 39055360, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f09347bb000
2090 lseek(3, 16384, SEEK_SET) = 16384
2090 read(3,
"\370\377\377\17\377\377\377\17\370\377\377\17\377\377\377\17\211\4\0\0\0\0\0\0\0\0\0\0\0\0\0\0"...,
39053012) = 39053012
2090 mmap(NULL, 39055360, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f093227c000
2090 lseek(3, 39069696, SEEK_SET) = 39069696
2090 read(3,