From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755488AbcDEDKx (ORCPT ); Mon, 4 Apr 2016 23:10:53 -0400 Received: from mail-pf0-f182.google.com ([209.85.192.182]:35661 "EHLO mail-pf0-f182.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751539AbcDEDKw (ORCPT ); Mon, 4 Apr 2016 23:10:52 -0400 Subject: Re: [PATCH v3 01/16] mm: use put_page to free page instead of putback_lru_page To: Minchan Kim References: <1459321935-3655-1-git-send-email-minchan@kernel.org> <1459321935-3655-2-git-send-email-minchan@kernel.org> <57020177.60006@gmail.com> <20160404060134.GA7555@bbox> Cc: Andrew Morton , linux-kernel@vger.kernel.org, linux-mm@kvack.org, jlayton@poochiereds.net, bfields@fieldses.org, Vlastimil Babka , Joonsoo Kim , koct9i@gmail.com, aquini@redhat.com, virtualization@lists.linux-foundation.org, Mel Gorman , Hugh Dickins , Sergey Senozhatsky , Rik van Riel , rknize@motorola.com, Gioh Kim , Sangseok Lee , Chan Gyun Jeong , Al Viro , YiPing Xu , Naoya Horiguchi From: Balbir Singh Message-ID: <57032CAE.10404@gmail.com> Date: Tue, 5 Apr 2016 13:10:38 +1000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.7.1 MIME-Version: 1.0 In-Reply-To: <20160404060134.GA7555@bbox> 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 On 04/04/16 16:01, Minchan Kim wrote: > On Mon, Apr 04, 2016 at 03:53:59PM +1000, Balbir Singh wrote: >> >> On 30/03/16 18:12, Minchan Kim wrote: >>> Procedure of page migration is as follows: >>> >>> First of all, it should isolate a page from LRU and try to >>> migrate the page. If it is successful, it releases the page >>> for freeing. Otherwise, it should put the page back to LRU >>> list. >>> >>> For LRU pages, we have used putback_lru_page for both freeing >>> and putback to LRU list. It's okay because put_page is aware of >>> LRU list so if it releases last refcount of the page, it removes >>> the page from LRU list. However, It makes unnecessary operations >>> (e.g., lru_cache_add, pagevec and flags operations. It would be >>> not significant but no worth to do) and harder to support new >>> non-lru page migration because put_page isn't aware of non-lru >>> page's data structure. >>> >>> To solve the problem, we can add new hook in put_page with >>> PageMovable flags check but it can increase overhead in >>> hot path and needs new locking scheme to stabilize the flag check >>> with put_page. >>> >>> So, this patch cleans it up to divide two semantic(ie, put and putback). >>> If migration is successful, use put_page instead of putback_lru_page and >>> use putback_lru_page only on failure. That makes code more readable >>> and doesn't add overhead in put_page. >> So effectively when we return from unmap_and_move() the page is either >> put_page or putback_lru_page() and the page is gone from under us. > I didn't get your point. > Could you elaborate it more what you want to say about this patch? I was just adding to my understanding of this change based on your changelog. My understanding is that we take the extra reference in isolate_lru_page() but by the time we return from unmap_and_move() we drop the extra reference Balbir Singh From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pa0-f42.google.com (mail-pa0-f42.google.com [209.85.220.42]) by kanga.kvack.org (Postfix) with ESMTP id C84366B027D for ; Mon, 4 Apr 2016 23:10:52 -0400 (EDT) Received: by mail-pa0-f42.google.com with SMTP id fe3so995022pab.1 for ; Mon, 04 Apr 2016 20:10:52 -0700 (PDT) Received: from mail-pf0-x22b.google.com (mail-pf0-x22b.google.com. [2607:f8b0:400e:c00::22b]) by mx.google.com with ESMTPS id 67si45823630pfh.155.2016.04.04.20.10.51 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 04 Apr 2016 20:10:51 -0700 (PDT) Received: by mail-pf0-x22b.google.com with SMTP id c20so1014837pfc.1 for ; Mon, 04 Apr 2016 20:10:51 -0700 (PDT) Subject: Re: [PATCH v3 01/16] mm: use put_page to free page instead of putback_lru_page References: <1459321935-3655-1-git-send-email-minchan@kernel.org> <1459321935-3655-2-git-send-email-minchan@kernel.org> <57020177.60006@gmail.com> <20160404060134.GA7555@bbox> From: Balbir Singh Message-ID: <57032CAE.10404@gmail.com> Date: Tue, 5 Apr 2016 13:10:38 +1000 MIME-Version: 1.0 In-Reply-To: <20160404060134.GA7555@bbox> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit Sender: owner-linux-mm@kvack.org List-ID: To: Minchan Kim Cc: Andrew Morton , linux-kernel@vger.kernel.org, linux-mm@kvack.org, jlayton@poochiereds.net, bfields@fieldses.org, Vlastimil Babka , Joonsoo Kim , koct9i@gmail.com, aquini@redhat.com, virtualization@lists.linux-foundation.org, Mel Gorman , Hugh Dickins , Sergey Senozhatsky , Rik van Riel , rknize@motorola.com, Gioh Kim , Sangseok Lee , Chan Gyun Jeong , Al Viro , YiPing Xu , Naoya Horiguchi On 04/04/16 16:01, Minchan Kim wrote: > On Mon, Apr 04, 2016 at 03:53:59PM +1000, Balbir Singh wrote: >> >> On 30/03/16 18:12, Minchan Kim wrote: >>> Procedure of page migration is as follows: >>> >>> First of all, it should isolate a page from LRU and try to >>> migrate the page. If it is successful, it releases the page >>> for freeing. Otherwise, it should put the page back to LRU >>> list. >>> >>> For LRU pages, we have used putback_lru_page for both freeing >>> and putback to LRU list. It's okay because put_page is aware of >>> LRU list so if it releases last refcount of the page, it removes >>> the page from LRU list. However, It makes unnecessary operations >>> (e.g., lru_cache_add, pagevec and flags operations. It would be >>> not significant but no worth to do) and harder to support new >>> non-lru page migration because put_page isn't aware of non-lru >>> page's data structure. >>> >>> To solve the problem, we can add new hook in put_page with >>> PageMovable flags check but it can increase overhead in >>> hot path and needs new locking scheme to stabilize the flag check >>> with put_page. >>> >>> So, this patch cleans it up to divide two semantic(ie, put and putback). >>> If migration is successful, use put_page instead of putback_lru_page and >>> use putback_lru_page only on failure. That makes code more readable >>> and doesn't add overhead in put_page. >> So effectively when we return from unmap_and_move() the page is either >> put_page or putback_lru_page() and the page is gone from under us. > I didn't get your point. > Could you elaborate it more what you want to say about this patch? I was just adding to my understanding of this change based on your changelog. My understanding is that we take the extra reference in isolate_lru_page() but by the time we return from unmap_and_move() we drop the extra reference Balbir Singh -- 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