I was more thinking about lots of wakeups in get_request_wait causing the
elevator to do much work (kupdate is single threaded so there are only a
few wakeups). With lots of threads calling ll_rw_block in parallel it may look
differently.
>
> >requests. You can check by booting with profile=2
> >and then using /usr/sbin/readprofile to get profile logs. The bad
> >routine should clearly show off.
>
> If the elevator would be the culprit you would have no-way to catch it
> with the profiler since it always runs with the irq disabled due the
> io_request_lock that have to be acquired during I/O completation irqs.
Hmm, shouldn't a lot of the profiling hit the final sti when the interrupts
are enabled again ?
>
> Anyway I'm fairly confident that the profiler will show the real culprit
> (I guess Jeff is queueing into the buffer hashtable an insane number of
> buffers and that is causing complexity troubles due too much collisions).
> If that's the case you'll see you'll see an huge number in the
> get_hash_table entry in the profiling.
>
> Also last time I checked the buffer hash was been shrunk because in 2.3.x
> the buffer cache isn't used for the data write I/O but the raw devices can
> still be used to read/write without a filesystem...
Good point. inode hash is too big, buffer hash is too small ...
-Andi
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/