Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756293AbbFPHxx (ORCPT ); Tue, 16 Jun 2015 03:53:53 -0400 Received: from cantor2.suse.de ([195.135.220.15]:44159 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751798AbbFPHxc (ORCPT ); Tue, 16 Jun 2015 03:53:32 -0400 Message-ID: <557FD5F8.10903@suse.cz> Date: Tue, 16 Jun 2015 09:53:28 +0200 From: Vlastimil Babka User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.4.0 MIME-Version: 1.0 To: Xishi Qiu , Andrew Morton , nao.horiguchi@gmail.com, Yinghai Lu , "H. Peter Anvin" , Thomas Gleixner , mingo@elte.hu, Xiexiuqi , Hanjun Guo , "Luck, Tony" CC: Linux MM , LKML Subject: Re: [RFC PATCH 00/12] mm: mirrored memory support for page buddy allocations References: <55704A7E.5030507@huawei.com> In-Reply-To: <55704A7E.5030507@huawei.com> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3111 Lines: 70 On 06/04/2015 02:54 PM, Xishi Qiu wrote: > Intel Xeon processor E7 v3 product family-based platforms introduces support > for partial memory mirroring called as 'Address Range Mirroring'. This feature > allows BIOS to specify a subset of total available memory to be mirrored (and > optionally also specify whether to mirror the range 0-4 GB). This capability > allows user to make an appropriate tradeoff between non-mirrored memory range > and mirrored memory range thus optimizing total available memory and still > achieving highly reliable memory range for mission critical workloads and/or > kernel space. > > Tony has already send a patchset to supprot this feature at boot time. > https://lkml.org/lkml/2015/5/8/521 > > This patchset can support the feature after boot time. It introduces mirror_info > to save the mirrored memory range. Then use __GFP_MIRROR to allocate mirrored > pages. > > I think add a new migratetype is btter and easier than a new zone, so I use If the mirrored memory is in a single reasonably compact (no large holes) range (per NUMA node) and won't dynamically change its size, then zone might be a better option. For one thing, it will still allow distinguishing movable and unmovable allocations within the mirrored memory. We had enough fun with MIGRATE_CMA and all kinds of checks it added to allocator hot paths, and even CMA is now considering moving to a separate zone. > MIGRATE_MIRROR to manage the mirrored pages. However it changed some code in the > core file, please review and comment, thanks. > > TBD: > 1) call add_mirror_info() to fill mirrored memory info. > 2) add compatibility with memory online/offline. > 3) add more interface? others? > > Xishi Qiu (12): > mm: add a new config to manage the code > mm: introduce mirror_info > mm: introduce MIGRATE_MIRROR to manage the mirrored pages > mm: add mirrored pages to buddy system > mm: introduce a new zone_stat_item NR_FREE_MIRROR_PAGES > mm: add free mirrored pages info > mm: introduce __GFP_MIRROR to allocate mirrored pages > mm: use mirrorable to switch allocate mirrored memory > mm: enable allocate mirrored memory at boot time > mm: add the buddy system interface > mm: add the PCP interface > mm: let slab/slub/slob use mirrored memory > > arch/x86/mm/numa.c | 3 ++ > drivers/base/node.c | 17 ++++--- > fs/proc/meminfo.c | 6 +++ > include/linux/gfp.h | 5 +- > include/linux/mmzone.h | 23 +++++++++ > include/linux/vmstat.h | 2 + > kernel/sysctl.c | 9 ++++ > mm/Kconfig | 8 +++ > mm/page_alloc.c | 134 ++++++++++++++++++++++++++++++++++++++++++++++--- > mm/slab.c | 3 +- > mm/slob.c | 2 +- > mm/slub.c | 2 +- > mm/vmstat.c | 4 ++ > 13 files changed, 202 insertions(+), 16 deletions(-) > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/