public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* Clustering of Request in block layer
@ 2003-04-13 12:54 Nirmala S
  2003-04-13 13:12 ` Jens Axboe
  0 siblings, 1 reply; 2+ messages in thread
From: Nirmala S @ 2003-04-13 12:54 UTC (permalink / raw)
  To: linux-kernel

Hi,

As per my understanding the block layer clusters requests for all
block drivers.
Clustering -
Creating a linked list of buffer_heads using b_reqnext.

But, when I run my block driver and try to view the number of
clustered requests in my Request function, I do not find any
clustering done.

void own_request(request_queue_t *q)
{
    struct buffer_head *tmp;
    int count;
    while(1) {
        INIT_REQUEST;
        printk("<1>request %p: cmd %i sec %li (nr. %li)\n", CURRENT,
               CURRENT->cmd,
               CURRENT->sector,
               CURRENT->current_nr_sectors);
       count=0;
       for (tmp=bh; tmp; tmp=tmp->b_reqnext)
            count ++;
       printk("Count = %d\n", count);
        end_request(1); /* success */
    }
}

The above always shows 'Count = 1'. dd if=/dev/mydevice of=/dev/null.
Does this mean that no clustering is done ??

Just read a document a "http://www.usenix.org/publications/library/proceedings/usenix2000/freenix/full_papers/gopinath/gopinath_html/node14.html" 
which says "This clustering is performed only for the drivers compiled in the kernel and not for loadable modules."

Is this the reason ??

Regards,
Mala

-- 
__________________________________________________________
Sign-up for your own FREE Personalized E-mail at Mail.com
http://www.mail.com/?sr=signup


^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: Clustering of Request in block layer
  2003-04-13 12:54 Clustering of Request in block layer Nirmala S
@ 2003-04-13 13:12 ` Jens Axboe
  0 siblings, 0 replies; 2+ messages in thread
From: Jens Axboe @ 2003-04-13 13:12 UTC (permalink / raw)
  To: Nirmala S; +Cc: linux-kernel

On Sun, Apr 13 2003, Nirmala S wrote:
> Hi,
> 
> As per my understanding the block layer clusters requests for all
> block drivers.
> Clustering -
> Creating a linked list of buffer_heads using b_reqnext.
> 
> But, when I run my block driver and try to view the number of
> clustered requests in my Request function, I do not find any
> clustering done.
> 
> void own_request(request_queue_t *q)
> {
>     struct buffer_head *tmp;
>     int count;
>     while(1) {
>         INIT_REQUEST;
>         printk("<1>request %p: cmd %i sec %li (nr. %li)\n", CURRENT,
>                CURRENT->cmd,
>                CURRENT->sector,
>                CURRENT->current_nr_sectors);
>        count=0;
>        for (tmp=bh; tmp; tmp=tmp->b_reqnext)
>             count ++;
>        printk("Count = %d\n", count);
>         end_request(1); /* success */
>     }
> }
> 
> The above always shows 'Count = 1'. dd if=/dev/mydevice of=/dev/null.
> Does this mean that no clustering is done ??

try to add a bs=256k or something like that.

> Just read a document a
> "http://www.usenix.org/publications/library/proceedings/usenix2000/freenix/full_papers/gopinath/gopinath_html/node14.html"
> which says "This clustering is performed only for the drivers compiled
> in the kernel and not for loadable modules."

2.2 and newer clusters for all drivers.

-- 
Jens Axboe


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2003-04-13 13:02 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2003-04-13 12:54 Clustering of Request in block layer Nirmala S
2003-04-13 13:12 ` Jens Axboe

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox