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 9DA8DC369C2 for ; Sun, 20 Apr 2025 08:33:54 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 83EB06B00BF; Sun, 20 Apr 2025 04:33:52 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 7ED806B00C0; Sun, 20 Apr 2025 04:33:52 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 6DCF36B00C1; Sun, 20 Apr 2025 04:33:52 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 507536B00BF for ; Sun, 20 Apr 2025 04:33:52 -0400 (EDT) Received: from smtpin12.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id C2A8281448 for ; Sun, 20 Apr 2025 08:33:52 +0000 (UTC) X-FDA: 83353759104.12.8D6C7CA Received: from out-177.mta1.migadu.com (out-177.mta1.migadu.com [95.215.58.177]) by imf15.hostedemail.com (Postfix) with ESMTP id DA07AA0003 for ; Sun, 20 Apr 2025 08:33:50 +0000 (UTC) Authentication-Results: imf15.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b="SgZ/BzvW"; dmarc=pass (policy=none) header.from=linux.dev; spf=pass (imf15.hostedemail.com: domain of lance.yang@linux.dev designates 95.215.58.177 as permitted sender) smtp.mailfrom=lance.yang@linux.dev ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1745138031; a=rsa-sha256; cv=none; b=iDPzyRplORhYGagOBinnlJacKAinb6Qwpix6GhQ5M/v9Ttk+cZ/V6+PMYkwhyX2szfx4vP 5uatY+FUayJ0fkwk2FpnjMU/59E5q22Vtdl4Kydcvelc0q1o03OasmxpXgBmr4LI/ednVV Mi2K9wRtmxvRDg7+p3EyPS//OEravXs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1745138031; 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:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=LYuILlImZQTlg7sctwVnY82spfkD4xH0j6uwgGAf9ow=; b=hPZM2GC1xA/EpBJ4u3dYg+hTqL+5GG60YtNhzur/oofZ4d9gSL8C0jIouwfO2P0TFROiyr YsylSUUqHITNz4Dqe3EXntheyJ8hmmFUyA2DACQoQMc/z85q4FzRG1BamZTL9DbdeGrxen /GziJ8OtsB9aGJG+6aSAZdqu+1J8bJI= ARC-Authentication-Results: i=1; imf15.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b="SgZ/BzvW"; dmarc=pass (policy=none) header.from=linux.dev; spf=pass (imf15.hostedemail.com: domain of lance.yang@linux.dev designates 95.215.58.177 as permitted sender) smtp.mailfrom=lance.yang@linux.dev MIME-Version: 1.0 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1745138028; h=from:from: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:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=LYuILlImZQTlg7sctwVnY82spfkD4xH0j6uwgGAf9ow=; b=SgZ/BzvWEGnHv+owOD82Hz+Z+xG0w/vsDIzgdZJm/GsbQW9Wm4bN0GTWw9kC8pPEqLF8F4 TVgyjSEql4QVxTTfVn/9K+kxtrTf9WrCQ1+j5yCazFYikDkljSLrjaz+P9RO0I0eBEKGqc vjkUeMnKjOD68JHQVGkZX1GG2p9TpWg= Date: Sun, 20 Apr 2025 08:33:45 +0000 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. From: "Lance Yang" Message-ID: TLS-Required: No Subject: Re: [PATCH 1/1] mm/rmap: optimize MM-ID mapcount handling with union To: "David Hildenbrand" , "Lance Yang" , akpm@linux-foundation.org Cc: mingzhe.yang@ly.com, willy@infradead.org, ziy@nvidia.com, mhocko@suse.com, vbabka@suse.cz, surenb@google.com, linux-mm@kvack.org, jackmanb@google.com, hannes@cmpxchg.org, linux-kernel@vger.kernel.org In-Reply-To: <2e501e48-8604-4813-b76a-d467cad67f53@redhat.com> References: <20250420055159.55851-1-lance.yang@linux.dev> <2e501e48-8604-4813-b76a-d467cad67f53@redhat.com> X-Migadu-Flow: FLOW_OUT X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: DA07AA0003 X-Stat-Signature: np57t89s5778bquy88mwqkkf3wsdb9qq X-Rspam-User: X-HE-Tag: 1745138030-176721 X-HE-Meta: U2FsdGVkX181aqkBQVXfVs3l/AEyqnWW92t5P4ua3wBcril3v1qCMrnIx3cfYKg8vbJZJPOZmqrNK/OMs4QliqBzrkW//M5jeBAW+IF02wylcDSpF4CRxhKXqNIUuDYiWxhMbIwcWhWcLJGYuPqUEjnZh9q0iwZ3lXeG92/OLAKjw8mvJvpLdyuAkp8q25kmyL0Ub29Vpctx2DTmTN9lGr8btCqAOGTrKZqCGqulvYYxrWjvBOIzqgQwMgXwQyJEROaiUGwMruNXOdaLD7f/z+pN3OBbKw/2t4dcbRDc5pL9M73MxEQwnWkUVzuI9BxwBa2blHTBK2YsUhimrkQSa8mAgE6cQxGA7ngyxdB3VD5bLJt9JXxJA60AqdyDRWFTH3PMQmwGicL/Qe4H28htRlWn/QjaQReQj2IJ7VRjwsoHxTgx1CFUAlR3by9ALpsNlRi7StfC3gFnvQYGSdZdIMYwu4k1aP7qNHUXjxs3SFkBaqv5VnNRfvmfCUzEkGsevr63hjqcayHlnlYYfgaOll//Y/0ybVLWHenEfizIJx7MaMAtdzZRXcdzf7rzc7JHglEd3yx1sHQZMpgUVu93Bb8psK006JH6RaaKbyJQ7usukYIdD46mxZGCsj4VAHdvSW5Rv5wg5DF6rhQvV1J4ypX2EKhZwFqNL+CCfUIYrzkNMoAeceRznyDkTfGp3sH0qlsh9yhiafHpDfmIZDrkpuQos++BdqP0pjH3yxKZHZQhB3pWgWeW95EMc5S0ZzYGq0Liu4PKSS1nqAc2SySUP9ddJfLOX/F4dzvKIu69jT6G0m2MxNge7pPu9ClO0BW13a9w/WzRCeSdPe9B6JBSY63CSJkizG8JtoCTrpcdGvhwlJUxF9bTZAd+N91j58TAo4lLI8AKT/1KpSneaCVhMw0FxhowgNd/gMUA+DsoOjnDxVhtzFh7d+rFxUIjJkvQbHYrH++Lx3rFYvfnpui rfgU4ODK gTSz/5uT0vDI/iJ7ddQJS4DUV7T4mn8fy/zPQQtiEWFwZf9q84bzTaWW2PJYiN5aZgmdPuodR9KqkRV41HnFU7oJXdyzlOZ0JzK30dz9vFNjYQ/blo6r51mfPuNs1YrKYA4vnrfyHiI7q6hn51tMCltKBUk+mpLaauzPiUE+FfNntv9fhOH7UIXTkw+bG4IF7Rdp1DA6c8lgIdzo= 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: List-Subscribe: List-Unsubscribe: April 20, 2025 at 3:12 PM, "David Hildenbrand" wrote: >=20 >=20>=20 >=20> /* Note: mapcounts start at -1. */ > >=20 >=20> atomic_set(&folio->_large_mapcount, mapcount - 1); > >=20 >=20> diff --git a/mm/internal.h b/mm/internal.h > >=20 >=20> index 838f840ded83..1505174178f4 100644 > >=20 >=20> --- a/mm/internal.h > >=20 >=20> +++ b/mm/internal.h > >=20 >=20> @@ -772,8 +772,13 @@ static inline void prep_compound_head(struct = page *page, unsigned int order) > >=20 >=20> atomic_set(&folio->_nr_pages_mapped, 0); > >=20 >=20> if (IS_ENABLED(CONFIG_MM_ID)) { > >=20 >=20> folio->_mm_ids =3D 0; > >=20 >=20> - folio->_mm_id_mapcount[0] =3D -1; > >=20 >=20> - folio->_mm_id_mapcount[1] =3D -1; > >=20 >=20> + /* > >=20 >=20> + * One-shot initialization of both mapcount slots to -1. > >=20 >=20> + * Using 'unsigned long' ensures cross-arch compatibility: > >=20 >=20> + * - 32-bit: Fills both short slots (0xFFFF each) > >=20 >=20> + * - 64-bit: Fills both int slots (0xFFFFFFFF each) > >=20 >=20> + */ > >=20 >=20> + folio->_mm_id_mapcounts =3D -1UL; > >=20 >=20 > Are we sure the compiler cannot optimize that itself? >=20 >=20On x86-64 I get with gcc 14.2.1: >=20 >=20; folio->_mm_id_mapcount[0] =3D -1; >=20 >=20 3f2f: 48 c7 42 60 ff ff ff ff movq $-0x1, 0x60(%rdx) >=20 >=20Which should be a quadword (64bit) setting, so exactly what you want = to achieve. Yeah, the compiler should be as smart as we expect it to be. However, it seems that gcc 4.8.5 doesn't behave as expected with the -O2 optimization level on the x86-64 test machine. struct folio_array { int _mm_id_mapcount[2]; }; void init_array(struct folio_array *f) { f->_mm_id_mapcount[0] =3D -1; f->_mm_id_mapcount[1] =3D -1; } 0000000000000000 : 0: c7 07 ff ff ff ff movl $0xffffffff,(%rdi) 6: c7 47 04 ff ff ff ff movl $0xffffffff,0x4(%rdi) d: c3 retq --- struct folio_union { union { int _mm_id_mapcount[2]; unsigned long _mm_id_mapcounts; }; }; void init_union(struct folio_union *f) { f->_mm_id_mapcounts =3D -1UL; } 0000000000000010 : 10: 48 c7 07 ff ff ff ff movq $0xffffffffffffffff,(%rdi) 17: c3 retq Hmm... I'm not sure if it's valuable for those compilers that are not very new. Thanks, Lance >=20 >=20-- Cheers, >=20 >=20David / dhildenb >