Messages in this thread | | | From | Mark-PK Tsai (蔡沛剛) <> | Subject | Re: [PATCH] zsmalloc: use copy_page for full page copy | Date | Sat, 7 Oct 2023 07:45:45 +0000 |
| |
On Fri, 2023-10-06 at 20:11 +0900, Sergey Senozhatsky wrote: > > External email : Please do not click links or open attachments until > you have verified the sender or the content. > > On (23/10/06 14:02), Mark-PK Tsai wrote: > > Some architectures have implemented optimized > > copy_page for full page copying, such as arm. > > > > On my arm platform, use the copy_page helper > > for single page copying is about 10 percent faster > > than memcpy. > > > > Signed-off-by: Mark-PK Tsai <mark-pk.tsai@mediatek.com> > > TIL > > I've never heard of arm's copy_page() before. Is it really much > faster than memcpy()?
Based on my earlier tests, it seems better than memcpy for full page copying. The test code is just measures the copying time with irq disabled.
> > Reviewed-by: Sergey Senozhatsky <senozhatsky@chromium.org> > > > > diff --git a/mm/zsmalloc.c b/mm/zsmalloc.c > > index c743ce7a5f49..b1c0dad7f4cf 100644 > > --- a/mm/zsmalloc.c > > +++ b/mm/zsmalloc.c > > @@ -1839,7 +1839,7 @@ static int zs_page_migrate(struct page > *newpage, struct page *page, > > * Here, any user cannot access all objects in the zspage so let's > move. > > */ > > d_addr = kmap_atomic(newpage); > > -memcpy(d_addr, s_addr, PAGE_SIZE); > > +copy_page(d_addr, s_addr); > > I guess you can also look into patching zram_drv.c, which seem to > have > at least one PAGE_SIZE memcpy().
Thank. I've just post another patch for zram_drv.c as below link.
https://lore.kernel.org/lkml/20231007070554.8657-1-mark-pk.tsai@mediatek.com/
| |