Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1382245
| From | Minchan Kim <minchan@kernel.org> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | Re: [PATCH v3 08/16] zsmalloc: squeeze freelist into page->mapping |
| Date | 2016-04-19 09:50 +0200 |
| Message-ID | <rpyA3-3dt-35@gated-at.bofh.it> (permalink) |
| References | <riiA1-1Vf-3@gated-at.bofh.it> <riiA2-1Vf-27@gated-at.bofh.it> <roWl4-5ZA-15@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
On Mon, Apr 18, 2016 at 12:56:21AM +0900, Sergey Senozhatsky wrote:
> Hello,
>
> On (03/30/16 16:12), Minchan Kim wrote:
> [..]
> > +static void objidx_to_page_and_offset(struct size_class *class,
> > + struct page *first_page,
> > + unsigned long obj_idx,
> > + struct page **obj_page,
> > + unsigned long *offset_in_page)
> > {
> > - unsigned long obj;
> > + int i;
> > + unsigned long offset;
> > + struct page *cursor;
> > + int nr_page;
> >
> > - if (!page) {
> > - VM_BUG_ON(obj_idx);
> > - return NULL;
> > - }
> > + offset = obj_idx * class->size;
>
> so we already know the `offset' before we call objidx_to_page_and_offset(),
> thus we can drop `struct size_class *class' and `obj_idx', and pass
> `long obj_offset' (which is `obj_idx * class->size') instead, right?
>
> we also _may be_ can return `cursor' from the function.
>
> static struct page *objidx_to_page_and_offset(struct page *first_page,
> unsigned long obj_offset,
> unsigned long *offset_in_page);
>
> this can save ~20 instructions, which is not so terrible for a hot path
> like obj_malloc(). what do you think?
>
> well, seems that `unsigned long *offset_in_page' can be calculated
> outside of this function too, it's basically
>
> *offset_in_page = (obj_idx * class->size) & ~PAGE_MASK;
>
> so we don't need to supply it to this function, nor modify it there.
> which can save ~40 instructions on my system. does this sound silly?
Sound smart. :)
At least, we will use it in hot path.
Thanks!
Back to linux.kernel | Previous | Next — Previous in thread | Find similar | Unroll thread
Re: [PATCH v3 08/16] zsmalloc: squeeze freelist into page->mapping Sergey Senozhatsky <sergey.senozhatsky@gmail.com> - 2016-04-17 17:00 +0200 Re: [PATCH v3 08/16] zsmalloc: squeeze freelist into page->mapping Minchan Kim <minchan@kernel.org> - 2016-04-19 09:50 +0200
csiph-web