From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?Q?Christian_K=c3=b6nig?= Subject: Re: [PATCH 2/2] drm/ttm: Use GFP_TRANSHUGE_LIGHT for allocating huge pages Date: Sun, 29 Apr 2018 09:04:56 +0200 Message-ID: <9ae5f860-e893-40ed-febd-986bda5ba3ef@gmail.com> References: <20180426150618.13470-1-michel@daenzer.net> <20180426150618.13470-2-michel@daenzer.net> Reply-To: christian.koenig@amd.com Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180426150618.13470-2-michel@daenzer.net> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: =?UTF-8?Q?Michel_D=c3=a4nzer?= , =?UTF-8?Q?Christian_K=c3=b6nig?= , Roger He Cc: dri-devel@lists.freedesktop.org, amd-gfx@lists.freedesktop.org, linux-kernel@vger.kernel.org List-Id: amd-gfx.lists.freedesktop.org QW0gMjYuMDQuMjAxOCB1bSAxNzowNiBzY2hyaWViIE1pY2hlbCBEw6RuemVyOgo+IEZyb206IE1p Y2hlbCBEw6RuemVyIDxtaWNoZWwuZGFlbnplckBhbWQuY29tPgo+Cj4gR0ZQX1RSQU5TSFVHRSB0 cmllcyB2ZXJ5IGhhcmQgdG8gYWxsb2NhdGUgaHVnZSBwYWdlcywgd2hpY2ggY2FuIHJlc3VsdAo+ IGluIGxvbmcgZGVsYXlzIHdpdGggaGlnaCBtZW1vcnkgcHJlc3N1cmUuIEkgaGF2ZSBvYnNlcnZl ZCBmaXJlZm94Cj4gZnJlZXppbmcgZm9yIHVwIHRvIGFyb3VuZCBhIG1pbnV0ZSBkdWUgdG8gdGhp cyB3aGlsZSByZXN0aWMgd2FzIHRha2luZwo+IGEgZnVsbCBzeXN0ZW0gYmFja3VwLgo+Cj4gU2lu Y2Ugd2UgZG9uJ3QgcmVhbGx5IG5lZWQgaHVnZSBwYWdlcywgdXNlIEdGUF9UUkFOU0hVR0VfTElH SFQgfAo+IF9fR0ZQX05PUkVUUlkgaW5zdGVhZCwgaW4gb3JkZXIgdG8gZmFpbCBxdWlja2x5IHdo ZW4gdGhlcmUgYXJlIG5vIGh1Z2UKPiBwYWdlcyBhdmFpbGFibGUuCgpZZWFoLCB0aGF0IGdvZXMg aW50byB0aGUgZGlyZWN0aW9uIEZlbGl4IGFscmVhZHkgc3VnZ2VzdGVkIGFzIHdlbGwuCgo+IFNl dCBfX0dGUF9LU1dBUERfUkVDTEFJTSBhcyB3ZWxsLCBpbiBvcmRlciBmb3IgaHVnZSBwYWdlcyB0 byBiZSBmcmVlZAo+IHVwIGluIHRoZSBiYWNrZ3JvdW5kIGlmIG5lY2Vzc2FyeS4KCkFuZCB0aGF0 IGlzIGV2ZW4gYmV0dGVyLCB0aGFua3MuCgo+Cj4gV2l0aCB0aGVzZSBjaGFuZ2VzLCBJJ20gbm8g bG9uZ2VyIHNlZWluZyBmcmVlemVzIGR1cmluZyBhIHJlc3RpYyBiYWNrdXAuCj4KPiBDYzogc3Rh YmxlQHZnZXIua2VybmVsLm9yZwo+IFNpZ25lZC1vZmYtYnk6IE1pY2hlbCBEw6RuemVyIDxtaWNo ZWwuZGFlbnplckBhbWQuY29tPgoKUmV2aWV3ZWQtYnk6IENocmlzdGlhbiBLw7ZuaWcgPGNocmlz dGlhbi5rb2VuaWdAYW1kLmNvbT4KClJlZ2FyZHMsCkNocmlzdGlhbi4KCj4gLS0tCj4gICBkcml2 ZXJzL2dwdS9kcm0vdHRtL3R0bV9wYWdlX2FsbG9jLmMgICAgIHwgMTEgKysrKysrKystLS0KPiAg IGRyaXZlcnMvZ3B1L2RybS90dG0vdHRtX3BhZ2VfYWxsb2NfZG1hLmMgfCAgMyArKy0KPiAgIDIg ZmlsZXMgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKPgo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9wYWdlX2FsbG9jLmMgYi9kcml2ZXJzL2dw dS9kcm0vdHRtL3R0bV9wYWdlX2FsbG9jLmMKPiBpbmRleCAyY2U5MTI3MmIxMTEuLjY3OTRmMTU0 NjFkOSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9wYWdlX2FsbG9jLmMK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9wYWdlX2FsbG9jLmMKPiBAQCAtOTE0LDcg KzkxNCw4IEBAIHN0YXRpYyBpbnQgdHRtX2dldF9wYWdlcyhzdHJ1Y3QgcGFnZSAqKnBhZ2VzLCB1 bnNpZ25lZCBucGFnZXMsIGludCBmbGFncywKPiAgIAkJCXdoaWxlIChucGFnZXMgPj0gSFBBR0Vf UE1EX05SKSB7Cj4gICAJCQkJZ2ZwX3QgaHVnZV9mbGFncyA9IGdmcF9mbGFnczsKPiAgIAo+IC0J CQkJaHVnZV9mbGFncyB8PSBHRlBfVFJBTlNIVUdFOwo+ICsJCQkJaHVnZV9mbGFncyB8PSBHRlBf VFJBTlNIVUdFX0xJR0hUIHwgX19HRlBfTk9SRVRSWSB8Cj4gKwkJCQkJX19HRlBfS1NXQVBEX1JF Q0xBSU07Cj4gICAJCQkJaHVnZV9mbGFncyAmPSB+X19HRlBfTU9WQUJMRTsKPiAgIAkJCQlodWdl X2ZsYWdzICY9IH5fX0dGUF9DT01QOwo+ICAgCQkJCXAgPSBhbGxvY19wYWdlcyhodWdlX2ZsYWdz LCBIUEFHRV9QTURfT1JERVIpOwo+IEBAIC0xMDMzLDExICsxMDM0LDE1IEBAIGludCB0dG1fcGFn ZV9hbGxvY19pbml0KHN0cnVjdCB0dG1fbWVtX2dsb2JhbCAqZ2xvYiwgdW5zaWduZWQgbWF4X3Bh Z2VzKQo+ICAgCQkJCSAgR0ZQX1VTRVIgfCBHRlBfRE1BMzIsICJ1YyBkbWEiLCAwKTsKPiAgIAo+ ICAgCXR0bV9wYWdlX3Bvb2xfaW5pdF9sb2NrZWQoJl9tYW5hZ2VyLT53Y19wb29sX2h1Z2UsCj4g LQkJCQkgIEdGUF9UUkFOU0hVR0UJJiB+KF9fR0ZQX01PVkFCTEUgfCBfX0dGUF9DT01QKSwKPiAr CQkJCSAgKEdGUF9UUkFOU0hVR0VfTElHSFQgfCBfX0dGUF9OT1JFVFJZIHwKPiArCQkJCSAgIF9f R0ZQX0tTV0FQRF9SRUNMQUlNKSAmCj4gKwkJCQkgIH4oX19HRlBfTU9WQUJMRSB8IF9fR0ZQX0NP TVApLAo+ICAgCQkJCSAgIndjIGh1Z2UiLCBvcmRlcik7Cj4gICAKPiAgIAl0dG1fcGFnZV9wb29s X2luaXRfbG9ja2VkKCZfbWFuYWdlci0+dWNfcG9vbF9odWdlLAo+IC0JCQkJICBHRlBfVFJBTlNI VUdFCSYgfihfX0dGUF9NT1ZBQkxFIHwgX19HRlBfQ09NUCkKPiArCQkJCSAgKEdGUF9UUkFOU0hV R0VfTElHSFQgfCBfX0dGUF9OT1JFVFJZIHwKPiArCQkJCSAgIF9fR0ZQX0tTV0FQRF9SRUNMQUlN KSAmCj4gKwkJCQkgIH4oX19HRlBfTU9WQUJMRSB8IF9fR0ZQX0NPTVApCj4gICAJCQkJICAsICJ1 YyBodWdlIiwgb3JkZXIpOwo+ICAgCj4gICAJX21hbmFnZXItPm9wdGlvbnMubWF4X3NpemUgPSBt YXhfcGFnZXM7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS90dG0vdHRtX3BhZ2VfYWxs b2NfZG1hLmMgYi9kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9wYWdlX2FsbG9jX2RtYS5jCj4gaW5k ZXggMjkxYjA0MjEzZWM1Li41YTU1MTE1OGMyODkgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL3R0bS90dG1fcGFnZV9hbGxvY19kbWEuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS90dG0v dHRtX3BhZ2VfYWxsb2NfZG1hLmMKPiBAQCAtOTEwLDcgKzkxMCw4IEBAIHN0YXRpYyBnZnBfdCB0 dG1fZG1hX3Bvb2xfZ2ZwX2ZsYWdzKHN0cnVjdCB0dG1fZG1hX3R0ICp0dG1fZG1hLCBib29sIGh1 Z2UpCj4gICAJCWdmcF9mbGFncyB8PSBfX0dGUF9aRVJPOwo+ICAgCj4gICAJaWYgKGh1Z2UpIHsK PiAtCQlnZnBfZmxhZ3MgfD0gR0ZQX1RSQU5TSFVHRTsKPiArCQlnZnBfZmxhZ3MgfD0gR0ZQX1RS QU5TSFVHRV9MSUdIVCB8IF9fR0ZQX05PUkVUUlkgfAo+ICsJCQlfX0dGUF9LU1dBUERfUkVDTEFJ TTsKPiAgIAkJZ2ZwX2ZsYWdzICY9IH5fX0dGUF9NT1ZBQkxFOwo+ICAgCQlnZnBfZmxhZ3MgJj0g fl9fR0ZQX0NPTVA7Cj4gICAJfQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v ZHJpLWRldmVsCg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752891AbeD2HFA (ORCPT ); Sun, 29 Apr 2018 03:05:00 -0400 Received: from mail-wm0-f68.google.com ([74.125.82.68]:51259 "EHLO mail-wm0-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752767AbeD2HE7 (ORCPT ); Sun, 29 Apr 2018 03:04:59 -0400 X-Google-Smtp-Source: AB8JxZqDrgr4QXNE2WnAfpl0RVf+iB5nCaxZzKNZ6VBATJwfvw94LB3rHPLs0wre4FE7E2XNFSQvSw== Reply-To: christian.koenig@amd.com Subject: Re: [PATCH 2/2] drm/ttm: Use GFP_TRANSHUGE_LIGHT for allocating huge pages To: =?UTF-8?Q?Michel_D=c3=a4nzer?= , =?UTF-8?Q?Christian_K=c3=b6nig?= , Roger He Cc: amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org References: <20180426150618.13470-1-michel@daenzer.net> <20180426150618.13470-2-michel@daenzer.net> From: =?UTF-8?Q?Christian_K=c3=b6nig?= Message-ID: <9ae5f860-e893-40ed-febd-986bda5ba3ef@gmail.com> Date: Sun, 29 Apr 2018 09:04:56 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.7.0 MIME-Version: 1.0 In-Reply-To: <20180426150618.13470-2-michel@daenzer.net> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Content-Language: en-US Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Am 26.04.2018 um 17:06 schrieb Michel Dänzer: > From: Michel Dänzer > > GFP_TRANSHUGE tries very hard to allocate huge pages, which can result > in long delays with high memory pressure. I have observed firefox > freezing for up to around a minute due to this while restic was taking > a full system backup. > > Since we don't really need huge pages, use GFP_TRANSHUGE_LIGHT | > __GFP_NORETRY instead, in order to fail quickly when there are no huge > pages available. Yeah, that goes into the direction Felix already suggested as well. > Set __GFP_KSWAPD_RECLAIM as well, in order for huge pages to be freed > up in the background if necessary. And that is even better, thanks. > > With these changes, I'm no longer seeing freezes during a restic backup. > > Cc: stable@vger.kernel.org > Signed-off-by: Michel Dänzer Reviewed-by: Christian König Regards, Christian. > --- > drivers/gpu/drm/ttm/ttm_page_alloc.c | 11 ++++++++--- > drivers/gpu/drm/ttm/ttm_page_alloc_dma.c | 3 ++- > 2 files changed, 10 insertions(+), 4 deletions(-) > > diff --git a/drivers/gpu/drm/ttm/ttm_page_alloc.c b/drivers/gpu/drm/ttm/ttm_page_alloc.c > index 2ce91272b111..6794f15461d9 100644 > --- a/drivers/gpu/drm/ttm/ttm_page_alloc.c > +++ b/drivers/gpu/drm/ttm/ttm_page_alloc.c > @@ -914,7 +914,8 @@ static int ttm_get_pages(struct page **pages, unsigned npages, int flags, > while (npages >= HPAGE_PMD_NR) { > gfp_t huge_flags = gfp_flags; > > - huge_flags |= GFP_TRANSHUGE; > + huge_flags |= GFP_TRANSHUGE_LIGHT | __GFP_NORETRY | > + __GFP_KSWAPD_RECLAIM; > huge_flags &= ~__GFP_MOVABLE; > huge_flags &= ~__GFP_COMP; > p = alloc_pages(huge_flags, HPAGE_PMD_ORDER); > @@ -1033,11 +1034,15 @@ int ttm_page_alloc_init(struct ttm_mem_global *glob, unsigned max_pages) > GFP_USER | GFP_DMA32, "uc dma", 0); > > ttm_page_pool_init_locked(&_manager->wc_pool_huge, > - GFP_TRANSHUGE & ~(__GFP_MOVABLE | __GFP_COMP), > + (GFP_TRANSHUGE_LIGHT | __GFP_NORETRY | > + __GFP_KSWAPD_RECLAIM) & > + ~(__GFP_MOVABLE | __GFP_COMP), > "wc huge", order); > > ttm_page_pool_init_locked(&_manager->uc_pool_huge, > - GFP_TRANSHUGE & ~(__GFP_MOVABLE | __GFP_COMP) > + (GFP_TRANSHUGE_LIGHT | __GFP_NORETRY | > + __GFP_KSWAPD_RECLAIM) & > + ~(__GFP_MOVABLE | __GFP_COMP) > , "uc huge", order); > > _manager->options.max_size = max_pages; > diff --git a/drivers/gpu/drm/ttm/ttm_page_alloc_dma.c b/drivers/gpu/drm/ttm/ttm_page_alloc_dma.c > index 291b04213ec5..5a551158c289 100644 > --- a/drivers/gpu/drm/ttm/ttm_page_alloc_dma.c > +++ b/drivers/gpu/drm/ttm/ttm_page_alloc_dma.c > @@ -910,7 +910,8 @@ static gfp_t ttm_dma_pool_gfp_flags(struct ttm_dma_tt *ttm_dma, bool huge) > gfp_flags |= __GFP_ZERO; > > if (huge) { > - gfp_flags |= GFP_TRANSHUGE; > + gfp_flags |= GFP_TRANSHUGE_LIGHT | __GFP_NORETRY | > + __GFP_KSWAPD_RECLAIM; > gfp_flags &= ~__GFP_MOVABLE; > gfp_flags &= ~__GFP_COMP; > }