lkml.org 
[lkml]   [2004]   [Jan]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: Unneeded Code Found??


Randy Appleton wrote:

> Bill Davidsen wrote:
>
>> Randy Appleton wrote:
>>
>>> I think I have found some useless code in the Linux kernel
>>> in the block request functions.
>>>
>>>
>>> I have modified the __make_request function in ll_rw_blk.c.
>>> Now every request for a block off the hard drive is logged.
>>>
>>>
>>> The function __make_request has code to attempt to merge the current
>>> block request with some contigious existing request for better
>>> performance. This merge function keeps a one-entry cache pointing to
>>> the
>>> last block request made. An attempt is made to merge the current
>>> request with the last request, and if that is not possible then
>>> a search of the whole queue is done, looking at merger possibililites.
>>>
>>>
>>> Looking at the data from my logs, I notice that over 50% of all
>>> requests
>>> can be merged. However, a merge only ever happens between the
>>> current request and the previous one. It never happens between the
>>> current request and any other request that might be in the queue (for
>>> more than 50,000 requests examined).
>>>
>>>
>>> This is true for several test runs, including "daily usage" and doing
>>> two kernel compiles at the same time. I have only tested on a
>>> single-CPU machine.
>>>
>>>
>>> I wonder if the code (and CPU time) used to search the entire request
>>> queue is actually useful. Would this be a reasonable candidate for
>>> code
>>> elimination?
>>
>>
>>
>> If you never get a hit, it means either (a) your test load actually
>> doesn't have one, or (b) the code isn't correctly finding them.
>
>
>
> It might be buggy code on my part, but it looks pretty solid to me.
> I'd be happy to show anyone interested.
> My load ought to find such a merge, if they happen with any freqency
> at all. Compiling two kernels
> at the same time and "general running" are my two current loads. The
> disk queue gets to over 70
> entries, which is rather high for a personal workstation, and I'm
> searching tens of thousands to accesses
> in total.
>
> Does anyone know that this code is actualy useful? Has anyone ever
> seen it actually do a merge of consecutive
> data accesses for requests that were not issued themselves consequtively?
>

Yes it gets used.

I think its a lot more common with direct io and when you have lots of
processes.


-
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/

\
 
 \ /
  Last update: 2005-03-22 14:00    [W:0.066 / U:0.676 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site