From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.5 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_PASS,USER_AGENT_MUTT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 54A64C43381 for ; Mon, 25 Feb 2019 08:46:42 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 2A03F2087C for ; Mon, 25 Feb 2019 08:46:41 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726310AbfBYIqk (ORCPT ); Mon, 25 Feb 2019 03:46:40 -0500 Received: from mx1.redhat.com ([209.132.183.28]:51446 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725863AbfBYIqk (ORCPT ); Mon, 25 Feb 2019 03:46:40 -0500 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id E84A783F3F; Mon, 25 Feb 2019 08:46:39 +0000 (UTC) Received: from ming.t460p (ovpn-8-31.pek2.redhat.com [10.72.8.31]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 838E5600C4; Mon, 25 Feb 2019 08:46:30 +0000 (UTC) Date: Mon, 25 Feb 2019 16:46:25 +0800 From: Ming Lei To: Dave Chinner Cc: "Darrick J . Wong" , linux-xfs@vger.kernel.org, Jens Axboe , Vitaly Kuznetsov , Dave Chinner , Christoph Hellwig , Alexander Duyck , Aaron Lu , Christopher Lameter , Linux FS Devel , linux-mm@kvack.org, linux-block@vger.kernel.org Subject: Re: [PATCH] xfs: allocate sector sized IO buffer via page_frag_alloc Message-ID: <20190225084623.GA8397@ming.t460p> References: <20190225040904.5557-1-ming.lei@redhat.com> <20190225043648.GE23020@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20190225043648.GE23020@dastard> User-Agent: Mutt/1.9.1 (2017-09-22) X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.27]); Mon, 25 Feb 2019 08:46:40 +0000 (UTC) Sender: linux-fsdevel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-fsdevel@vger.kernel.org On Mon, Feb 25, 2019 at 03:36:48PM +1100, Dave Chinner wrote: > On Mon, Feb 25, 2019 at 12:09:04PM +0800, Ming Lei wrote: > > XFS uses kmalloc() to allocate sector sized IO buffer. > .... > > Use page_frag_alloc() to allocate the sector sized buffer, then the > > above issue can be fixed because offset_in_page of allocated buffer > > is always sector aligned. > > Didn't we already reject this approach because page frags cannot be I remembered there is this kind of issue mentioned, but just not found the details, so post out the patch for restarting the discussion. > reused and that pages allocated to the frag pool are pinned in > memory until all fragments allocated on the page have been freed? Yes, that is one problem. But if one page is consumed, sooner or later, all fragments will be freed, then the page becomes available again. > > i.e. when we consider 64k page machines and 4k block sizes (i.e. > default config), every single metadata allocation is a sub-page > allocation and so will use this new page frag mechanism. IOWs, it > will result in fragmenting memory severely and typical memory > reclaim not being able to fix it because the metadata that pins each > page is largely unreclaimable... It can be an issue in case of IO timeout & retry. Thanks, Ming