From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-ed1-f42.google.com (mail-ed1-f42.google.com [209.85.208.42]) (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 9B46B25CC7A for ; Wed, 24 Dec 2025 14:49:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.42 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766587802; cv=none; b=Q7+Wj4De5RiWoMxHXawLrwzgQFgu6LFcw+mfpfNWdAbJVh0NpRwP68zntJgn8Th6l0zID2dd27iI+pq/9WxGMcJjaJrZXyKUT3HttjQqYWplFG+tiBN7IgRfpj7gVQwdRF+9TMKQNcDznl0N68xEb1yOe6N0W7bepXopiwn0ZCw= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766587802; c=relaxed/simple; bh=Kcf5Nd/SnWqbFdwB9JKD/QOsSJGd2HmRUBpAPCsh9q4=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=CE8L8cORGWR6Z7NhzlJW0oq0WGVtV4uOKXqCtgZVXIkFX4dQWJxhV4NYGIg0G6T6WmTkU+yoQFEjS7c5V0TivrXMGSutzuZ9fDRFcnWduFVMgXd7BnJS1jecnXSrQoz1U5yIvCfXWn/MLfFqgmbTf+mYDjJtrE9Mc4NoMocHxsU= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=B8A/wNRp; arc=none smtp.client-ip=209.85.208.42 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 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="B8A/wNRp" Received: by mail-ed1-f42.google.com with SMTP id 4fb4d7f45d1cf-64d4d8b3ad7so4668934a12.2 for ; Wed, 24 Dec 2025 06:49:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1766587797; x=1767192597; darn=vger.kernel.org; h=user-agent:in-reply-to:content-disposition:mime-version:references :reply-to:message-id:subject:cc:to:from:date:from:to:cc:subject:date :message-id:reply-to; bh=O8VCVFBIYVyB4enyF1PmIUKAF90SGYaRlZJ5H717CXs=; b=B8A/wNRpxlEHgsmyY1B4tRVV4S1swumGPg9cN1ftzAQIA5FRcWDBMeStmU4DvzRnDW 2p87jYhml9vwZfnRXw3Woo3Jh6WqB+NHk4Qbd5jRPK9TtfcQQ7SvCHDkoFSGYhnGV7sw yNAkLGgwkH7YABK2A10NiEV9v00uIyzjJNuz3QWg9PVw3d1E1TjsiPLWJjdp7darMGPz qm9Xv56hqjSKWE3nBsdEcoO/ND26BRDN5F43lrxSuM3DAju+NchujVKpZNxPepKZMu3h Ynctad1um96auBU9DYwlCdn7PUPE1Ydj/uZTbB0uRpr7h33x27SV7Gy3BgPbLVKuTDfy NDrA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766587797; x=1767192597; h=user-agent:in-reply-to:content-disposition:mime-version:references :reply-to:message-id:subject:cc:to:from:date:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=O8VCVFBIYVyB4enyF1PmIUKAF90SGYaRlZJ5H717CXs=; b=MeCBwT8d48BRjMPWHE5w4C4rlBZVaeLFISTV6YCj0egEt/EmnNIT93+30l8/u4o0M1 SvUGS+2THaxCJDlj/paxmcu9IuYhFZJW4QlaCdq5jiKpycGstUrcGMjaZWjziJ4jCl4c OmVAybIelW+8+id+57eh05O3Y3K0iObCu799trs9soTWmm5Dyad7zMWVMCQkYMYVpXGT g5mw12zD/7o1VdopPfsj4Ry+11ZgO2hDnOGiaWK5NX28JIvsyuWy6AhzNp0yUockzTts YHo+skYAAcsgNu+v968I/WeXVaiR2G4I+nPmzBb/cqCzZTXv0+mpaBZuFts4W8jP4R/K TGDA== X-Forwarded-Encrypted: i=1; AJvYcCWNYXOWZlpjIHWgXdzUQQu5u40wKv88e4ODZkE+TOfKTSBnIBRl9+MiVdFyWLKNy1kWiF8xMhvsGEH0T9o=@vger.kernel.org X-Gm-Message-State: AOJu0YxYr7svmECO4jgGT6uTTJ6yGfRpXGIZoB2gM1ja09HmaEs5UtQL 42d/WjIZBAKGUvQIDMPDCfTZE3vWjzuzzwRySWbWBrciiYydOn1eovUV X-Gm-Gg: AY/fxX4vNgwdpnlMMeh73bVNuH2PN1/eGDzRSqEz6PI23Y99SWqURvihRt6eRmhkl84 41+u9t0l/1q6ZUed7QcGno+NTjKYA+9NyTEjaM64qPzso50F5UiJDy4XwHATQlEygyLbahadCMX ulfYfiJDdSauEadnO1EghPALo/vAyCE1F4sCxI4AdcgrJT4wdHOZVEkjZNKPELDtbKqoNnAZmF4 M2cMzpFrGmv6DYNAbamh+/AxtlxCh6GBuZfmHh0mKYUcSwfnL4RB47JCDQCpUpOOh98tK5itQcX eyjdzOQ6mRLCfw8gkoiHROPvw969XA67YxxFLS7BB1oMVBY3GK8MNDPac3iduXXwH0bwn+zbKuw LH+lmY1ryG9NnWnwTB+fAWnt71Zd9PUCiU4dzWaD28aU97UB0Ne0OaRb9G4BXEzQM67ZBGT9CaV +lAo2EZoKuXQ== X-Google-Smtp-Source: AGHT+IGVc8N3Ekuv3krfR5/4WYWMgPbABgaSk2fDbV45ocu/J32SwqTT0hgr0gzfus0eQXGkutgjyA== X-Received: by 2002:a05:6402:b8e:b0:640:aae4:b84e with SMTP id 4fb4d7f45d1cf-64b8e94a858mr12861516a12.13.1766587797121; Wed, 24 Dec 2025 06:49:57 -0800 (PST) Received: from localhost ([185.92.221.13]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-64b9ef904bcsm16397894a12.22.2025.12.24.06.49.55 (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Wed, 24 Dec 2025 06:49:56 -0800 (PST) Date: Wed, 24 Dec 2025 14:49:54 +0000 From: Wei Yang To: Lance Yang Cc: Shivank Garg , Zi Yan , Andrew Morton , Baolin Wang , "Liam R . Howlett" , Nico Pache , Ryan Roberts , Dev Jain , Lorenzo Stoakes , David Hildenbrand , Barry Song , linux-mm@kvack.org, linux-kernel@vger.kernel.org, Wei Yang Subject: Re: [PATCH V2 2/5] mm/khugepaged: count small VMAs towards scan limit Message-ID: <20251224144954.2bhei4bk27f462nb@master> Reply-To: Wei Yang References: <20251224111351.41042-4-shivankg@amd.com> <20251224111351.41042-8-shivankg@amd.com> <6b408736-978a-4d40-adfc-97819951c3a6@linux.dev> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <6b408736-978a-4d40-adfc-97819951c3a6@linux.dev> User-Agent: NeoMutt/20170113 (1.7.2) On Wed, Dec 24, 2025 at 07:51:36PM +0800, Lance Yang wrote: > > >On 2025/12/24 19:13, Shivank Garg wrote: >> The khugepaged_scan_mm_slot() uses a 'progress' counter to limit the >> amount of work performed and consists of three components: >> 1. Transitioning to a new mm (+1). Hmm... maybe not only a new mm, but also we start another scan from last mm. Since default khugepaged_pages_to_scan is 8 PMD, it looks very possible. >> 2. Skipping an unsuitable VMA (+1). >> 3. Scanning a PMD-sized range (+HPAGE_PMD_NR). >> >> Consider a 1MB VMA sitting between two 2MB alignment boundaries: >> >> vma1 vma2 vma3 >> +----------+------+----------+ >> |2M |1M |2M | >> +----------+------+----------+ >> ^ ^ >> start end >> ^ >> hstart,hend >> >> In this case, for vma2: >> hstart = round_up(start, HPAGE_PMD_SIZE) -> Next 2MB alignment >> hend = round_down(end, HPAGE_PMD_SIZE) -> Prev 2MB alignment >> >> Currently, since `hend <= hstart`, VMAs that are too small or unaligned >> to contain a hugepage are skipped without incrementing 'progress'. >> A process containing a large number of such small VMAs will unfairly >> consume more CPU cycles before yielding compared to a process with >> fewer, larger, or aligned VMAs. >> >> Fix this by incrementing progress when the `hend <= hstart` condition >> is met. >> >> Additionally, change 'progress' type to `unsigned int` to match both >> the 'pages' type and the function return value. >> >> Suggested-by: Wei Yang >> Signed-off-by: Shivank Garg >> --- >> mm/khugepaged.c | 4 ++-- >> 1 file changed, 2 insertions(+), 2 deletions(-) >> >> diff --git a/mm/khugepaged.c b/mm/khugepaged.c >> index 107146f012b1..0b549c3250f9 100644 >> --- a/mm/khugepaged.c >> +++ b/mm/khugepaged.c >> @@ -2403,7 +2403,7 @@ static unsigned int khugepaged_scan_mm_slot(unsigned int pages, int *result, >> struct mm_slot *slot; >> struct mm_struct *mm; >> struct vm_area_struct *vma; >> - int progress = 0; >> + unsigned int progress = 0; >> VM_BUG_ON(!pages); >> lockdep_assert_held(&khugepaged_mm_lock); >> @@ -2447,7 +2447,7 @@ static unsigned int khugepaged_scan_mm_slot(unsigned int pages, int *result, >> } >> hstart = round_up(vma->vm_start, HPAGE_PMD_SIZE); >> hend = round_down(vma->vm_end, HPAGE_PMD_SIZE); >> - if (khugepaged_scan.address > hend) { > >Maybe add a short comment explaining why we increment progress for small VMAs >;) > >Something like this: > > /* Count small VMAs that can't hold a hugepage towards scan limit */ >> + if (khugepaged_scan.address > hend || hend <= hstart) { >> progress++; >> continue; >> } > >Otherwise, looks good to me. > >Reviewed-by: Lance Yang > The code change LGTM. Reviewed-by: Wei Yang -- Wei Yang Help you, Help me