From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752789AbdCXEwk (ORCPT ); Fri, 24 Mar 2017 00:52:40 -0400 Received: from mga09.intel.com ([134.134.136.24]:26768 "EHLO mga09.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751390AbdCXEwd (ORCPT ); Fri, 24 Mar 2017 00:52:33 -0400 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.36,213,1486454400"; d="scan'208";a="838018015" From: "Huang\, Ying" To: John Hubbard Cc: "Huang\, Ying" , David Rientjes , Andrew Morton , Andi Kleen , Dave Hansen , Shaohua Li , Rik van Riel , Tim Chen , Michal Hocko , Mel Gorman , Aaron Lu , Gerald Schaefer , "Kirill A. Shutemov" , Hugh Dickins , "Ingo Molnar" , Vegard Nossum , , Subject: Re: [PATCH -v2 1/2] mm, swap: Use kvzalloc to allocate some swap data structure References: <20170320084732.3375-1-ying.huang@intel.com> <8737e3z992.fsf@yhuang-dev.intel.com> Date: Fri, 24 Mar 2017 12:52:27 +0800 In-Reply-To: (John Hubbard's message of "Thu, 23 Mar 2017 21:27:47 -0700") Message-ID: <87poh7xoms.fsf@yhuang-dev.intel.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=ascii Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org John Hubbard writes: > On 03/23/2017 07:41 PM, Huang, Ying wrote: >> David Rientjes writes: >> >>> On Mon, 20 Mar 2017, Huang, Ying wrote: >>> >>>> From: Huang Ying >>>> >>>> Now vzalloc() is used in swap code to allocate various data >>>> structures, such as swap cache, swap slots cache, cluster info, etc. >>>> Because the size may be too large on some system, so that normal >>>> kzalloc() may fail. But using kzalloc() has some advantages, for >>>> example, less memory fragmentation, less TLB pressure, etc. So change >>>> the data structure allocation in swap code to use kvzalloc() which >>>> will try kzalloc() firstly, and fallback to vzalloc() if kzalloc() >>>> failed. >>>> >>> >>> As questioned in -v1 of this patch, what is the benefit of directly >>> compacting and reclaiming memory for high-order pages by first preferring >>> kmalloc() if this does not require contiguous memory? >> >> The memory allocation here is only for swap on time, not for swap out/in >> time. The performance of swap on is not considered critical. But if >> the kmalloc() is used instead of the vmalloc(), the swap out/in >> performance could be improved (marginally). More importantly, the >> interference for the other activity on the system could be reduced, For >> example, less memory fragmentation, less TLB usage of swap subsystem, >> etc. > > Hi Ying, > > I'm a little surprised to see vmalloc calls replaced with > kmalloc-then-vmalloc calls, because that actually makes fragmentation > worse (contrary to the above claim). That's because you will consume > contiguous memory (even though you don't need it to be contiguous), > whereas before, you would have been able to get by with page-at-a-time > for vmalloc. > > So, things like THP will find fewer contiguous chunks, as a result of patches such as this. Hi, John, I don't think so. The pages allocated by vmalloc() cannot be moved during de-fragment. For example, if 512 dis-continuous physical pages are allocated via vmalloc(), at worst, one page will be allocate from one distinct 2MB continous physical pages. This makes 512 * 2MB = 1GB memory cannot be used for THP allocation. Because these pages cannot be defragmented until vfree(). Best Regards, Huang, Ying > -- > thanks, > john h > >> >> Best Regards, >> Huang, Ying >> >> -- >> To unsubscribe, send a message with 'unsubscribe linux-mm' in >> the body to majordomo@kvack.org. For more info on Linux MM, >> see: http://www.linux-mm.org/ . >> Don't email: email@kvack.org >> From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pg0-f72.google.com (mail-pg0-f72.google.com [74.125.83.72]) by kanga.kvack.org (Postfix) with ESMTP id 4A3DA6B0333 for ; Fri, 24 Mar 2017 00:52:33 -0400 (EDT) Received: by mail-pg0-f72.google.com with SMTP id t143so8601930pgb.1 for ; Thu, 23 Mar 2017 21:52:33 -0700 (PDT) Received: from mga14.intel.com (mga14.intel.com. [192.55.52.115]) by mx.google.com with ESMTPS id o190si804185pfg.288.2017.03.23.21.52.31 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 23 Mar 2017 21:52:32 -0700 (PDT) From: "Huang\, Ying" Subject: Re: [PATCH -v2 1/2] mm, swap: Use kvzalloc to allocate some swap data structure References: <20170320084732.3375-1-ying.huang@intel.com> <8737e3z992.fsf@yhuang-dev.intel.com> Date: Fri, 24 Mar 2017 12:52:27 +0800 In-Reply-To: (John Hubbard's message of "Thu, 23 Mar 2017 21:27:47 -0700") Message-ID: <87poh7xoms.fsf@yhuang-dev.intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=ascii Sender: owner-linux-mm@kvack.org List-ID: To: John Hubbard Cc: "Huang, Ying" , David Rientjes , Andrew Morton , Andi Kleen , Dave Hansen , Shaohua Li , Rik van Riel , Tim Chen , Michal Hocko , Mel Gorman , Aaron Lu , Gerald Schaefer , "Kirill A. Shutemov" , Hugh Dickins , Ingo Molnar , Vegard Nossum , linux-mm@kvack.org, linux-kernel@vger.kernel.org John Hubbard writes: > On 03/23/2017 07:41 PM, Huang, Ying wrote: >> David Rientjes writes: >> >>> On Mon, 20 Mar 2017, Huang, Ying wrote: >>> >>>> From: Huang Ying >>>> >>>> Now vzalloc() is used in swap code to allocate various data >>>> structures, such as swap cache, swap slots cache, cluster info, etc. >>>> Because the size may be too large on some system, so that normal >>>> kzalloc() may fail. But using kzalloc() has some advantages, for >>>> example, less memory fragmentation, less TLB pressure, etc. So change >>>> the data structure allocation in swap code to use kvzalloc() which >>>> will try kzalloc() firstly, and fallback to vzalloc() if kzalloc() >>>> failed. >>>> >>> >>> As questioned in -v1 of this patch, what is the benefit of directly >>> compacting and reclaiming memory for high-order pages by first preferring >>> kmalloc() if this does not require contiguous memory? >> >> The memory allocation here is only for swap on time, not for swap out/in >> time. The performance of swap on is not considered critical. But if >> the kmalloc() is used instead of the vmalloc(), the swap out/in >> performance could be improved (marginally). More importantly, the >> interference for the other activity on the system could be reduced, For >> example, less memory fragmentation, less TLB usage of swap subsystem, >> etc. > > Hi Ying, > > I'm a little surprised to see vmalloc calls replaced with > kmalloc-then-vmalloc calls, because that actually makes fragmentation > worse (contrary to the above claim). That's because you will consume > contiguous memory (even though you don't need it to be contiguous), > whereas before, you would have been able to get by with page-at-a-time > for vmalloc. > > So, things like THP will find fewer contiguous chunks, as a result of patches such as this. Hi, John, I don't think so. The pages allocated by vmalloc() cannot be moved during de-fragment. For example, if 512 dis-continuous physical pages are allocated via vmalloc(), at worst, one page will be allocate from one distinct 2MB continous physical pages. This makes 512 * 2MB = 1GB memory cannot be used for THP allocation. Because these pages cannot be defragmented until vfree(). Best Regards, Huang, Ying > -- > thanks, > john h > >> >> Best Regards, >> Huang, Ying >> >> -- >> To unsubscribe, send a message with 'unsubscribe linux-mm' in >> the body to majordomo@kvack.org. For more info on Linux MM, >> see: http://www.linux-mm.org/ . >> Don't email: email@kvack.org >> -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: email@kvack.org