Received: by 10.223.164.202 with SMTP id h10csp1817705wrb; Sat, 18 Nov 2017 06:52:04 -0800 (PST) X-Google-Smtp-Source: AGs4zMZyJLXJQxtciTSzbKNEvmfV3ZqLGAxRygkPnpedSy+7qJMghoPy/4S3FJlLSFZtfKn6MZPj X-Received: by 10.159.196.141 with SMTP id c13mr3869880plo.186.1511016724311; Sat, 18 Nov 2017 06:52:04 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1511016724; cv=none; d=google.com; s=arc-20160816; b=t7VhKNrPR+/S4OyHupuZSpBLTN9gdqrMcVjTO+OPBCXnpCjzxUaC/sScRr3OtZLWT8 FQbfc1jLd7Gk+/pBHbEVWT+9jnnnWFxBnh1Yq+eivP0fIzc8vdRxlcxRp2e93kJ/WkyU 3TZZ2dTXMTV1B9bPCax13ysRu1pLTRyhkgc9OKy8aO79FsB8KxIwRA+9RNhBX0e3D9ff NS2wxdzjHMdgzPUVi9/kbkQaBgdoC3pcfR2kIX1CfINN4Smt25IW/FvNEd6pBacNZxIl O7a8YIcH7IDK0PuiPwyLMF60QnWYOtizm98dQVdrFXW1wgAd+wlExdfIAtu1tDLXD/Ha EOsA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :references:in-reply-to:mime-version:dkim-signature :arc-authentication-results; bh=9gWxTnfrrtwBaY5ZXLSmowrlN1ua2v9avhdd4bQtcJk=; b=HQwrQowZdt5NmdM0/bmHvjxBIViZUf5w7XL4D/sxDm1F1pS4sQIdZeE1xXKdl7Rs4E 1GUbTO6C9jqeWxt+nZ20fd0upLD1bsSGNi+Ovpdu8BTmkch/Ar8hrkGIcp2JH8Pqymm9 ftbbM2GxR9ZcIb335fgf3GgjZy4X7L6Fl3R6zu2oQyg4e7Nz3KWF8jsFvdkAsOndZQ+z PyMGTj7gXVBSQdhTPLLU5SApIWk3QK/SACCYtwv5ggKv9LV0aFDVGHPZlS/PEQ5fT/1H DcrGaIQIolWSaWSiI49wzR2IF0fb5DS4TeuQUQ8OXA9kKZ4jV/2arQsSx7IVwMcVN8OW RRJA== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@gmail.com header.s=20161025 header.b=cCW1Lvar; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id j186si4565062pgc.455.2017.11.18.06.51.50; Sat, 18 Nov 2017 06:52:04 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=fail header.i=@gmail.com header.s=20161025 header.b=cCW1Lvar; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933268AbdKQWIG (ORCPT + 93 others); Fri, 17 Nov 2017 17:08:06 -0500 Received: from mail-io0-f169.google.com ([209.85.223.169]:36848 "EHLO mail-io0-f169.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1757636AbdKQWIA (ORCPT ); Fri, 17 Nov 2017 17:08:00 -0500 Received: by mail-io0-f169.google.com with SMTP id 79so2668607ioi.3 for ; Fri, 17 Nov 2017 14:08:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to:cc; bh=9gWxTnfrrtwBaY5ZXLSmowrlN1ua2v9avhdd4bQtcJk=; b=cCW1Lvarp+Xh9f/wZmnuB7NkNI3vUI0oOZVAkXyEL62JOJxauAzzaa8miXDquOtlOf KCowf+CdE4T01UaDwKd2Xypkq2Z1HuMK5lz9yj2JpWzGzQb06XkL9YzqtPybc4Tx1fn4 yKXyNBZtqyE2Xzq7DqCF+Yk7TLfid7Vh+tIHfX+O06b8ctHId3GgoQ74y6nSAslwbugz 30zZ1/tRpljzaUgr37jFNy4LsQwI170/lVLgsP96c4ZXqHeACjlAIscIzRZ80BL/DpH+ QYhb4vNx5dYxj3NuCK3Ipz63kjZDXcCc3OCgwjvV4EqVkPHgOoAc7Hd/wUFnOq7Biyxn 8ynA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:sender:in-reply-to:references:from :date:message-id:subject:to:cc; bh=9gWxTnfrrtwBaY5ZXLSmowrlN1ua2v9avhdd4bQtcJk=; b=YyGHszsl567eS7yLPgq0Cbsne7WmFLIwBCdSsFDxxUgbVJAtaowvO4OcT1QPLlI5Z7 7ikguGnJ0VtdjG7c+eHs/GIsG688W4XzpOhh5fOmFrHZvLBnzEpnM6gcBp5dmyu9PNo/ 8JJ48PZSERd1yP6Cc0xjcBt77XWZDdI4gDStDebb+tA6kTY93mFs13gHp4BVEco1Shh7 rla37OqoaLahZOk7x37VbrPE2XkOLIz9p+2MVNUFX7+oX1M4BFttfpIyMXX0yHSg+21t DqEZdXnVfv5Z6GE+nMv+Vi6kPw2H+5rGNHru1mv4LNIKbYQxV7wd8YP1M0JKfdH6WcMa CjWA== X-Gm-Message-State: AJaThX6yyK4BRtDXERyPKOSxLHRGWv7VtVJoEgOmcW1yJzHS0WnOogXH T4RAfH6ivvBv1OY/g1p8bUOFVXtztbcN9DMex/99jQ== X-Received: by 10.107.201.16 with SMTP id z16mr4803772iof.62.1510956479663; Fri, 17 Nov 2017 14:07:59 -0800 (PST) MIME-Version: 1.0 Received: by 10.2.152.212 with HTTP; Fri, 17 Nov 2017 14:07:19 -0800 (PST) In-Reply-To: References: <20171018104832epcms5p1b2232e2236258de3d03d1344dde9fce0@epcms5p1> From: Dan Streetman Date: Fri, 17 Nov 2017 17:07:19 -0500 X-Google-Sender-Auth: 6fatymKZX78tBq6RkTOEfbizIA4 Message-ID: Subject: Re: [PATCH] zswap: Same-filled pages handling To: Timofey Titovets Cc: Srividya Desireddy , "sjenning@redhat.com" , "linux-mm@kvack.org" , "linux-kernel@vger.kernel.org" , "penberg@kernel.org" , Dinakar Reddy Pathireddy , SHARAN ALLUR , RAJIB BASU , JUHUN KIM , "srividya.desireddy@gmail.com" Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Oct 18, 2017 at 5:31 PM, Timofey Titovets wrote: >> +static int zswap_is_page_same_filled(void *ptr, unsigned long *value) >> +{ >> + unsigned int pos; >> + unsigned long *page; >> + >> + page = (unsigned long *)ptr; >> + for (pos = 1; pos < PAGE_SIZE / sizeof(*page); pos++) { >> + if (page[pos] != page[0]) >> + return 0; >> + } >> + *value = page[0]; >> + return 1; >> +} >> + > > In theory you can speedup that check by memcmp(), > And do something like first: > memcmp(ptr, ptr + PAGE_SIZE/sizeof(*page)/2, PAGE_SIZE/2); > After compare 1/4 with 2/4 > Then 1/8 with 2/8. > And after do you check with pattern, only on first 512 bytes. > > Just because memcmp() on fresh CPU are crazy fast. > That can easy make you check less expensive. I did check this, and it is actually significantly worse; keep in mind that doing it ^ way may is a smaller loop, but is actually doing more memory comparisons. > >> +static void zswap_fill_page(void *ptr, unsigned long value) >> +{ >> + unsigned int pos; >> + unsigned long *page; >> + >> + page = (unsigned long *)ptr; >> + if (value == 0) >> + memset(page, 0, PAGE_SIZE); >> + else { >> + for (pos = 0; pos < PAGE_SIZE / sizeof(*page); pos++) >> + page[pos] = value; >> + } >> +} > > Same here, but with memcpy(). > > P.S. > I'm just too busy to make fast performance test in user space, > but my recent experience with that CPU commands, show what that make a sense: > KSM patch: https://patchwork.kernel.org/patch/9980803/ > User space tests: https://github.com/Nefelim4ag/memcmpe > PAGE_SIZE: 65536, loop count: 1966080 > memcmp: -28 time: 3216 ms, th: 40064.644611 MiB/s > memcmpe: -28, offset: 62232 time: 3588 ms, th: 35902.462390 MiB/s > memcmpe: -28, offset: 62232 time: 71 ms, th: 1792233.164286 MiB/s > > IIRC, with code like our, you must see ~2.5GiB/s > > Thanks. > -- > Have a nice day, > Timofey. From 1584415666321048535@xxx Sat Nov 18 14:48:47 +0000 2017 X-GM-THRID: 1581603008024215631 X-Gmail-Labels: Inbox,Category Forums,HistoricalUnread