[lkml]   [2004]   [Jan]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    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

    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to
    More majordomo info at
    Please read the FAQ at

     \ /
      Last update: 2005-03-22 14:00    [W:0.025 / U:12.384 seconds]
    ©2003-2017 Jasper Spaans. hosted at Digital OceanAdvertise on this site