Re: Perfect buffer/swapping in pre-patch-2.0.31-2 + a few changes

Dr. Werner Fink (werner@suse.de)
Thu, 17 Jul 1997 00:26:49 +0200


>
> I've been running 2.0.30 + pre-2.0.31-2 + your perfect buffer/swap patch
> and as far as I can tell it is perfect. I've got it on a 16mb system that
> runs dnews, squid, bind, gated, mrtg, and apache plus all the usual stuff
> and it works really well. With your previous patch it was paging/swaping
> real hard. It seems to be 100% better with your latest patch.

Nice to hear :-) ... don't forget the contribution of Pavel Krauz,
Bill Hawes, Benjamin C R LaHaise, and many usefull hints out there.

>
> I also installed it on my home machine (64mb ram) and ran a bunch of 'make
> dep; make clean; make -j zImages' last night w/o any problems at all. The
> mouse cursor got a little jerky when the load average went over 17, but
> otherwise I couldn't even tell I had the make running. Before 'make -j'
> was never able to successfully build a kernel.

Some tests remains ... one is a idle system, you need therefore a /home
partition (local or via nfs) ... a fresh rebootet system ... running xdm or
not ... just wait a few minutes to get the system really idle ... and then log
in onto the virgin home ... maybe you will see an oops (maybe in
/var/log/messages). Note that this oops also can be seen in 2.0.29 ... seems
to be a race in fs/inode.c.

Werner

PS: Some of the oops (first is 2.0.30 + pre-2.0.31-2 + changes, the others
are produced by a 2.0.29)
------
general protection: 0000
CPU: 0
EIP: 0010:[wake_up+48/456]
EFLAGS: 00010282
eax: 03abbe24 ebx: 03abbe1c ecx: 0027f5d0 edx: 6000f888
esi: bfffff03 edi: 03abbe20 ebp: 038b1e64 esp: 038b1e50
ds: 0018 es: 0018 fs: 002b gs: 002b ss: 0018
Process dircolors (pid: 376, process nr: 33, stackpage=038b1000)
Stack: 03abbe1c 00000078 037c2414 03f7d2a8 03abbe20 0027f5d0 04824275 03abbe24
04824048 03abbe1c 03f7d1f8 03f7d1f8 03876b80 0027f5d0 00001400 00000001
00000000 001b4b6c 039ac058 039ac058 03644000 00001000 038aab18 00000002
Call Trace: [<04824275>] [<04824048>] [generic_file_read+1038/1516] [generic_file_read+1251/1516] [<04823adc>] [sys_read+154/192] [system_call+256/320]
Code: 8b 0e 8b 76 04 85 c9 0f 84 48 01 00 00 8b 01 83 f8 02 74 0b
------
general protection: 0000
CPU: 0
EIP: 0010:[<00111499>]
EFLAGS: 00010286
eax: 00fefe28 ebx: c0003739 ecx: 00fefe28 edx: f000ef6f
esi: 00fefe20 edi: 00fefe24 ebp: 00b50e60 esp: 00b50e54
ds: 0018 es: 0018 fs: 002b gs: 002b ss: 0018
Process dircolors (pid: 380, process nr: 30, stackpage=00b50000)
Stack: 00000084 00fefe20 00228530 00228530 0016ea1d 00fefe28 0016e805 00fefe20
00b054ec 00b054ec 017eaec0 00228530 00b38018 00002400 01019958 00000077
001e9938 01986998 00000000 00b7c000 00000003 00b50eb8 01019b18 019869e8
Call Trace: [<0016ea1d>] [<0016e805>] [<0011c206>] [<0011c2da>] [<0016e320>] [<00121d2a>] [<0010a5c5>]
Code: 8b 02 83 f8 02 74 07 8b 02 83 f8 01 75 5f 9c 5e fa c7 02 00
Using `/System.old' to map addresses to symbols.

>>EIP: 111499 <wake_up+3d/e4>
Trace: 16ea1d <nfs_link+2d/d4>
Trace: 16e805 <nfs_sillyrename+109/124>
Trace: 11c206 <update_vm_cache+be/f4>
Trace: 11c2da <try_to_read_ahead+9e/100>
Trace: 16e320 <nfs_create+68/160>
Trace: 121d2a <sys_fchown+ca/16c>
Trace: 10a5c5 <ret_from_sys_call+15/90>

Code: 111499 <wake_up+3d/e4> movl (%edx),%eax
Code: 11149b <wake_up+3f/e4> cmpl $0x2,%eax
Code: 11149e <wake_up+42/e4> je 1114a7 <wake_up+4b/e4>
Code: 1114a0 <wake_up+44/e4> movl (%edx),%eax
Code: 1114a2 <wake_up+46/e4> cmpl $0x1,%eax
Code: 1114a5 <wake_up+49/e4> jne 111506 <wake_up+aa/e4>
Code: 1114a7 <wake_up+4b/e4> pushf
Code: 1114a8 <wake_up+4c/e4> popl %esi
Code: 1114a9 <wake_up+4d/e4> cli
Code: 1114aa <wake_up+4e/e4> movl $0x90900000,(%edx)
Code: 1114b0 <wake_up+54/e4> nop
------------
general protection: 0000
CPU: 0
EIP: 0010:[<00111490>]
EFLAGS: 00010286
eax: 00000010 ebx: f000ef6f ecx: 00000010 edx: 0000611b
esi: 00000008 edi: 0000000c ebp: 01b47e60 esp: 01b47e54
ds: 0018 es: 0018 fs: 002b gs: 002b ss: 0018
Process xsetroot (pid: 381, process nr: 29, stackpage=01b47000)
Stack: 00000084 00000008 002540c0 002540c0 0016ea1d 00000010 0016e805 00000008
03c799d8 03c799d8 017ea540 002540c0 00b64018 00002400 01019918 00000077
001e9938 01986918 00000001 018f0000 00000005 01b47ec0 015c98d8 01986968
Call Trace: [<0016ea1d>] [<0016e805>] [<0011c206>] [<0011c2da>] [<0016e320>] [<00121d2a>] [<0010a5c5>]
Code: 8b 13 8b 5b 04 85 d2 74 6d 8b 02 83 f8 02 74 07 8b 02 83 f8
Using `/System.old' to map addresses to symbols.

>>EIP: 111490 <wake_up+34/e4>
Trace: 16ea1d <nfs_link+2d/d4>
Trace: 16e805 <nfs_sillyrename+109/124>
Trace: 11c206 <update_vm_cache+be/f4>
Trace: 11c2da <try_to_read_ahead+9e/100>
Trace: 16e320 <nfs_create+68/160>
Trace: 121d2a <sys_fchown+ca/16c>
Trace: 10a5c5 <ret_from_sys_call+15/90>

Code: 111490 <wake_up+34/e4> movl (%ebx),%edx
Code: 111492 <wake_up+36/e4> movl 0x4(%ebx),%ebx
Code: 111495 <wake_up+39/e4> testl %edx,%edx
Code: 111497 <wake_up+3b/e4> je 111506 <wake_up+aa/e4>
Code: 111499 <wake_up+3d/e4> movl (%edx),%eax
Code: 11149b <wake_up+3f/e4> cmpl $0x2,%eax
Code: 11149e <wake_up+42/e4> je 1114a7 <wake_up+4b/e4>
Code: 1114a0 <wake_up+44/e4> movl (%edx),%eax
Code: 1114a2 <wake_up+46/e4> cmpl $0x0,%eax
Code: 1114a5 <wake_up+49/e4> nop
Code: 1114a6 <wake_up+4a/e4> nop
Code: 1114a7 <wake_up+4b/e4> nop
------
general protection: 0000
CPU: 0
EIP: 0010:[<00000003>]
EFLAGS: 00010296
eax: 03fffeca ebx: 00000000 ecx: 00feff20 edx: 03faaf20
esi: 00000008 edi: 00000000 ebp: 00000000 esp: 00feff44
ds: 0018 es: 0018 fs: 002b gs: 002b ss: 0018
Process mingetty (pid: 272, process nr: 12, stackpage=00fef000)
Stack: 00001400 0016e550 001e9938 00b054ec 00228530 003200df 00000032 00000000
00000036 00000191 000003ea ffffffff 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
Call Trace: [<0016e550>]
Code: 00 6f ef 00 f0 c3 e2 00 f0 6f ef 00 f0 6f ef 00 f0 44 78 88
wait_queue is bad (eip = 00181d40)
q = 01ca4934
*q = 00feff68
Using `/System.old' to map addresses to symbols.

Trace: 16e550 <nfs_mkdir>

Code: addb %ch,0xffffffef(%edi)
Code: addb %dh,%al
Code: ret
Code: loop 00000008 <_EIP+8>
Code: lock outsl %ds:(%esi),(%dx)
Code: outl %eax,(%dx)
Code: addb %dh,%al
Code: outsl %ds:(%esi),(%dx)
Code: outl %eax,(%dx)
Code: addb %dh,%al
Code: incl %esp
Code: js ffffff9c <_EIP+ffffff9c>
Code:
-------
general protection: 0000
CPU: 0
EIP: 0010:[<0016e984>]
EFLAGS: 00010286
eax: 001e9938 ebx: f000e2c3 ecx: 00000000 edx: 0016e704
esi: 001e9938 edi: 00000000 ebp: 0025e3dc esp: 01206e60
ds: 0018 es: 0018 fs: 002b gs: 002b ss: 0018
Process tcsh (pid: 476, process nr: 15, stackpage=01206000)
Stack: ffffffff 03ba66e4 00000000 0016e770 001e9938 03ba66e4 03ba66e4 017ea500
0025e3dc 00a44018 00002400 00011dd8 00000077 001e9938 00ffe498 00000001
01c13000 00000003 01206eb8 00011f98 00ffe4e8 01981dec 00011db0 00000246
Call Trace: [<0016e770>] [<0011c206>] [<0011c2da>] [<0016e320>] [<00121d2a>] [<0010a5c5>]
Code: 8b 03 a3 08 ad 1c 00 8d 43 0c 89 c1 ba 47 00 00 00 31 ff 89
Using `/System.old' to map addresses to symbols.

>>EIP: 16e984 <nfs_symlink+70/dc>
Trace: 16e770 <nfs_sillyrename+74/124>
Trace: 11c206 <update_vm_cache+be/f4>
Trace: 11c2da <try_to_read_ahead+9e/100>
Trace: 16e320 <nfs_create+68/160>
Trace: 121d2a <sys_fchown+ca/16c>
Trace: 10a5c5 <ret_from_sys_call+15/90>

Code: 16e984 <nfs_symlink+70/dc> movl (%ebx),%eax
Code: 16e986 <nfs_symlink+72/dc> movl %eax,0x1cad08
Code: 16e98b <nfs_symlink+77/dc> leal 0xc(%ebx),%eax
Code: 16e98e <nfs_symlink+7a/dc> movl %eax,%ecx
Code: 16e990 <nfs_symlink+7c/dc> movl $0x47,%edx
Code: 16e995 <nfs_symlink+81/dc> xorl %edi,%edi
Code: 16e997 <nfs_symlink+83/dc> movl %eax,(%eax)
Code: 16e999 <nfs_symlink+85/dc> nop
Code: 16e99a <nfs_symlink+86/dc> nop
Code: 16e99b <nfs_symlink+87/dc> nop
------
general protection: 0000
CPU: 0
EIP: 0010:[<00111499>]
EFLAGS: 00010286
eax: 00fefe28 ebx: c0003739 ecx: 00fefe28 edx: f000ef6f
esi: 00fefe20 edi: 00fefe24 ebp: 00b50e60 esp: 00b50e54
ds: 0018 es: 0018 fs: 002b gs: 002b ss: 0018
Process dircolors (pid: 380, process nr: 30, stackpage=00b50000)
Stack: 00000084 00fefe20 00228530 00228530 0016ea1d 00fefe28 0016e805 00fefe20
00b054ec 00b054ec 017eaec0 00228530 00b38018 00002400 01019958 00000077
001e9938 01986998 00000000 00b7c000 00000003 00b50eb8 01019b18 019869e8
Call Trace: [<0016ea1d>] [<0016e805>] [<0011c206>] [<0011c2da>] [<0016e320>] [<00121d2a>] [<0010a5c5>]
Code: 8b 02 83 f8 02 74 07 8b 02 83 f8 01 75 5f 9c 5e fa c7 02 00
Using `/System.map' to map addresses to symbols.

>>EIP: 111499 <wake_up+35/e4>
Trace: 16ea1d <nfsiod_enqueue+d/18>
Trace: 16e805 <nfs_readpage+101/268>
Trace: 11c206 <generic_file_read+40e/5b4>
Trace: 11c2da <generic_file_read+4e2/5b4>
Trace: 16e320 <nfs_file_read+a4/b0>
Trace: 121d2a <sys_read+8a/b0>
Trace: 10a5c5 <system_call+55/80>

Code: 111499 <wake_up+35/e4> movl (%edx),%eax
Code: 11149b <wake_up+37/e4> cmpl $0x2,%eax
Code: 11149e <wake_up+3a/e4> je 1114a7 <wake_up+43/e4>
Code: 1114a0 <wake_up+3c/e4> movl (%edx),%eax
Code: 1114a2 <wake_up+3e/e4> cmpl $0x1,%eax
Code: 1114a5 <wake_up+41/e4> jne 111506 <wake_up+a2/e4>
Code: 1114a7 <wake_up+43/e4> pushf
Code: 1114a8 <wake_up+44/e4> popl %esi
Code: 1114a9 <wake_up+45/e4> cli
Code: 1114aa <wake_up+46/e4> movl $0x90900000,(%edx)
Code: 1114b0 <wake_up+4c/e4> nop
--------
general protection: 0000
CPU: 0
EIP: 0010:[<00111490>]
EFLAGS: 00010286
eax: 00000010 ebx: f000ef6f ecx: 00000010 edx: 0000611b
esi: 00000008 edi: 0000000c ebp: 01b47e60 esp: 01b47e54
ds: 0018 es: 0018 fs: 002b gs: 002b ss: 0018
Process xsetroot (pid: 381, process nr: 29, stackpage=01b47000)
Stack: 00000084 00000008 002540c0 002540c0 0016ea1d 00000010 0016e805 00000008
03c799d8 03c799d8 017ea540 002540c0 00b64018 00002400 01019918 00000077
001e9938 01986918 00000001 018f0000 00000005 01b47ec0 015c98d8 01986968
Call Trace: [<0016ea1d>] [<0016e805>] [<0011c206>] [<0011c2da>] [<0016e320>] [<00121d2a>] [<0010a5c5>]
Code: 8b 13 8b 5b 04 85 d2 74 6d 8b 02 83 f8 02 74 07 8b 02 83 f8
Using `/System.map' to map addresses to symbols.

>>EIP: 111490 <wake_up+2c/e4>
Trace: 16ea1d <nfsiod_enqueue+d/18>
Trace: 16e805 <nfs_readpage+101/268>
Trace: 11c206 <generic_file_read+40e/5b4>
Trace: 11c2da <generic_file_read+4e2/5b4>
Trace: 16e320 <nfs_file_read+a4/b0>
Trace: 121d2a <sys_read+8a/b0>
Trace: 10a5c5 <system_call+55/80>

Code: 111490 <wake_up+2c/e4> movl (%ebx),%edx
Code: 111492 <wake_up+2e/e4> movl 0x4(%ebx),%ebx
Code: 111495 <wake_up+31/e4> testl %edx,%edx
Code: 111497 <wake_up+33/e4> je 111506 <wake_up+a2/e4>
Code: 111499 <wake_up+35/e4> movl (%edx),%eax
Code: 11149b <wake_up+37/e4> cmpl $0x2,%eax
Code: 11149e <wake_up+3a/e4> je 1114a7 <wake_up+43/e4>
Code: 1114a0 <wake_up+3c/e4> movl (%edx),%eax
Code: 1114a2 <wake_up+3e/e4> cmpl $0x0,%eax
Code: 1114a5 <wake_up+41/e4> nop
Code: 1114a6 <wake_up+42/e4> nop
Code: 1114a7 <wake_up+43/e4> nop