Received: by 2002:a05:6a10:a0d1:0:0:0:0 with SMTP id j17csp1540890pxa; Sun, 16 Aug 2020 02:14:01 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwy/n8SRyS/eJs0F3mOgAUjWw8lW/Fz88qNOHeQovtM6BU0L1TOUTUKOajw3O4qmR2Q3wU2 X-Received: by 2002:a17:906:7d90:: with SMTP id v16mr9998569ejo.27.1597569241180; Sun, 16 Aug 2020 02:14:01 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1597569241; cv=none; d=google.com; s=arc-20160816; b=bSS+OXhy42RLr7tnYK0aVoRwGWLDVJPi6WMCiZ5rN4FTkWqobzpCqNO+8Qm00WRsSk Y4UB0+JY/UXoOYQEBTNov/SR1egXUQvsE5ieEAUHTW1Zjdu9zPnx4an+gkksiDaFEhHU qqdIkEIIfUhcpjNxb1ABqtoLg0KVpyPMatYE9tIX/a63HCvAgWJv6ih6OfSnfFDZiayA 7pH11ZWAdFtTmypKoAl5WgxDfzwv4dhC9FMopTSwuY3iE0wPIkeBKLL21+3wUrRSArgV w0iOiR7WE89bsHxudjKl1JIDxU48r36kIWivssIzg49nEcJm4rgs46u4p784dWKDPSbT g3qw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:to:references:in-reply-to:message-id:date :subject:cc:from; bh=f+cTlu6F6ytB+qx5/GqzJEecXDPsXqzDxhHBtoG1lPM=; b=k7GOhcsTPPh5Qywooz86dHslEwRuBI23/hJjhI7V57mZkwOi5JvNHe0VxH2rNMqO8k 7WwgGiuobD+9d37t41c2li5RDwF/2WwORXC9QkbYOfFfbnPFWfMTOlxD0X79bkZLXB9d FUj5/3ukAd8oH64ey++7zksdLGlAQWNAgP+/YJxVvT+LSfhtbVPgTDglFS5mobAv3gQH L+mQ8qCTrvmIeZzarSS8oLi2LrefY47HGM1jAFG2bzGp79lgOWDQpYiCe0ioGY9Vaw1i Vv8OyiPUM1bp9RJ4Wgd8IBo2wXNSxjeab94FupsFMrBY5mR0LibfomJZqfNHr+aH5RL8 +LNw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=alibaba.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id b6si9667479edq.179.2020.08.16.02.13.38; Sun, 16 Aug 2020 02:14:01 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=alibaba.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730017AbgHPDsO (ORCPT + 99 others); Sat, 15 Aug 2020 23:48:14 -0400 Received: from out30-57.freemail.mail.aliyun.com ([115.124.30.57]:49280 "EHLO out30-57.freemail.mail.aliyun.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728950AbgHPDsO (ORCPT ); Sat, 15 Aug 2020 23:48:14 -0400 X-Alimail-AntiSpam: AC=PASS;BC=-1|-1;BR=01201311R201e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=e01f04427;MF=alex.shi@linux.alibaba.com;NM=1;PH=DS;RN=5;SR=0;TI=SMTPD_---0U5s0mT9_1597549686; Received: from aliy80.localdomain(mailfrom:alex.shi@linux.alibaba.com fp:SMTPD_---0U5s0mT9_1597549686) by smtp.aliyun-inc.com(127.0.0.1); Sun, 16 Aug 2020 11:48:11 +0800 From: Alex Shi Cc: Andrew Morton , Hugh Dickins , Alexander Duyck , linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH 2/2] mm/pageblock: remove false sharing in pageblock_flags Date: Sun, 16 Aug 2020 11:47:57 +0800 Message-Id: <1597549677-7480-2-git-send-email-alex.shi@linux.alibaba.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1597549677-7480-1-git-send-email-alex.shi@linux.alibaba.com> References: <1597549677-7480-1-git-send-email-alex.shi@linux.alibaba.com> To: unlisted-recipients:; (no To-header on input) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Current pageblock_flags is only 4 bits, so it has to share a char size in cmpxchg when get set, the false sharing cause perf drop. If we incrase the bits up to 8, false sharing would gone in cmpxchg. and the only cost is half char per pageblock, which is half char per 128MB on x86, 4 chars in 1 GB. Signed-off-by: Alex Shi Cc: Andrew Morton Cc: Hugh Dickins Cc: Alexander Duyck Cc: linux-kernel@vger.kernel.org Cc: linux-mm@kvack.org --- include/linux/pageblock-flags.h | 2 +- mm/page_alloc.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/include/linux/pageblock-flags.h b/include/linux/pageblock-flags.h index d189441568eb..556fc2c0b392 100644 --- a/include/linux/pageblock-flags.h +++ b/include/linux/pageblock-flags.h @@ -25,7 +25,7 @@ enum pageblock_bits { * Assume the bits will always align on a word. If this assumption * changes then get/set pageblock needs updating. */ - NR_PAGEBLOCK_BITS + NR_PAGEBLOCK_BITS = 8 }; #ifdef CONFIG_HUGETLB_PAGE diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 142803d1f49b..01c3fb822732 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -521,7 +521,7 @@ void set_pfnblock_flags_mask(struct page *page, unsigned long flags, unsigned long bitidx, word_bitidx; unsigned char old_word, word; - BUILD_BUG_ON(NR_PAGEBLOCK_BITS != 4); + BUILD_BUG_ON(NR_PAGEBLOCK_BITS != 8); BUILD_BUG_ON(MIGRATE_TYPES > (1 << PB_migratetype_bits)); bitmap = get_pageblock_bitmap(page, pfn); -- 1.8.3.1