From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753978AbdCXE2E (ORCPT ); Fri, 24 Mar 2017 00:28:04 -0400 Received: from hqemgate16.nvidia.com ([216.228.121.65]:6654 "EHLO hqemgate16.nvidia.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753503AbdCXE1t (ORCPT ); Fri, 24 Mar 2017 00:27:49 -0400 X-PGP-Universal: processed; by hqpgpgate101.nvidia.com on Thu, 23 Mar 2017 21:27:48 -0700 Subject: Re: [PATCH -v2 1/2] mm, swap: Use kvzalloc to allocate some swap data structure To: "Huang, Ying" , David Rientjes References: <20170320084732.3375-1-ying.huang@intel.com> <8737e3z992.fsf@yhuang-dev.intel.com> CC: 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 , , X-Nvconfidentiality: public From: John Hubbard Message-ID: Date: Thu, 23 Mar 2017 21:27:47 -0700 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.8.0 MIME-Version: 1.0 In-Reply-To: <8737e3z992.fsf@yhuang-dev.intel.com> X-Originating-IP: [172.17.160.221] X-ClientProxiedBy: HQMAIL106.nvidia.com (172.18.146.12) To HQMAIL107.nvidia.com (172.20.187.13) Content-Type: text/plain; charset="windows-1252"; format=flowed Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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. -- 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-f70.google.com (mail-pg0-f70.google.com [74.125.83.70]) by kanga.kvack.org (Postfix) with ESMTP id 00CB36B0333 for ; Fri, 24 Mar 2017 00:27:49 -0400 (EDT) Received: by mail-pg0-f70.google.com with SMTP id 21so7673352pgg.4 for ; Thu, 23 Mar 2017 21:27:49 -0700 (PDT) Received: from hqemgate16.nvidia.com (hqemgate16.nvidia.com. [216.228.121.65]) by mx.google.com with ESMTPS id e69si1075223pgc.181.2017.03.23.21.27.48 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 23 Mar 2017 21:27:48 -0700 (PDT) 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> From: John Hubbard Message-ID: Date: Thu, 23 Mar 2017 21:27:47 -0700 MIME-Version: 1.0 In-Reply-To: <8737e3z992.fsf@yhuang-dev.intel.com> Content-Type: text/plain; charset="windows-1252"; format=flowed Content-Transfer-Encoding: 7bit Sender: owner-linux-mm@kvack.org List-ID: To: "Huang, Ying" , David Rientjes Cc: 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 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. -- 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