lkml.org 
[lkml]   [2010]   [Oct]   [30]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH] Optimize relay_alloc_page_array() slightly by using vzalloc rather than vmalloc and memset
    * Jesper Juhl (jj@chaosbits.net) wrote:
    > Hi,
    >
    > We can optimize kernel/relay.c::relay_alloc_page_array() slightly by using
    > vzalloc. The patch makes these changes:
    >
    > - use vzalloc instead of vmalloc+memset.
    > - remove redundant local variable 'array'.
    > - declare local 'pa_size' as const.

    Hrm ? How does declaring a local variable as const helps the compiler in
    any way ?

    Moreover, is there anyone still using this code ? LTTng uses the Generic
    Ring Buffer library which completely deprecates relay.c. Perf and Ftrace
    each have their own ring buffers, without dependency on relay.c.

    BLK_DEV_IO_TRACE seems to still select RELAY. Has it completed its
    transition to either Ftrace or Perf ? Depending on Jens, moving blktrace
    relay dependency to the Generic Ring Buffer Library might be a good
    option to consider.

    Thanks,

    Mathieu

    >
    > Cuts down nicely on both source and object-code size.
    >
    >
    > Signed-off-by: Jesper Juhl <jj@chaosbits.net>
    > ---
    > Compile tested only.
    >
    > relay.c | 15 ++++-----------
    > 1 file changed, 4 insertions(+), 11 deletions(-)
    >
    > diff --git a/kernel/relay.c b/kernel/relay.c
    > index c7cf397..859ea5a 100644
    > --- a/kernel/relay.c
    > +++ b/kernel/relay.c
    > @@ -70,17 +70,10 @@ static const struct vm_operations_struct relay_file_mmap_ops = {
    > */
    > static struct page **relay_alloc_page_array(unsigned int n_pages)
    > {
    > - struct page **array;
    > - size_t pa_size = n_pages * sizeof(struct page *);
    > -
    > - if (pa_size > PAGE_SIZE) {
    > - array = vmalloc(pa_size);
    > - if (array)
    > - memset(array, 0, pa_size);
    > - } else {
    > - array = kzalloc(pa_size, GFP_KERNEL);
    > - }
    > - return array;
    > + const size_t pa_size = n_pages * sizeof(struct page *);
    > + if (pa_size > PAGE_SIZE)
    > + return vzalloc(pa_size);
    > + return kzalloc(pa_size, GFP_KERNEL);
    > }
    >
    > /*
    >
    >
    >
    > --
    > Jesper Juhl <jj@chaosbits.net> http://www.chaosbits.net/
    > Plain text mails only, please http://www.expita.com/nomime.html
    > Don't top-post http://www.catb.org/~esr/jargon/html/T/top-post.html
    >

    --
    Mathieu Desnoyers
    Operating System Efficiency R&D Consultant
    EfficiOS Inc.
    http://www.efficios.com


    \
     
     \ /
      Last update: 2010-10-30 23:55    [W:4.639 / U:0.012 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site