Received: by 10.213.65.68 with SMTP id h4csp522752imn; Wed, 4 Apr 2018 02:38:17 -0700 (PDT) X-Google-Smtp-Source: AIpwx49OQlAxbYnkRvE3jhloefjXhEB0IjVUF/6gnjlwAczr3xdVZlhYLn1jJRwa64gK0MQF2ilT X-Received: by 10.98.185.15 with SMTP id z15mr5735390pfe.199.1522834696952; Wed, 04 Apr 2018 02:38:16 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1522834696; cv=none; d=google.com; s=arc-20160816; b=joK9c4Cf6fs8i2uvZz+yOo6GAz8xLaVjG7x+IlGSqK1l7bGmEVfDIkheSOrBzPindp n/T5C44MkxPDq5UzzjrYkH+gx+EuozU1JVQt/6+Hh87XcGShgv2K6LtkRFg44Gradc/m 9X5gfO4nbqhZDxkGDxjop+iiu5vwrS8RWMF9kfO1JBlXqBO38XeJly8qB3QNQZCw2lfw d0ZT3Riwj+Zgd76BxOeVLas6nnKRR2uom4emgq5joR3buSEt/0Ec90fPy98XgWuCMfu2 wkVoye1/aBeobqGf1s7sD6r+SQQqzIvnth/cSEnCViBKSMHxXgo3HVJKQpUCOPBX58OE 5UhA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:date:cc:to:from:subject:message-id :arc-authentication-results; bh=rlSpOq6Ji0R17dLRaCQN8vUwKQoA+k1mPCQDIPp/zCw=; b=bCZLJOxrmVrqqvK8GQnQ4xUYk1SBeNkZfvJ+dMKmTmoOG49FtQ37Ig6XOZ1krgwkW8 q2OWJzhdnZVN42EU46VHan/dXNiVka+pbdWE0sPh3TOV/wu+xAUeRwQb4aCgxV/1gGaT KTfYHhMU+uVjXPMB+31ZwhTISuCMCEINxviIVKt2o3AUW2zFE5ft4BORV6yAv+sLqGAw Ph9ZMokU6AYxxVIpzHaCXN7YHTB2dTlr29f20DJ22TyogKTxJaGrdHfXfgftWaVUiVGf 8NRfkiBujC157+8GC7iJjRayqXlQSKRTWE5Y8L5hEa/hqznT4vF+GADKRvcJHldRSm0G 2czg== 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 m23si3443291pgc.672.2018.04.04.02.38.02; Wed, 04 Apr 2018 02:38:16 -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 S1751245AbeDDJg6 (ORCPT + 99 others); Wed, 4 Apr 2018 05:36:58 -0400 Received: from metis.ext.pengutronix.de ([85.220.165.71]:34127 "EHLO metis.ext.pengutronix.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750812AbeDDJgz (ORCPT ); Wed, 4 Apr 2018 05:36:55 -0400 Received: from weser.hi.pengutronix.de ([2001:67c:670:100:fa0f:41ff:fe58:4010]) by metis.ext.pengutronix.de with esmtp (Exim 4.89) (envelope-from ) id 1f3eqb-0001Uw-Ti; Wed, 04 Apr 2018 11:36:53 +0200 Message-ID: <1522834611.3779.3.camel@pengutronix.de> Subject: Re: [RFC] Per file OOM badness From: Lucas Stach To: Michel =?ISO-8859-1?Q?D=E4nzer?= , Michal Hocko Cc: linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Christian.Koenig@amd.com, linux-mm@kvack.org, amd-gfx@lists.freedesktop.org, Roman Gushchin Date: Wed, 04 Apr 2018 11:36:51 +0200 In-Reply-To: <3778a205-8b30-d147-b1f6-0a93d1de8beb@daenzer.net> References: <20180118170006.GG6584@dhcp22.suse.cz> <20180123152659.GA21817@castle.DHCP.thefacebook.com> <20180123153631.GR1526@dhcp22.suse.cz> <20180124092847.GI1526@dhcp22.suse.cz> <583f328e-ff46-c6a4-8548-064259995766@daenzer.net> <20180124110141.GA28465@dhcp22.suse.cz> <36b49523-792d-45f9-8617-32b6d9d77418@daenzer.net> <20180124115059.GC28465@dhcp22.suse.cz> <60e18da8-4d6e-dec9-7aef-ff003605d513@daenzer.net> <20180130102855.GY21609@dhcp22.suse.cz> <1522074988.1196.1.camel@pengutronix.de> <3778a205-8b30-d147-b1f6-0a93d1de8beb@daenzer.net> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.22.6-1+deb9u1 Mime-Version: 1.0 Content-Transfer-Encoding: 8bit X-SA-Exim-Connect-IP: 2001:67c:670:100:fa0f:41ff:fe58:4010 X-SA-Exim-Mail-From: l.stach@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: linux-kernel@vger.kernel.org Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Am Mittwoch, den 04.04.2018, 11:09 +0200 schrieb Michel Dänzer: > On 2018-03-26 04:36 PM, Lucas Stach wrote: > > Am Dienstag, den 30.01.2018, 11:28 +0100 schrieb Michal Hocko: > > > On Tue 30-01-18 10:29:10, Michel Dänzer wrote: > > > > On 2018-01-24 12:50 PM, Michal Hocko wrote: > > > > > On Wed 24-01-18 12:23:10, Michel Dänzer wrote: > > > > > > On 2018-01-24 12:01 PM, Michal Hocko wrote: > > > > > > > On Wed 24-01-18 11:27:15, Michel Dänzer wrote: > > > > > > > > > > [...] > > > > > > > > 2. If the OOM killer kills a process which is sharing BOs > > > > > > > > with another > > > > > > > > process, this should result in the other process dropping > > > > > > > > its references > > > > > > > > to the BOs as well, at which point the memory is released. > > > > > > > > > > > > > > OK. How exactly are those BOs mapped to the userspace? > > > > > > > > > > > > I'm not sure what you're asking. Userspace mostly uses a GEM > > > > > > handle to > > > > > > refer to a BO. There can also be userspace CPU mappings of the > > > > > > BO's > > > > > > memory, but userspace doesn't need CPU mappings for all BOs and > > > > > > only > > > > > > creates them as needed. > > > > > > > > > > OK, I guess you have to bear with me some more. This whole stack > > > > > is a > > > > > complete uknonwn. I am mostly after finding a boundary where you > > > > > can > > > > > charge the allocated memory to the process so that the oom killer > > > > > can > > > > > consider it. Is there anything like that? Except for the proposed > > > > > file > > > > > handle hack? > > > > > > > > How about the other way around: what APIs can we use to charge / > > > > "uncharge" memory to a process? If we have those, we can experiment > > > > with > > > > different places to call them. > > > > > > add_mm_counter() and I would add a new counter e.g. MM_KERNEL_PAGES. > > > > So is anyone still working on this? This is hurting us bad enough that > > I don't want to keep this topic rotting for another year. > > > > If no one is currently working on this I would volunteer to give the > > simple "just account private, non-shared buffers in process RSS" a > > spin. > > Sounds good. FWIW, I think shared buffers can also be easily handled by > accounting them in each process which has a reference. But that's more > of a detail, shouldn't make a big difference overall either way. Yes, both options to wither never account shared buffers or to always account them into every process having a reference should be pretty easy. Where it gets hard is when trying to account the buffer only in the last process holding a reference or something like this. For the OOM case I think it makes more sense to never account shared buffers, as this may lead to a process (like the compositor) to have its RSS inflated by shared buffers, rendering it the likely victim for the OOM killer/reaper, while killing this process will not lead to freeing of any shared graphics memory, at least if the clients sharing the buffer survive killing of the compositor. This opens up the possibility to "hide" buffers from the accounting by sharing them, but I guess it's still much better than the nothing we do today to account for graphics buffers. Regards, Lucas