From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S936424AbdGTSq3 (ORCPT ); Thu, 20 Jul 2017 14:46:29 -0400 Received: from bombadil.infradead.org ([65.50.211.133]:33308 "EHLO bombadil.infradead.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S936290AbdGTSpz (ORCPT ); Thu, 20 Jul 2017 14:45:55 -0400 From: Matthew Wilcox To: linux-kernel@vger.kernel.org Cc: minchan@kernel.org, Matthew Wilcox , akpm@linuxfoundation.org, mpe@ellerman.id.au Subject: [PATCH v4 6/8] zram: Convert to using memset_l Date: Thu, 20 Jul 2017 11:45:37 -0700 Message-Id: <20170720184539.31609-7-willy@infradead.org> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170720184539.31609-1-willy@infradead.org> References: <20170720184539.31609-1-willy@infradead.org> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Matthew Wilcox zram was the motivation for creating memset_l(). Minchan Kim sees a 7% performance improvement on x86 with 100MB of non-zero deduplicatable data: perf stat -r 10 dd if=/dev/zram0 of=/dev/null vanilla: 0.232050465 seconds time elapsed ( +- 0.51% ) memset_l: 0.217219387 seconds time elapsed ( +- 0.07% ) Signed-off-by: Matthew Wilcox Tested-by: Minchan Kim --- drivers/block/zram/zram_drv.c | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/drivers/block/zram/zram_drv.c b/drivers/block/zram/zram_drv.c index 856d5dc02451..2df50d82dc29 100644 --- a/drivers/block/zram/zram_drv.c +++ b/drivers/block/zram/zram_drv.c @@ -175,20 +175,11 @@ static inline void update_used_max(struct zram *zram, } while (old_max != cur_max); } -static inline void zram_fill_page(char *ptr, unsigned long len, +static inline void zram_fill_page(void *ptr, unsigned long len, unsigned long value) { - int i; - unsigned long *page = (unsigned long *)ptr; - WARN_ON_ONCE(!IS_ALIGNED(len, sizeof(unsigned long))); - - if (likely(value == 0)) { - memset(ptr, 0, len); - } else { - for (i = 0; i < len / sizeof(*page); i++) - page[i] = value; - } + memset_l(ptr, value, len / sizeof(unsigned long)); } static bool page_same_filled(void *ptr, unsigned long *element) -- 2.13.2