Received: by 2002:a05:7412:b995:b0:f9:9502:5bb8 with SMTP id it21csp2423129rdb; Mon, 25 Dec 2023 10:06:28 -0800 (PST) X-Google-Smtp-Source: AGHT+IG81EtO8zF4p6oCI2CVi1N1bMjnJzlqOOrmjaBKIevSDFCd82xiQXl9Mk6nLtb8FPqRqHJW X-Received: by 2002:a05:6870:d888:b0:204:3f59:f21c with SMTP id oe8-20020a056870d88800b002043f59f21cmr6749985oac.18.1703527587790; Mon, 25 Dec 2023 10:06:27 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1703527587; cv=none; d=google.com; s=arc-20160816; b=e8gOpALuDpq7zDDI0CNdXR0747+WuyNBTSQDZNuCDXPTLq1WCd5KKjnj86CieACcLy evQPUPiuUtjMLJL0QJgoo4FJfcAaN8Q7/JQCILXv5Z0XrerCYtzYFryRcRtYPn7v3ogm 1G+kYLz+U0jHe8APzM+MB1uhQvE7wicxBLN25nCKKDmE0dAHWqVS5UBxokx7YuAU1yMU aKQm2/b8fTRf4iG6gvQIwsQlT0Wn34ByFZkOWr/qcJc+cP1NDI9SYBIx/3D4hPOpRN/8 lFudW9wzZBvWSmwHeTMWdLLgMPVYnGX/uH6L6YDn1UYhle98IFwlprjRWtRUbG4Breus QvLg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:list-unsubscribe:list-subscribe :list-id:precedence:dkim-signature; bh=YfSdFLH0c+OXnYpo+8JLybKgdvKYAok3Q5sSWeoNCus=; fh=B5M5V2GGe7Sb3WpZ5kerAVDoaPQ0SoRoLOaj8+6Tfmw=; b=cfyazppFgx7VMSftT2m190a2GTt/lHzQGvWr9w7VhAg6wH78Ct3jOcDYYrBpAqxmYB /PDrCYYk2Kx2bNQj3t5ZmKZahgCWIYH+R5LaQ4kypP3y8oHNKYsK6NRCtOelGa4PkrYO ZINghoWCM6UUnlSRzrb/Ybk8NbRXNmqRAkVELZQwl+52p+A1OBrCQGB9EuLRbdHCv+2G QATKO3ZfGKDlrDo7wFJjA9WsI3XltaldwEcS4fteYY8dpHoN/UN2GMhasdfSFfR03fZA oXQeKQ97j54Z8nURN2jPhIrCUoJfhiA934K2syAt4VcHYwF8EVI0btn7NQ0b+qRU3F1v Q1JA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=VCwQg5S1; spf=pass (google.com: domain of linux-kernel+bounces-11138-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.48.161 as permitted sender) smtp.mailfrom="linux-kernel+bounces-11138-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from sy.mirrors.kernel.org (sy.mirrors.kernel.org. [147.75.48.161]) by mx.google.com with ESMTPS id q17-20020a631f51000000b005ce0be7966fsi3358284pgm.898.2023.12.25.10.06.27 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 25 Dec 2023 10:06:27 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-11138-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.48.161 as permitted sender) client-ip=147.75.48.161; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=VCwQg5S1; spf=pass (google.com: domain of linux-kernel+bounces-11138-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.48.161 as permitted sender) smtp.mailfrom="linux-kernel+bounces-11138-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sy.mirrors.kernel.org (Postfix) with ESMTPS id 96068B217EF for ; Mon, 25 Dec 2023 18:06:23 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 9176C537E5; Mon, 25 Dec 2023 18:06:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="VCwQg5S1" X-Original-To: linux-kernel@vger.kernel.org Received: from mail-lj1-f169.google.com (mail-lj1-f169.google.com [209.85.208.169]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 239BD52F98 for ; Mon, 25 Dec 2023 18:06:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-lj1-f169.google.com with SMTP id 38308e7fff4ca-2cc3f5e7451so40113541fa.2 for ; Mon, 25 Dec 2023 10:06:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1703527572; x=1704132372; darn=vger.kernel.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=YfSdFLH0c+OXnYpo+8JLybKgdvKYAok3Q5sSWeoNCus=; b=VCwQg5S1OgcegNAVx5wvrliv4OpH/LgP7rKuqpo1xQEwczsKKpKcxvoNpN44rTG2C4 8l1UTJFejRSvGXn+rMI2vd6BGB7U2LtwpBqjPweBJStd3hZYZj5OOS+dA5rfnGzzkOSc I+lFSorCtLzMYlYJI69MqBScj+kouUATzgz7gl1ey81CyMQM5w3c+KFvopNR5KiJ+b5v CSDXSKpm9ARio9MTOnug9CzkGNnxgQ0FmZXCfjJLZDt/0B/qq4ZysbC6GJ+6A2BLE0g3 t6XA+CBwIjg2YeYFE2E2jESCNoK1lGOBiBYwcj6WSJ5sXgpVvmUnINAVueI7z6N47xY4 EyiQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1703527572; x=1704132372; h=content-transfer-encoding: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=YfSdFLH0c+OXnYpo+8JLybKgdvKYAok3Q5sSWeoNCus=; b=hzRPwzTphEli0EMNYAT5vJc30CMYSjq/a6AuT6idgzE4t4aF3IXZaZHSpbatUp3WAg irV9Hd9WRae2SnJMVgzlZIIZ1vpdpQw6WLPmQjivhSpAUzvB9ZZtBMCbfvgx/7ll86a5 kk/w8hEgbmI0pUpDfwsSDn1Rt2lXu+WHNTotapza66axohudD041j7QBZX047rIn4mWB vsmovSYBlxQyqPN0fLBy00HW16C0HWMauMzKj+xzsmNgwGKt/b7w8VbRs04bSBXdsbZC Jl3Xrwti+t0zpPPPQeg9VWLBi8U1bmtqyTSInwkNxSV+wu021E2z3J+l3ZynCg53yyR9 6nLQ== X-Gm-Message-State: AOJu0YzZNe8zLsujz1iu5pt8xfl96yeyAinoRSt8nUCeCo9A+i9seapw spLQ4jwGWkFDELUfXrJbMsHwAPL2NXgYWHr80f9ru/nxDVsEkwns X-Received: by 2002:a2e:3209:0:b0:2cc:6cba:ae7f with SMTP id y9-20020a2e3209000000b002cc6cbaae7fmr2446844ljy.92.1703527571746; Mon, 25 Dec 2023 10:06:11 -0800 (PST) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 References: <20231222102255.56993-1-ryncsn@gmail.com> <20231222102255.56993-2-ryncsn@gmail.com> In-Reply-To: From: Kairui Song Date: Tue, 26 Dec 2023 02:05:53 +0800 Message-ID: Subject: Re: [PATCH 1/3] mm, lru_gen: batch update counters on againg To: Yu Zhao Cc: linux-mm@kvack.org, Andrew Morton , linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Yu Zhao =E4=BA=8E2023=E5=B9=B412=E6=9C=8825=E6=97=A5=E5= =91=A8=E4=B8=80 15:29=E5=86=99=E9=81=93=EF=BC=9A > > On Fri, Dec 22, 2023 at 3:24=E2=80=AFAM Kairui Song wr= ote: > > > > From: Kairui Song > > > > When lru_gen is aging, it will update mm counters page by page, > > which causes a higher overhead if age happens frequently or there > > are a lot of pages in one generation getting moved. > > Optimize this by doing the counter update in batch. > > > > Although most __mod_*_state has its own caches the overhead > > is still observable. > > > > Tested in a 4G memcg on a EPYC 7K62 with: > > > > memcached -u nobody -m 16384 -s /tmp/memcached.socket \ > > -a 0766 -t 16 -B binary & > > > > memtier_benchmark -S /tmp/memcached.socket \ > > -P memcache_binary -n allkeys \ > > --key-minimum=3D1 --key-maximum=3D16000000 -d 1024 \ > > --ratio=3D1:0 --key-pattern=3DP:P -c 2 -t 16 --pipeline 8 -x 6 > > > > Average result of 18 test runs: > > > > Before: 44017.78 Ops/sec > > After: 44687.08 Ops/sec (+1.5%) > > > > Signed-off-by: Kairui Song > > --- > > mm/vmscan.c | 64 +++++++++++++++++++++++++++++++++++++++++++++-------- > > 1 file changed, 55 insertions(+), 9 deletions(-) > > Usually most reclaim activity happens in kswapd, e.g., from the > MongoDB benchmark (--duration=3D900): > pgscan_kswapd 11294317 > pgscan_direct 128 > And kswapd always has current->reclaim_state->mm_walk. So the > following should bring the vast majority of the improvement (assuming > it's not noise) with far less code change: Hi Yu, This won't work for the fault path (eg. the memtier test): Samples: 30K of event 'cycles', Event count (approx.): 69411674954 Children Self Command Shared Object Symbol - 85.95% 0.69% memcached [kernel.vmlinux] [k] asm_exc_page_fault - 85.25% asm_exc_page_fault - 85.00% exc_page_fault - 84.81% do_user_addr_fault - 84.01% handle_mm_fault - 83.70% __handle_mm_fault - 82.57% do_swap_page - 61.66% mem_cgroup_swapin_charge_folio - 61.11% charge_memcg - 60.76% try_charge_memcg - 60.68% try_to_free_mem_cgroup_pages do_try_to_free_pages - shrink_node - 60.51% shrink_lruvec - 60.45% try_to_shrink_lruvec + 60.42% evict_folios + 10.00% __swap_entry_free + 3.81% swap_read_folio_bdev_sync + 1.49% __pte_offset_map_lock + 0.92% swap_cache_get_folio + 0.80% folio_add_lru + 0.75% vma_alloc_folio + 0.60% swap_read_folio + 0.73% do_anonymous_page 0.54% lock_vma_under_rcu And: sudo cat /sys/kernel/debug/lru_gen_full | grep -A 25 benchmark memcg 72 /benchmark node 0 218 3283 1x 0x 0 0 0 0 0 0 0 1 0 0 0 0 0 0 2 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 219 2472 2756 0 0 14775r 303395e 0p 2r 2e 0p 1 0r 0e 0p 0r 0e 0p 2 0r 0e 0p 0r 0e 0p 3 0r 0e 15262p 0r 0e 0p 0 0 0 0 0 0 220 1652 456032 22 0 0 0 0 0 0 0 1 0 0 0 0 0 0 2 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 221 808 578570 13 0 15665R 309071T 0 0R 1T 0 1 0R 0T 0 0R 0T 0 2 0R 0T 0 0R 0T 0 3 0R 15364T 0 0R 0T 0 9191594L 3532525O 2425411Y 94393N 18515F 10578A It ages fast. It's hard to share the code with mm_walk, because in next patch, it tries to move the pages in bulk, there is no such logic for mm_walk. It's not very effective with this benchmark indeed, I'll update with some other tests.