Received: by 2002:ac0:98c7:0:0:0:0:0 with SMTP id g7-v6csp629460imd; Thu, 1 Nov 2018 03:03:33 -0700 (PDT) X-Google-Smtp-Source: AJdET5edhRztFPNvCMAYyD5vfk8yHQ1EQHXpANp1fbzsYp9Aw4+Lkw1QHJ80lj6IdkIsdm7/3Coa X-Received: by 2002:a17:902:9a07:: with SMTP id v7-v6mr6852571plp.14.1541066613525; Thu, 01 Nov 2018 03:03:33 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1541066613; cv=none; d=google.com; s=arc-20160816; b=o6aB+MLZCRg/XCYb2aiD7DmOrTEV/8t9xOQRNOz1vKgbFCLGoBve3uPtHlUfV8TLvC oxh7rMGJGAGdmQspnxr8p0yn0R8ezjq9QIBSC8RJu1HYl276Nc5GqzTTFnldT6YG+MTl eRaUqr9bdHM76GLelT/9a0h6wrNKAorBhn5dqOz15EglCJ6fjR45F2hXvqFISKXRWTtY uc6f4kqRK3MwMVKmTptRnBU5LAaMCU1WpC0YQAwGN36dRLqzArl+GmtZ82CSMIkhhJxn jlvE0YS5UVVdJkgFRY3bhozRQ2AIKzN92iW291Sax41RolXT70SYANhPKK+ucOocZlZx S+/A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:content-transfer-encoding :references:in-reply-to:date:cc:to:from:subject:message-id; bh=cgpNREebS26QluNEcBhWOWh+PC204PltjNYeBbkO/tQ=; b=iC2lKtk9pe9WNdCyzrmnCqKmfvC2rNVauLqvo+2wvk/DFvqKv+X6eppVJ/fKNdDYFG 1IqwZ9ud8EcyXG40ayZtJyZwI0rCVQxvHuq55yWG3dGJcaG+ltJK+diJmN/xB58sPEa+ g2niUjNSxrFW8DsBdsVI+3z43h1uP66ym6onNe6P3WdjXPVt7YQuLR9i20swtDVpmNgk Bzto98LFb3NIi1v3TnZdlERXyCSAhUJDyE0+wdi7GbC3ex17akFqjWTTZc/RDZlCwbgr 6+6/bVSG8F8h5CCefm9r818ERzWCTue3YIeQN6wgoWyi3RDQuR/yeF1NTP+mu/bJdDH3 CPKg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id u17-v6si19727468pga.200.2018.11.01.03.03.19; Thu, 01 Nov 2018 03:03:33 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728432AbeKATCl (ORCPT + 99 others); Thu, 1 Nov 2018 15:02:41 -0400 Received: from mailgw02.mediatek.com ([210.61.82.184]:5751 "EHLO mailgw02.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1728110AbeKATCl (ORCPT ); Thu, 1 Nov 2018 15:02:41 -0400 X-UUID: 231f544c196141b9b9c97d8430f4790c-20181101 X-UUID: 231f544c196141b9b9c97d8430f4790c-20181101 Received: from mtkcas08.mediatek.inc [(172.21.101.126)] by mailgw02.mediatek.com (envelope-from ) (mhqrelay.mediatek.com ESMTP with TLS) with ESMTP id 1889526776; Thu, 01 Nov 2018 18:00:13 +0800 Received: from mtkcas07.mediatek.inc (172.21.101.84) by mtkmbs03n2.mediatek.inc (172.21.101.182) with Microsoft SMTP Server (TLS) id 15.0.1395.4; Thu, 1 Nov 2018 18:00:12 +0800 Received: from [172.21.77.33] (172.21.77.33) by mtkcas07.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1395.4 via Frontend Transport; Thu, 1 Nov 2018 18:00:12 +0800 Message-ID: <1541066412.31492.10.camel@mtkswgap22> Subject: Re: [PATCH v3] mm/page_owner: use kvmalloc instead of kmalloc From: Miles Chen To: Michal Hocko CC: Andrew Morton , Joe Perches , Matthew Wilcox , , , , , Date: Thu, 1 Nov 2018 18:00:12 +0800 In-Reply-To: <20181031114107.GM32673@dhcp22.suse.cz> References: <1540790176-32339-1-git-send-email-miles.chen@mediatek.com> <20181029080708.GA32673@dhcp22.suse.cz> <20181029081706.GC32673@dhcp22.suse.cz> <1540862950.12374.40.camel@mtkswgap22> <20181030060601.GR32673@dhcp22.suse.cz> <1540882551.23278.12.camel@mtkswgap22> <20181030081537.GV32673@dhcp22.suse.cz> <1540975637.10275.10.camel@mtkswgap22> <20181031101501.GL32673@dhcp22.suse.cz> <1540981182.16084.1.camel@mtkswgap22> <20181031114107.GM32673@dhcp22.suse.cz> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.2.3-0ubuntu6 Content-Transfer-Encoding: 7bit MIME-Version: 1.0 X-TM-SNTS-SMTP: 6423753B92B0DDE292E4BBE4CD6C9323F6C0E2A3901B41243E62C9671074546A2000:8 X-MTK: N Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, 2018-10-31 at 12:41 +0100, Michal Hocko wrote: > On Wed 31-10-18 18:19:42, Miles Chen wrote: > > On Wed, 2018-10-31 at 11:15 +0100, Michal Hocko wrote: > > > On Wed 31-10-18 16:47:17, Miles Chen wrote: > > > > On Tue, 2018-10-30 at 09:15 +0100, Michal Hocko wrote: > > > > > On Tue 30-10-18 14:55:51, Miles Chen wrote: > > > > > [...] > > > > > > It's a real problem when using page_owner. > > > > > > I found this issue recently: I'm not able to read page_owner information > > > > > > during a overnight test. (error: read failed: Out of memory). I replace > > > > > > kmalloc() with vmalloc() and it worked well. > > > > > > > > > > Is this with trimming the allocation to a single page and doing shorter > > > > > than requested reads? > > > > > > > > > > > > I printed out the allocate count on my device the request count is <= > > > > 4096. So I tested this scenario by trimming the count to from 4096 to > > > > 1024 bytes and it works fine. > > > > > > > > count = count > 1024? 1024: count; > > > > > > > > It tested it on both 32bit and 64bit kernel. > > > > > > Are you saying that you see OOMs for 4k size? > > > > > yes, because kmalloc only use normal memor, not highmem + normal memory > > I think that's why vmalloc() works. > > Can I see an OOM report please? I am especially interested that 1k > doesn't cause the problem because there shouldn't be that much of a > difference between the two. Larger allocations could be a result of > memory fragmentation but 1k vs. 4k to make a difference really seems > unexpected. > You're right. I pulled out the log and found that the allocation fail is for order=4. I found that the if I do the read on the device, the read count is <= 4096; if I do the read by 'adb pull' from my host PC, the read count becomes 65532. (I'm working on a android device) The overnight test used 'adb pull' command, so allocation fail occurred because of the large read count and the arbitrary size allocation design of page_owner. That also explains why vmalloc() works. I did a test today, the only code changed is to clamp to read count to PAGE_SIZE and it worked well. Maybe we can solve this issue by just clamping the read count. count = count > PAGE_SIZE ? PAGE_SIZE : count; Here is the log: <4>[ 261.841770] (0)[2880:sync svc 43]sync svc 43: page allocation failure: order:4, mode:0x24040c0 <4>[ 261.841815]-(0)[2880:sync svc 43]CPU: 0 PID: 2880 Comm: sync svc 43 Tainted: G W O 4.4.146+ #16 <4>[ 261.841825]-(0)[2880:sync svc 43]Hardware name: Generic DT based system <4>[ 261.841834]-(0)[2880:sync svc 43]Backtrace: <4>[ 261.841844]-(0)[2880:sync svc 43][] (dump_backtrace) from [] (show_stack+0x18/0x1c) <4>[ 261.841866]-(0)[2880:sync svc 43] r6:60030013 r5:c123d488 r4:00000000 r3:dc8ba692 <4>[ 261.841880]-(0)[2880:sync svc 43][] (show_stack) from [] (dump_stack+0x94/0xa8) <4>[ 261.841892]-(0)[2880:sync svc 43][] (dump_stack) from [] (warn_alloc_failed+0x108/0x148) <4>[ 261.841905]-(0)[2880:sync svc 43] r6:00000000 r5:024040c0 r4:c1204948 r3:dc8ba692 <4>[ 261.841919]-(0)[2880:sync svc 43][] (warn_alloc_failed) from [] (__alloc_pages_nodemask+0xa08/0xbd8) <4>[ 261.841929]-(0)[2880:sync svc 43] r3:0000000f r2:00000000 <4>[ 261.841939]-(0)[2880:sync svc 43] r8:0000002f r7:00000004 r6:dbb7a000 r5:024040c0 <4>[ 261.841953]-(0)[2880:sync svc 43][] (__alloc_pages_nodemask) from [] (alloc_kmem_pages+0x18/0x20) <4>[ 261.841963]-(0)[2880:sync svc 43] r10:c0286560 r9:c027b348 r8:0000fff8 r7:00000004 <4>[ 261.841978]-(0)[2880:sync svc 43][] (alloc_kmem_pages) from [] (kmalloc_order_trace+0x2c/0xec)