From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id F055CC4332F for ; Thu, 15 Dec 2022 17:14:30 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 2DA7A8E0003; Thu, 15 Dec 2022 12:14:30 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 289968E0002; Thu, 15 Dec 2022 12:14:30 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 178F58E0003; Thu, 15 Dec 2022 12:14:30 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 0947B8E0002 for ; Thu, 15 Dec 2022 12:14:30 -0500 (EST) Received: from smtpin05.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id C3E4580621 for ; Thu, 15 Dec 2022 17:14:29 +0000 (UTC) X-FDA: 80245189458.05.187370B Received: from mail-wm1-f48.google.com (mail-wm1-f48.google.com [209.85.128.48]) by imf24.hostedemail.com (Postfix) with ESMTP id 38659180016 for ; Thu, 15 Dec 2022 17:14:27 +0000 (UTC) Authentication-Results: imf24.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b="IP/1mIh6"; spf=pass (imf24.hostedemail.com: domain of nphamcs@gmail.com designates 209.85.128.48 as permitted sender) smtp.mailfrom=nphamcs@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1671124468; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=IMdxcuxIClBifPQw6g3nMP6O5X2GcDvGLJDe+9TDwNo=; b=ttW3E4ZzzfOpO7KbyJ0Q8PnbZTGzE4V0d09hw7PEkYhqQkO1P8d1r4GzgCi1qb6dZJWSPe WuNB3A8d7gCZlM54Xt9FFkN+YgXj+KAH77hVDnVPwGpoj5KAze+8hCEOj9g7RdWSuHAIgR D+YVusMLnxgJpr3KEiMag4yiXb72YJI= ARC-Authentication-Results: i=1; imf24.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b="IP/1mIh6"; spf=pass (imf24.hostedemail.com: domain of nphamcs@gmail.com designates 209.85.128.48 as permitted sender) smtp.mailfrom=nphamcs@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1671124468; a=rsa-sha256; cv=none; b=yg6lwTfyRaI1TtYEh5I+ldLf9xCxLaejbfjHjfVN2gecLMU782kuDR326gCsqxjaMCn9vy iIJ+Jr93ndVVc4Y7SziPDpydliRd2krfyOEYVk+Hm/Ffc7UH0L9hp3iN1VMhKOHgnp/YS9 y5iMg7QgZPma0qdBPFM8UrZ2RWjjQ4Y= Received: by mail-wm1-f48.google.com with SMTP id m19so14310230wms.5 for ; Thu, 15 Dec 2022 09:14:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=IMdxcuxIClBifPQw6g3nMP6O5X2GcDvGLJDe+9TDwNo=; b=IP/1mIh6qW3R69MA9Alu/oF7xteHc7Y810FIdRwt9ZirZkqIPCCJJClrVhKqfYFbfL pgEqdUd2o5o7Mk/ATfCgr4PmwecShSXs0mWzsIoH+H9G/0rG3fCAXMLQ94MWxPKAXbXz t4cRctquFaYRXHwdbCL8JvLGZjnwEF5cnDKuL5c5gRZ53L5jZyOiMD8vtGFfg5+ENi7U C9KyOMMhOtKOtEI34QnSK0Ee4JgEoyEZZ4yZ5iYtVB8ZvhJuNBQmq9OYO7i3dIchtPzd osrZax5U+9kBKMBQ1wZrYR1lBXxeYKIf6lMo/11/Qi4YjyF1laL2pQbjz/Ort0VkbX/i 9L8A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=IMdxcuxIClBifPQw6g3nMP6O5X2GcDvGLJDe+9TDwNo=; b=P9ndeiNAHjPIv3y0fkfSY9/tfuDOxhEHS3mFuuKoQ5e55sEPw9W5ah34NywizUYfDx /MjB9o/ISXzJjApn1ZKY3uYsMOghDR/0mMkuwzPt3Irj5JWf48qEly2q0MKEwjkslru9 P+htIXDTQxDFhbeWv0pVa+2Sn1xce0gfom6VGWqzoUMNgCWVhDgnbuhDZvpIQNhJkClT 8Tm7INus14yui8s6/pymS86eZUA/v2dxNoCOrGjYSdz7REn9pYfk0ziJa5m1fgoDFn+H lHGRa5yfLij9Whl0hPIr56PhJZKxerNH40iMVbafjKEgCsBB/aQZkhcmw8/jGayNlxCv QpMA== X-Gm-Message-State: ANoB5pmp5Z3i/TnE8HrD2id+eB9uiddg6SAw+1dMFh+wSGwgURGfyIfw m/yRcZHHFs3QBCVmZKenmYK71yzdg4sAPDbi8WM= X-Google-Smtp-Source: AA0mqf7Bgt3Fsu4F2pC7NIMqT54RKD48pfMzz2Ir5W1n86irf6a4sppUgOfY+jvVT49ggxRajXQGyp/DeAd/jncI8Gw= X-Received: by 2002:a05:600c:1e20:b0:3cf:8952:2fd2 with SMTP id ay32-20020a05600c1e2000b003cf89522fd2mr527789wmb.9.1671124466615; Thu, 15 Dec 2022 09:14:26 -0800 (PST) MIME-Version: 1.0 References: <20221208202808.908690-1-nphamcs@gmail.com> <20221208202808.908690-4-nphamcs@gmail.com> In-Reply-To: From: Nhat Pham Date: Thu, 15 Dec 2022 09:14:15 -0800 Message-ID: Subject: Re: [PATCH v3 3/4] cachestat: implement cachestat syscall To: Matthew Wilcox Cc: akpm@linux-foundation.org, hannes@cmpxchg.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, bfoster@redhat.com, kernel-team@meta.com Content-Type: text/plain; charset="UTF-8" X-Rspamd-Queue-Id: 38659180016 X-Stat-Signature: pgw1855czidrukzr4dn58iancun7zf79 X-Rspam-User: X-Rspamd-Server: rspam08 X-HE-Tag: 1671124467-342061 X-HE-Meta: U2FsdGVkX19sYbBkP0E/6a81DdlUFIeKff5dyx4QGYLDMr39rT0sLNPafAugTPlKD4MfboqBKphn37DNySgfEm+FZqG/b3mku4Tk1Aosv9QSOXrW9JGU+CPya1Bb5UHE0urQtTFAOMvjvJyOtKkwUmTAIhnHdPgij5Hy+UUT5adZ8SKp9XcY2oNRmymfk4i8PfJ0XpFAHZtU6a2FkQqZXOdjcMUOzAw5AlBKFYLmw6TKEhQROmjh6RU0crTCsiQG/C+7TCrtJfolh+SnBZmY30onDiodYModmGaKCKnz44JXdb/WquAQdjOC58ZQGEOyERDmLkmTeDr0FlVZnVgvMTDKvLijbkFc40lW/64Oabzf+FrONqZNR6Yc27aS0QH1FWzSqT50fYQJt9jUOqIEhIEiN7i8ETCSU5aOKWF0lHs/eykbMDzgi2/cnjqEpmGJzsYp/5jkysPo6GAdfjxb8xSp6vAZqPaQreThb/29f3p8j0WOPySdaxngksPmpNAVyPD2UNoP8mgDvvdE71zOgyROR5Ug8h4c5y6gXVH9qJju+p5tJUUku9wRtv9qlDhmGNzE/XTg0dKoJpuwbGE+XS9KvId86+H6GdVT9np1Klp3LmlSDL3enw0t73Qz4+d+21aI03bFGaNXOGXVXEO2QCeU/Un5VZ+O5HUUavGOaBREs2n0BqAz9TJbeXpDYTdiyVl30iAeVsH/zmS/KnEwKD+odHy7ZAnGg1DbErVoupKXMcsm27gKsIRom1MmeQmC20+tibLM8EoMPLkpiFHV70AzPH8GEL8s/XXli4rcymt7/I1+qjUOK4/3h+hXSCBm5G1uo1hu1u4ZoRbRC3EtYsRkgHA28Ay6Si1VkGEDyfVhcY/79J6AOY+HwRtYCKSARaiYHHBNCjoPiVA/o4a2PrsV4mhKNxsSUyHPP/vUzQqCcWfINqLIOBwzYu6djNlaFT7uIFG0AgUKj9JHBFT K4oVgZPx FUDX8RMmmfVrWO7Qj0PfDUdmCtrC8jxVuo1pOsnzZudvANvg= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On Mon, Dec 12, 2022 at 7:48 AM Matthew Wilcox wrote: > > On Thu, Dec 08, 2022 at 12:28:07PM -0800, Nhat Pham wrote: > > + struct address_space *mapping = f.file->f_mapping; > > + pgoff_t first_index = off >> PAGE_SHIFT; > > + pgoff_t last_index = > > + len == 0 ? ULONG_MAX : (off + len - 1) >> PAGE_SHIFT; > > + XA_STATE(xas, &mapping->i_pages, first_index); > > + struct folio *folio; > > + > > + rcu_read_lock(); > > + xas_for_each(&xas, folio, last_index) { > > + if (xas_retry(&xas, folio) || !folio) > > + continue; > > !folio can't be true. xas_for_each() terminates when folio is NULL. Good to know - I'll remove this in the next version. > > > + if (xa_is_value(folio)) { > > + /* page is evicted */ > > + void *shadow = (void *)folio; > > + bool workingset; /* not used */ > > + > > + cs.nr_evicted += 1; > > + > > +#ifdef CONFIG_SWAP /* implies CONFIG_MMU */ > > + if (shmem_mapping(mapping)) { > > + /* shmem file - in swap cache */ > > + swp_entry_t swp = radix_to_swp_entry(folio); > > + > > + shadow = get_shadow_from_swap_cache(swp); > > + } > > +#endif > > + if (workingset_test_recent(shadow, true, &workingset)) > > + cs.nr_recently_evicted += 1; > > + > > + continue; > > + } > > + > > + /* page is in cache */ > > + cs.nr_cache += 1; > > + > > + if (folio_test_dirty(folio)) > > + cs.nr_dirty += 1; > > + > > + if (folio_test_writeback(folio)) > > + cs.nr_writeback += 1; > > A folio may represent more than one page. That's the point of folios. > So there should be something in here which does > > unsigned long nr = folio_nr_pages(); > > and then all these '1' should be 'nr'. Yikes, that's a bug that I missed! Thanks for pointing it out. > Except that you may need to adjust nr if 'first_index' > folio->index, or > 'last_index' < folio->index + nr. Sounds good! > > You should test this with XFS, AFS or erofs to be sure you're getting > results that look right. >