Received: by 10.223.164.221 with SMTP id h29csp3221586wrb; Wed, 18 Oct 2017 14:34:11 -0700 (PDT) X-Received: by 10.98.198.77 with SMTP id m74mr10814555pfg.318.1508362451522; Wed, 18 Oct 2017 14:34:11 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1508362451; cv=none; d=google.com; s=arc-20160816; b=hg5akm4f0QQ+raB0zkGFamh3OePvltRms2ZTotzFKNhjGVS9sryYSPgNec4fMgi2OE VKRA2f/PnSnC+tG/od3+03kMY8lu/T3OIEDbGbxUheQJ5ztVX7wHAsX6sDcU6OV/mglG nxHdvJg1hdLIOLzDMWc0iO83g81rKG/WJMSyyXlyAzezDJb7Bszb3yCxSD7yiTrp5Ahr B/DSGgnrKc+9nYs/ps/NIUfZ//rX0TaX6hIeMuoUlLBhKEihF23cDER5i/kMOXxqH7zn K/6GDqrrEwvyGzD4u5/wJsH3kVnRwHZyG7FI5qRpiAXFPabo5MLlx7mpR7qcAQvfsDqd BlrA== 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=FleZuxVsluWmv78JNgdK1wDD2jwQtiAzn1IVgc0iy+4=; b=DdFVT7EmpCi7ZjVrvPkOTo2wWgpou72H7WN96Q3Et9dPQfSlVTjaDc9k5AkYSKenN3 4IFGy94QLryCoCZgoHWvPHFrVCd0nsfYNVgaAjixXbZupwVbE7RnkomMWRrqy5hO+KVR hNnGfjhUr1+JPvxZMjbGInHE7UULX+A4SM0YAE0PyC4p1V5NtkugprEoxYzCmANYljsI iR7vFGtC2UuJNdSqLSJtfMjZYvss3dwND+LrM1yKHR/sFYQ197nGVFaGHYCWQx5xzXjc kGsaUU6n5ot+oPQP+Rrsd0pPmejeKQT2QhVtYqI6naZFG/xQWfL+wmEvXjFtIFZALnQz wNkA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=U3jIgSrx; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id c25si7419063pgn.808.2017.10.18.14.33.57; Wed, 18 Oct 2017 14:34:11 -0700 (PDT) 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=pass header.i=@gmail.com header.s=20161025 header.b=U3jIgSrx; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751769AbdJRVcA (ORCPT + 99 others); Wed, 18 Oct 2017 17:32:00 -0400 Received: from mail-it0-f66.google.com ([209.85.214.66]:48730 "EHLO mail-it0-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751717AbdJRVb7 (ORCPT ); Wed, 18 Oct 2017 17:31:59 -0400 Received: by mail-it0-f66.google.com with SMTP id c3so8010353itc.3 for ; Wed, 18 Oct 2017 14:31:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=FleZuxVsluWmv78JNgdK1wDD2jwQtiAzn1IVgc0iy+4=; b=U3jIgSrxNnMP50N9T+Zqe2iO5SBubqg7KETogpQdMxXyA2CpmG3/v9WfQmlkjWI2ak ntRrDrI6UDUgP4xVJwD0fn5FWblP5bBxK0FpgFwcYhwomdO7elOfkKYLhrknD3ZmhEZa fbTFMMmHzeCJ5C9n6wOIKcP638jyIyHor3NmhkUz48bc09tZRBUq2n8MuCFbYIstCOH7 nyrz/BZnEg8qzkl3xNVIXU8mzmh8Ym7anyA/bGmqyrxah9JG/gamAxYiRlQ23oQrV3Lr JexD+SRdIMlC0H37cEWyf14JctSLkWxmIrSOshMYlFyU/yhHJysWIFu3OtgQ2xJGCvdI 0+jw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=FleZuxVsluWmv78JNgdK1wDD2jwQtiAzn1IVgc0iy+4=; b=uI6H3fdJ8T/E3hkunvFUklnYFRQm/jTYX1lg53jnU2Xm5G0izVAkRj78w+RlMuCoEy glh9rH4XZdkhSn+Ia/YwrmJq8iKtpv1rYDdue2RWpyoUWBgkRalnuNzfLAUY5D+UgaIH GzojQwWbMLtEJVSisc97EUH0OkLz0rNROOQq7a4fQhQtqrj1AAupN4GHHiSNveQHM2sa ReyOw4Pax+itTG4HBchfROLo84hJ/uHbQe2Z9uVlioLXTLfH4SCcuQp5TLNevrmi5Sha HDeZcaLhWQ6l55wJ2CBKxZPFsuPRYNC6j7RzD9wH0uKm17Y4A5yJ4ppyw+iR9pTXXpTP cTjg== X-Gm-Message-State: AMCzsaXwNwou5tCW/DH/H5xO+Tpo7xwyZJl31aIJAN3EwxxCZsdozxIp Bt136WyKPysgwPhfuRolmJ4dXljxfsxVOTijK6A= X-Google-Smtp-Source: ABhQp+SIfSxfJ7PuKPA8wAs42IqoVJnALoI30SwYUDuUFUVc6T8ivuIO19GJDW3SRC2x3NH0lbx26EYENiOTW1Ydg1o= X-Received: by 10.36.64.145 with SMTP id n139mr12143616ita.115.1508362318560; Wed, 18 Oct 2017 14:31:58 -0700 (PDT) MIME-Version: 1.0 Received: by 10.2.165.141 with HTTP; Wed, 18 Oct 2017 14:31:18 -0700 (PDT) In-Reply-To: <20171018104832epcms5p1b2232e2236258de3d03d1344dde9fce0@epcms5p1> References: <20171018104832epcms5p1b2232e2236258de3d03d1344dde9fce0@epcms5p1> From: Timofey Titovets Date: Thu, 19 Oct 2017 00:31:18 +0300 Message-ID: Subject: Re: [PATCH] zswap: Same-filled pages handling To: Srividya Desireddy Cc: "sjenning@redhat.com" , "ddstreet@ieee.org" , "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 > +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. > +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 1581629502439247329@xxx Wed Oct 18 20:43:54 +0000 2017 X-GM-THRID: 1581603008024215631 X-Gmail-Labels: Inbox,Category Forums