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 mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 05CABC433EF for ; Thu, 7 Oct 2021 04:09:26 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 760EC60F9C for ; Thu, 7 Oct 2021 04:09:25 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 760EC60F9C Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=chromium.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=kvack.org Received: by kanga.kvack.org (Postfix) id B1FA46B006C; Thu, 7 Oct 2021 00:09:24 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id ACF4B900002; Thu, 7 Oct 2021 00:09:24 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 9BE566B0073; Thu, 7 Oct 2021 00:09:24 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0162.hostedemail.com [216.40.44.162]) by kanga.kvack.org (Postfix) with ESMTP id 8C5D46B006C for ; Thu, 7 Oct 2021 00:09:24 -0400 (EDT) Received: from smtpin10.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay02.hostedemail.com (Postfix) with ESMTP id 3947A2D4D6 for ; Thu, 7 Oct 2021 04:09:24 +0000 (UTC) X-FDA: 78668311848.10.C233165 Received: from mail-il1-f173.google.com (mail-il1-f173.google.com [209.85.166.173]) by imf02.hostedemail.com (Postfix) with ESMTP id E184170027EA for ; Thu, 7 Oct 2021 04:09:23 +0000 (UTC) Received: by mail-il1-f173.google.com with SMTP id w10so4997814ilc.13 for ; Wed, 06 Oct 2021 21:09:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=FX1B2nhHCacoYtE3uwZdnHNvIrwkPxIC8ihJ5XzyDR8=; b=IIaaJSzsNAcB8si8pHflyqt/nBav7bFUByDWAWV/OVQ1Tt3XNsnkEw3YBsk5t9TvMm hfPwEeExAKnu+8gyhrGTnsx9GYTCL4Iv0ELNBjOPmsZlzg8OwQFOPv6/7pCtOgLE5emI IKf804D66dMVkcLn46mopq3S3TTux4dnJhHfs= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=FX1B2nhHCacoYtE3uwZdnHNvIrwkPxIC8ihJ5XzyDR8=; b=j68oO7D6a+oGVba+ODsT8leYNQjuHEv1wRNu3n6gELhIhazYp8R+xPxtM4xPDFMmWq aP1U/DQbmM+XQlGOIVcgux8yqQ9CIxI0Jzk2CS5BrSoMMf5BHkjZEQNbGi7LwiApWpwe lZE045ARldTzrQr/bXHXUx80cvgmyNKEiIaWrmuu1dqniwqzbhF1hpanucAcaNShmuR6 oJZ78paDJ+di04MiXJiHnrQIfjFYU9YC3PMw9+4JjT6YYX30vcHp2R9lR+AxxqEXYcuh rqTJ+VhON4f98be+z1vujSeaY2RYWRzpLJFnwFff+9dMFlQY21DiVCdM1RMOxLNAJqQl WAzA== X-Gm-Message-State: AOAM53015dyDmwEfbpfACOe+W7JS9tR1K9qWgftD6wAvoMDEl7Uh56Tl eGzrlLTrvCbyhYZ+OELIsLwV6wxt+/w1Splqkeh0bA== X-Google-Smtp-Source: ABdhPJyIOT5yCiNQlx9MQAHDZagk5BPWDD2K6qSdnbn7UJVNCv4GqHlgm42/zNYM4PrxTfI70kiHVNQN6iwvR8B8XEc= X-Received: by 2002:a05:6e02:1aa4:: with SMTP id l4mr1435880ilv.231.1633579763158; Wed, 06 Oct 2021 21:09:23 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Hsin-Yi Wang Date: Thu, 7 Oct 2021 12:08:57 +0800 Message-ID: Subject: Re: Readahead regressed with c1f6925e1091("mm: put readahead pages in cache earlier") on multicore arm64 platforms To: Matthew Wilcox Cc: Andrew Morton , William Kucharski , Christoph Hellwig , linux-mm@kvack.org Content-Type: text/plain; charset="UTF-8" X-Rspamd-Server: rspam03 X-Rspamd-Queue-Id: E184170027EA X-Stat-Signature: bkhofaaibrg4gctf98mk76dk83hg89qs Authentication-Results: imf02.hostedemail.com; dkim=pass header.d=chromium.org header.s=google header.b=IIaaJSzs; dmarc=pass (policy=none) header.from=chromium.org; spf=pass (imf02.hostedemail.com: domain of hsinyi@chromium.org designates 209.85.166.173 as permitted sender) smtp.mailfrom=hsinyi@chromium.org X-HE-Tag: 1633579763-39213 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 Wed, Oct 6, 2021 at 9:12 PM Matthew Wilcox wrote: > > On Wed, Oct 06, 2021 at 09:07:56PM +0800, Hsin-Yi Wang wrote: > > On Wed, Oct 6, 2021 at 7:21 PM Matthew Wilcox wrote: > > > > > > On Wed, Oct 06, 2021 at 05:25:23PM +0800, Hsin-Yi Wang wrote: > > > > Hi Matthew, > > > > > > > > We tested that the performance of readahead is regressed on multicore > > > > arm64 platforms running on the 5.10 kernel. > > > > - The platform we used: 8 cores (4x a53(small), 4x a73(big)) arm64 platform > > > > - The command we used: ureadahead $FILE ($FILE is a 1MB+ pack file, > > > > note that if the file size is small, it's not obvious to see the > > > > regression) > > > > > > > > After we revert the commit c1f6925e1091("mm: put readahead pages in > > > > cache earlier"), the readahead performance is back: > > > > - time ureadahead $FILE: > > > > - 5.10: 1m23.124s > > > > - with c1f6925e1091 reverted: 0m3.323s > > > > - other LTS kernel (eg. 5.4): 0m3.066s > > > > > > > > The slowest part is aops->readpage() in read_pages() called in > > > > read_pages(ractl, &page_pool, false); (the 3rd in > > > > page_cache_ra_unbounded()) > > > > > > What filesystem are you using? > > > > > ext4, block size 4096 > > That's confusing. ext4 shouldn't hit that path; it has a ->readahead > address space operation. Sorry for the confusion, both readahead and readpage are called. The ->readpage is called by vfs: vfs_fadvise. (Full path) read_pages page_cache_ra_unbounded do_page_cache_ra force_page_cache_ra generic_fadvise vfs_fadvise ksys_readahead __arm64_compat_sys_aarch32_readahead el0_svc_common do_el0_svc_compat el0_svc_compat el0_sync_compat_handler el0_sync_compat The ->readahead is called by ext4: ext4_file_read_iter. But this part is fast. (Full path) read_pages page_cache_ra_unbounded do_page_cache_ra ondemand_readahead page_cache_sync_ra generic_file_buffered_read generic_file_read_iter ext4_file_read_iter do_iter_readv_writev do_iter_read vfs_iter_read loop_queue_work kthread_worker_fn loop_kthread_worker_fn kthread ret_from_fork