Low latency for recent kernels
2.4.18-pre3 with 2.4.17-low-latency.patch worked fine on this system 2.4.18-pre6 with 2.4.18-pre6-low-latency.patch panics at boot time. 2.4.18-pre6 is fine also.
System has reiserfs root filesystem. No modules. /usr/src/linux/System.map was the System.map for 2.4.18pre6ll for the ksymoops below.
No modules in ksyms, skipping objects
No ksyms, skipping lsmod
Kernel panic: can't allocate root vfsmount <1>Unable to handle kernel NULL pointer dereference at virtual address 0000002c c01234d3 *pde = 00000000 Oops: 0000 CPU: 0 EIP: 0010:[<c01234d3>] Not tainted
Using defaults from ksymoops -t elf32-i386 -a i386
EFLAGS: 00010046
eax: 00000000 ebx: 00000008 ecx: 00000000 edx: 00000073
esi: 00000000 edi: 00000018 ebp: 00000020 esp: c0215e78
ds: 0018 es: 0018 ss: 0018
Process . (pid: -1072541344, stackpage=c0215000)
Stack: 00000018 00000001 00000018 c0214568 c0117e6c 00000000 00000020 c0214000
00000018 00000018 00000000 c0117f4c 00000018 00000001 c0214568 00000086
00000018 c0214000 c0117ff4 00000018 00000001 c0214000 01ebb409 c0214000
Call Trace: [<c0117e6c>] [<c0117f4c>] [<c0117ff4>] [<c0118253>] [<c0117208>]
[<c0117291>] [<c011759f>] [<c010a889>] [<c0107d1c>] [<c0107e82>] [<c0105000>]
[<c0109c18>] [<c0105000>] [<c0112020>]
Code: f6 46 2c 01 74 02 0f 0b 9c 5f fa 8b 4e 08 39 d9 75 22 8b 4eQuoted 1 line
Quoted 1 line
EIP;
c01234d2<kmem_cache_alloc+2a/b8> <=====
Trace; c0117e6c <send_signal+2c/f0>
Trace; c0117f4c <deliver_signal+1c/50>
Trace; c0117ff4 <send_sig_info+74/88>
Trace; c0118252 <send_sig+1a/20>
Trace; c0117208 <update_one_process+68/d4>
Trace; c0117290 <update_process_times+1c/88>
Trace; c011759e <do_timer+22/70>
Trace; c010a888 <timer_interrupt+60/10c>
Trace; c0107d1c <handle_IRQ_event+30/5c>
Trace; c0107e82 <do_IRQ+6a/a8>
Trace; c0105000 <_stext+0/0>
Trace; c0109c18 <call_do_IRQ+6/e>
Trace; c0105000 <_stext+0/0>
Trace; c0112020 <panic+c0/d0>
Code; c01234d2 <kmem_cache_alloc+2a/b8>
00000000 <_EIP>:
Code; c01234d2 <kmem_cache_alloc+2a/b8> <=====
0: f6 46 2c 01 testb $0x1,0x2c(%esi) <=====
Code; c01234d6 <kmem_cache_alloc+2e/b8>
4: 74 02 je 8 <_EIP+0x8> c01234da <kmem_cache_alloc+32/b8>
Code; c01234d8 <kmem_cache_alloc+30/b8>
6: 0f 0b ud2a
Code; c01234da <kmem_cache_alloc+32/b8>
8: 9c pushf
Code; c01234da <kmem_cache_alloc+32/b8>
9: 5f pop %edi
Code; c01234dc <kmem_cache_alloc+34/b8>
a: fa cli
Code; c01234dc <kmem_cache_alloc+34/b8>
b: 8b 4e 08 mov 0x8(%esi),%ecx
Code; c01234e0 <kmem_cache_alloc+38/b8>
e: 39 d9 cmp %ebx,%ecx
Code; c01234e2 <kmem_cache_alloc+3a/b8>
10: 75 22 jne 34 <_EIP+0x34> c0123506 <kmem_cache_alloc+5e/b8>
Code; c01234e4 <kmem_cache_alloc+3c/b8>
12: 8b 4e 00 mov 0x0(%esi),%ecx
<0>Kernel panic: Aiee, killing interrupt handler!
Signature · 1 line
Randy Hron
Ditto here -
2.4.18-pre6 + previous low latency patch boots & runs -
2.4.18-pre6 + latest low latency panics after this line:
Mount-cache hash table entries: 8192 (order: 4, 65536 bytes)
(next line would have been "Buffer-cache hash table entries...")
Here is the oops (be advised, it's copied by hand)
Kernel panic: can't allocate root vfsmount <1>Unable to handle kernel NULL pointer dereference at virtual address 00000000c011a830 *pde = 00000000 Oops: 0000 CPU: 0 EIP: 0010:[<c011a830>] Not tainted
Using defaults from ksymoops -t elf32-i386 -a i386
EFLAGS: 00010207
eax: 000001f3 ebx: 00000001 ecx: 00000000 edx: 00000000
esi: 00000000 edi: c02425a0 ebp: c020bf10 esp: c020bf10
ds: 0018 es: 0018 ss: 0018
Process (pid: -1072520631, stackpage=c020b000)
Stack: c020bf28 c011a8aa c020bf38 c024a5c0 00000000 c02425a0 c020bf30 c01178dd
c020bf48 c01177ef 00000000 00000000 c02425c0 fffffff6 c020bf64
c01175db
c02425c0 00000046 c020bf84 00000000 c0240900 c020bf7c c01082ac
c01f9bc8
Call Trace: [<c011a8aa>] [<c01178dd>] [<c01177ef>] [<c01175db>] [<c01082ac>]
[<c0105000>] [<c0105000>] [<c0110018>] [<c0113382>]
Code: 8b 02 85 c0 74 07 8b 02 83 e0 02 74 06 81 c1 c0 08 00 00 8bQuoted 1 line
Quoted 1 line
EIP;
c011a830<count_active_tasks+20/50> <=====
Trace; c011a8aa <timer_bh+4a/270>
Trace; c01178dd <bh_action+1d/50>
Trace; c01177ef <tasklet_hi_action+4f/70>
Trace; c01175db <do_softirq+5b/b0>
Trace; c01082ac <do_IRQ+ac/c0>
Trace; c0105000 <_stext+0/0>
Trace; c0105000 <_stext+0/0>
Trace; c0110018 <do_page_fault+28/555>
Trace; c0113382 <panic+e2/f0>
Code; c011a830 <count_active_tasks+20/50>
00000000 <_EIP>:
Code; c011a830 <count_active_tasks+20/50> <===== 0: 8b 02 mov (%edx),%eax <===== Code; c011a832 <count_active_tasks+22/50> 2: 85 c0 test %eax,%eax Code; c011a834 <count_active_tasks+24/50> 4: 74 07 je d <_EIP+0xd> c011a83d <count_active_tasks+2d/50> Code; c011a836 <count_active_tasks+26/50> 6: 8b 02 mov (%edx),%eax Code; c011a838 <count_active_tasks+28/50> 8: 83 e0 02 and $0x2,%eax Code; c011a83b <count_active_tasks+2b/50> b: 74 06 je 13 <_EIP+0x13> c011a843 <count_active_tasks+33/50> Code; c011a83d <count_active_tasks+2d/50> d: 81 c1 c0 08 00 00 add $0x8c0,%ecx Code; c011a843 <count_active_tasks+33/50> 13: 8b 00 mov (%eax),%eax
Kernel panic: Aiee, killing interrupt handler!
It looks like the newer version has substantial
changes in filemap.c and page_alloc.c relative
the the older version; if I had more time I'd
have looked into it further -
Best Regards,
joe
Quoted 75 lines · [email protected] wrote:
2.4.18-pre3 with 2.4.17-low-latency.patch worked fine on this system 2.4.18-pre6 with 2.4.18-pre6-low-latency.patch panics at boot time. 2.4.18-pre6 is fine also.
System has reiserfs root filesystem. No modules.
/usr/src/linux/System.mapwas the System.map for 2.4.18pre6ll for the ksymoops below.No modules in ksyms, skipping objects
No ksyms, skipping lsmodKernel panic: can't allocate root vfsmount <1>Unable to handle kernel NULL pointer dereference at virtual address 0000002c c01234d3 *pde = 00000000 Oops: 0000 CPU: 0 EIP: 0010:[<c01234d3>] Not taintedUsing defaults from ksymoops -t elf32-i386 -a i386
EFLAGS: 00010046
eax: 00000000 ebx: 00000008 ecx: 00000000 edx: 00000073
esi: 00000000 edi: 00000018 ebp: 00000020 esp:c0215e78
ds: 0018 es: 0018 ss: 0018
Process . (pid: -1072541344, stackpage=c0215000)Stack: 00000018 00000001 00000018 c0214568 c0117e6c 00000000 00000020 c0214000 00000018 00000018 00000000 c0117f4c 00000018 00000001 c0214568 00000086 00000018 c0214000 c0117ff4 00000018 00000001 c0214000 01ebb409 c0214000 Call Trace: [<c0117e6c>] [<c0117f4c>] [<c0117ff4>] [<c0118253>] [<c0117208>] [<c0117291>] [<c011759f>] [<c010a889>] [<c0107d1c>] [<c0107e82>] [<c0105000>] [<c0109c18>] [<c0105000>] [<c0112020>] Code: f6 46 2c 01 74 02 0f 0b 9c 5f fa 8b 4e 08 39 d9 75 22 8b 4eQuoted 2 lines
Quoted 2 lines
EIP;
c01234d2<kmem_cache_alloc+2a/b8> <=====Trace;
c0117e6c<send_signal+2c/f0>
Trace;c0117f4c<deliver_signal+1c/50>
Trace;c0117ff4<send_sig_info+74/88>
Trace;c0118252<send_sig+1a/20>
Trace;c0117208<update_one_process+68/d4>
Trace;c0117290<update_process_times+1c/88>
Trace;c011759e<do_timer+22/70>
Trace;c010a888<timer_interrupt+60/10c>
Trace;c0107d1c<handle_IRQ_event+30/5c>
Trace;c0107e82<do_IRQ+6a/a8>
Trace;c0105000<_stext+0/0>
Trace;c0109c18<call_do_IRQ+6/e>
Trace;c0105000<_stext+0/0>
Trace;c0112020<panic+c0/d0>
Code;c01234d2<kmem_cache_alloc+2a/b8>
00000000 <_EIP>:Code; c01234d2 <kmem_cache_alloc+2a/b8> <===== 0: f6 46 2c 01 testb $0x1,0x2c(%esi) <===== Code; c01234d6 <kmem_cache_alloc+2e/b8> 4: 74 02 je 8 <_EIP+0x8> c01234da <kmem_cache_alloc+32/b8> Code; c01234d8 <kmem_cache_alloc+30/b8> 6: 0f 0b ud2a Code; c01234da <kmem_cache_alloc+32/b8> 8: 9c pushf Code; c01234da <kmem_cache_alloc+32/b8> 9: 5f pop %edi Code; c01234dc <kmem_cache_alloc+34/b8> a: fa cli Code; c01234dc <kmem_cache_alloc+34/b8> b: 8b 4e 08 mov 0x8(%esi),%ecx Code; c01234e0 <kmem_cache_alloc+38/b8> e: 39 d9 cmp %ebx,%ecx Code; c01234e2 <kmem_cache_alloc+3a/b8> 10: 75 22 jne 34 <_EIP+0x34> c0123506 <kmem_cache_alloc+5e/b8> Code; c01234e4 <kmem_cache_alloc+3c/b8> 12: 8b 4e 00 mov 0x0(%esi),%ecx<0>Kernel panic: Aiee, killing interrupt handler!
Quoted 3 lines · J Sloan
Ditto here -
Yes, sorry about that. That patch had a completely untested, experimental and buggy chunk in it which kinda escaped from the factory.
I've uploaded a saner version.
-
Hi,
I'm sending some feedback !
:-)
I'm trying this patch... (in 2.4.18-pre6)
I'm feeling a improved performance ,as a desktop user. I'm working with KDE2, Netbeans and VMWare. Pentium III 666Mhz , 192M Ram, 10GB HD.
What are the tools to check this better performance? Or my impression is sufficient ?
Thanks
Mauricio
Quoted 15 lines · Andrew Morton
Quoted 1 line · J Sloan
Ditto here -
Yes, sorry about that. That patch had a completely untested, experimental and buggy chunk in it which kinda escaped from the factory.
I've uploaded a saner version.
(quoted diff) +0
-2- -To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Quoted 5 lines · Mauricio Nuñez
Hi,
I'm sending some feedback !
:-)
Is good. Thanks.
Quoted 4 lines
I'm trying this patch... (in 2.4.18-pre6)
I'm feeling a improved performance ,as a desktop user. I'm working with KDE2, Netbeans and VMWare. Pentium III 666Mhz , 192M Ram, 10GB HD.
I'm a little surprised that desktop users do notice significant benefits with all the latency/preempt patches. If you actually instrument the kernel's behaviour, the stalls are in fact quite small and infrequent. See the histograms in
http://www.uwsg.iu.edu/hypermail/linux/kernel/0201.0/1624.html
Probably, poor interactivity on the desktop is more due to waiting on disk reads - a combination of bad read latency in the presence of write traffic and unfortunate page replacement decisions.
Try http://www.zipworld.com.au/~akpm/linux/2.4/2.4.18-pre6/read-latency2.patch
Quoted 2 lines
What are the tools to check this better performance? Or my impression is sufficient ?
The simplest tool to use is Mark Hahn's `realfeel' app. See
http://www.zip.com.au/~akpm/linux/amlat.tar.gz
-
Quoted 4 lines · Andrew Morton
Probably, poor interactivity on the desktop is more due to waiting on disk reads - a combination of bad read latency in the presence of write traffic and unfortunate page replacement decisions.
Yep, and half-formed ideas of process scheduling. The good news is, it's all being worked on by people who know what they're doing (including, obviously, you).
--
Daniel