Messages in this thread Patch in this message | | | Date | Mon, 12 Jul 2004 23:14:06 -0700 | From | Andrew Morton <> | Subject | Re: Preempt Threshold Measurements |
| |
Con Kolivas <kernel@kolivas.org> wrote: > > Andrew Morton writes: > > > Con Kolivas <kernel@kolivas.org> wrote: > >> Certainly the do_munmap and exit_mmap seem to be repeat offenders on my > >> machine too (more the latter in my case). > >> > > > > This is a false positive. Nothing is setting need_resched(), so > > unmap_vmas() doesn't bother dropping the lock. > > Ok well excluding do_munmap and exit_mmap the ones that have shown up > (some more frequently than others) are: > > 6ms at ksoftirqd+0x6b
Dunno. There's an unresolved RCU dentry reaping problem, but that's unlikely to occur within ksoftirqd context.
> 2ms at sys_ioctl+0x47
uses lock_kernel() at the top level. Need to know the call trace to work out who the offender is. rtc-debug+amlat will tell you that, because it catches the CPU hog while it's being hoggy, rather than after it has finished.
> 2ms at b44_open
Lots of udelays() inside spin_lock_irq(). This is a "don't do that", I suspect.
> 6ms at fget+0x28
Would need to see the amlat trace.
> 2ms at write_ordered_buffers+0x37
reiserfs
> 4ms at blkdev_put+0x48
This can run under one of two depths of lock_kernel. filemap_fdatawrite() and filemap_fdatawait() both do cond_resched(), so this is odd.
Try this:
--- 25/mm/truncate.c~truncate_inode_pages-latency-fix 2004-07-12 23:12:53.871816320 -0700 +++ 25-akpm/mm/truncate.c 2004-07-12 23:13:00.993733624 -0700 @@ -155,6 +155,7 @@ void truncate_inode_pages(struct address next = start; for ( ; ; ) { + cond_resched(); if (!pagevec_lookup(&pvec, mapping, next, PAGEVEC_SIZE)) { if (next == start) break; _ > 5ms at add_wait_queue+0x21
Need to see the whole trace.
> Now which of the above are not false positives and should I try to extract > the exact locations of them?
You'll get better traces from
http://www.zip.com.au/~akpm/linux/patches/stuff/rtc-debug.patch and http://www.zip.com.au/~akpm/linux/amlat.tar.gz
Just apply rtc-debug, set CONFIG_RTC=y and run `amlat' as root while doing testing.
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |