From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932640AbeARQtL (ORCPT ); Thu, 18 Jan 2018 11:49:11 -0500 Received: from mail-cys01nam02on0070.outbound.protection.outlook.com ([104.47.37.70]:52635 "EHLO NAM02-CY1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S932507AbeARQtH (ORCPT ); Thu, 18 Jan 2018 11:49:07 -0500 Authentication-Results: spf=none (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; lists.freedesktop.org; dkim=none (message not signed) header.d=none;lists.freedesktop.org; dmarc=permerror action=none header.from=amd.com; From: Andrey Grodzovsky To: , , , CC: , Andrey Grodzovsky Subject: [PATCH 2/4] oom: take per file badness into account Date: Thu, 18 Jan 2018 11:47:50 -0500 Message-ID: <1516294072-17841-3-git-send-email-andrey.grodzovsky@amd.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1516294072-17841-1-git-send-email-andrey.grodzovsky@amd.com> References: <1516294072-17841-1-git-send-email-andrey.grodzovsky@amd.com> MIME-Version: 1.0 Content-Type: text/plain X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-HT: Tenant X-Forefront-Antispam-Report: CIP:165.204.84.17;IPV:NLI;CTRY:US;EFV:NLI;SFV:NSPM;SFS:(10009020)(39860400002)(396003)(376002)(346002)(39380400002)(2980300002)(428003)(189003)(199004)(110136005)(54906003)(8936002)(105586002)(2906002)(104016004)(81166006)(4326008)(53936002)(81156014)(106466001)(8676002)(16586007)(6666003)(51416003)(2950100002)(76176011)(356003)(316002)(7696005)(53416004)(97736004)(26005)(36756003)(77096007)(5660300001)(50226002)(72206003)(68736007)(48376002)(305945005)(50466002)(2201001)(47776003)(478600001)(86362001)(2101003);DIR:OUT;SFP:1101;SCL:1;SRVR:CY4PR12MB1447;H:SATLEXCHOV02.amd.com;FPR:;SPF:None;PTR:InfoDomainNonexistent;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;CO1NAM03FT027;1:VyPpZz6ytQnhDYHQz0+0+Vf6otJgO1rqWaw88xmJNUeWHLcfurJaAElIM4j33sVDhrSQC+CS4rnVzUymfneCPbP7GWcBaSOuQxlphWWHC6oogjvDae113swuTHjEcywW X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: d5e2e28e-4bc6-4d7f-95db-08d55e9362a6 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(7020095)(4652020)(5600026)(4604075)(2017052603307)(7153060);SRVR:CY4PR12MB1447; X-Microsoft-Exchange-Diagnostics: 1;CY4PR12MB1447;3:1pfviwvWhca743o9S/t9UfhUEUVYV7X85SL/3uafwLjVtFzQ7J1r/YJceGUwVBZrUosfPUtPI5YDMv3g0nFzmFPDYRq1aiXAkPHJ20CvP4n4lG1LP1hIv72B21CWHPBXWtiN7XRsk2uJMijgEUd2gSuH4865cUZ/DV35sqANVMTNUORRdUf3fOfzUBjwOTmViF/JYv+FhUcyLTiGJU5JZotA4HsYYQw1suzFy3/8GmNW//2qJbHtEIuKgtR2jzUFe+o0TUxytIC9bnQrILfLFHMj8l9b7MOSRMk56yAqFKFc+ONUlCf4Mq8Ug543O2Mi7G+DsrOeDgJ9RJW6hUYUj+hiyMTk9G4fT1LTrIO4vTY=;25:tTHyiAwDGC1ej/8Su9PnGY2VCfRs3szIia0ny8gTwAU4CClEH9B9cAzjeysW25XXhoFj6dIn9Zgq8IUpeEwLA0Ctf9AplPmzEGEZywY8N5bklscCjf0iMkuOXStfyLMgudAjcZntLqRK8W3CCulCJKeBi2fumyUcr1GbKe8zRyB7GTNE6EhnipD+Vo60US0K7QrcDWn6cgewONzR5z9Sq0kqHVxk/ALg6GxEgp5fSkbFu/sZpPdyAx+7RPszzQ9jzSBvdVzWBNTW1AiCJsEDQl+OfnvmD8e5Fp6iMnTnVTkFKhOUzZTwtM6r+iAR+67ja3h7NxuQ1P0pzrBJoLuTXQ== X-MS-TrafficTypeDiagnostic: CY4PR12MB1447: X-Microsoft-Exchange-Diagnostics: 1;CY4PR12MB1447;31:bS9MJ6pD3Qp2BOuoWhfYMAAbMRIFuVMlD6SwAzjNCxydPFWcE3Kd6fQON1g341HFbuCzA5E8UL2ClvVrPowiwjMhx78PFAHFdsXXiZY+qvTGQn5hHAyxY62k5L6+7smsXAuSpNGEwdZcxfoG+q90fgoOKRDA1Hl80neZu4Y03umFqV3HhnPbDahuXZ7ucIoGB56PuvRLFZVw96omzKJSd+osdWlpMyknO32VpKl/mPI=;20:DF+KXnfZfuxPPlYJPCw4MP9DXwcytCwYvkfwNKVt6kr8Yb1Nm6RoL5xF9kIR1fGPO6spmkLN7dUQyHUst0tsRPYP8ud0zcT5LE1mSajDem66l980ISFCiE3ahnWQGX6nzltfsjvL+reIVaWTkEeQjJShcIPGyEd9zdr7aPQv23ETyUEl7+enDtkZn4ipllRSuBzmE7ya+MNTfOZpgaTXEfA/9fvSSho02LtzSfzWE7Esc7kn0e65uvU88VQR5HpqzBO5DfDwUYB/sxRhbTapvIazocqHL3lCSUdLAoaxpp7QGEni9IW1WCTcIUrE39FfNZdIGEVJG8se7k7+6wyParrqqyUOwSqYko6czEjoiyAWOn1lhR3Yxenp8eZp4iUY+P6n0EftsZnArOKu5OdnKeMs081q5LzZf3CFhseDteJ1O05UDRj15WEp7FUwXP8JKEujUNtw553Jyaf9NGydeJvH/17AWrCxfjGe3hQQCv3YUS9kIlGaQZLUjqLs4y6e X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040470)(2401047)(8121501046)(5005006)(10201501046)(3231023)(2400064)(944501161)(3002001)(93006095)(93003095)(6055026)(6041268)(20161123562045)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123558120)(6072148)(201708071742011);SRVR:CY4PR12MB1447;BCL:0;PCL:0;RULEID:(100000803101)(100110400095);SRVR:CY4PR12MB1447; X-Microsoft-Exchange-Diagnostics: 1;CY4PR12MB1447;4:WUIC65TzDz6e/z6YsoY+0VpmL068gjuLrF7mwD0AJsrlnTHXuDEP27Bo8vNNmjP8fHUrRqnn7eRT8Mm2VBC5zCvKiZpeRoS1O5uD1Knd2glA2jLx1Dkdg+A+7nJCDAKZ+c169k3pSaxSJkCy4s7a+ftHFiAuKY2GWiezJZuhKPjGt7siAVjQknN+blBIIQFbbHNx/CluxTG8fmi8olNBQMugKZhfDoelj7KVaqvkXQsGbG1ORghSfGwNfnXVuyu/LuI4D5G/YVP3WxGZYYsc/bbYZHgJFK6NIxSC9UEsUoSi92xqim+LaqtZypLHYlBl X-Forefront-PRVS: 05568D1FF7 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;CY4PR12MB1447;23:OOyGliPsok45YgSBA+gYSf8vZXYyBH+Qwc4NT2ptp?= =?us-ascii?Q?zr7IqmEDFGRLhpAaRLNkUtY/38ndlkSRcb8MRT7r9nVzjKRJeDntBKsE5UyQ?= =?us-ascii?Q?0uX36zqa/jWXHUj0GxFPiiiiti/c6V/ShghaXSpFfRieYoLV0F8/m0AJUU93?= =?us-ascii?Q?mAfgC+mQfz+enaH3PgCgkGvfPvGQzmQdXCRkTtp0r07chs2UOw8a6TIoB4j/?= =?us-ascii?Q?qhd1hGk+Zu6LXmvM0xmpVNAAbkUqqjQ/bwPysU5Z0seSVmRxcPPzS1PCM6t7?= =?us-ascii?Q?ySIruuvffo49t4L+93SwmcRbSw6vil4IcUhy097l2OXoWnT5oCMtupXj85A5?= =?us-ascii?Q?AJZ70IveKsIWcUJRkUJ+3m3y/2dVBpmiFmiYHcnUDmfV+tKytMZhsiqBcQvN?= =?us-ascii?Q?G+BVVXvC3c69vK1q9GmwlMeBX7nx6IQUp2RmXXlHHQwuGchC7oIdL3K9oO7W?= =?us-ascii?Q?VweP/B2aclaUriay1Srvk4/vmWZ2bWlFbK8vrYluO2ZxtKaVwCTuq9LWhKgi?= =?us-ascii?Q?fUCUje8GSEtHm4eNJC5N0scdrgLLXvwj2zylrzQcpan+Myp18QgDfpeU7h6l?= =?us-ascii?Q?i8vusy1kLHRG7eRMKmjiBXX6saDe4hvz+UPfAoqP9V1bCwco6lSzW7mpp1ed?= =?us-ascii?Q?JiCilaiaaKkc9vGNR3+mWSLfLUXi9USd9gLDEQtPNfx8g74WZeOIh4q9cQ3c?= =?us-ascii?Q?zbzzFVuZfb8AdjtxWVfic95GyDg515rNCLYA4cbymmEycQhOdt33JCOh3Y4e?= =?us-ascii?Q?VrqK6bhG/pPULh4V75EA1iZoT29rT8QX9zwXuGFaWYyFIk/qjoPhosvLb9tL?= =?us-ascii?Q?96nmRrCWLfZCDBue2E5Bf6+BZRrdDWBf2g60XFuMtUoqsYSGLzx6/0ncA6he?= =?us-ascii?Q?yXo7PEA7XVU+bOPekMN8U8EteDxkxPzLFrmrNCpZ0Ji9hwvES0Ag/hmIwseK?= =?us-ascii?Q?fhG9c7uQZYX4B+whgK8BMnjsPHtgPfK/X3isXB29TCZZHxdDiJguuEfpXaXh?= =?us-ascii?Q?gS4c79cBZy+8+3l8h2mhnpLRNgZbk6I/N60x+ManpSmjj+VVMr4KTeOWfNbo?= =?us-ascii?Q?GHHpcscTH5cJDRnNXiDiezV/kZU?= X-Microsoft-Exchange-Diagnostics: 1;CY4PR12MB1447;6:AhVGFT0x6uHVHO05e6LZUJqAlAr3fMeldz9xjESCwkw+pvYfkfgCoIIe4hDFLCmWmLHUQotiosPYsNuG+6LDpWF415GE7OYEssdSdrt/YzdEjV8VtReDPT1Xtbr2UAjVLQ8p1mtEbFKtpd93KcmXPBzJYv40qb1R2zd0KqCq8uclGpP6UmDMqHErI2zcizqr9zrxnfYIcPG8eCdimBZPEH/pzEcIwwDT7waMPl1EHbtoZitTUwavciVOUzN/7HYl1mjLlODCM6RSTpboETUCaeNK69vq8WtSFYj/QLtXUU7YGYM3j5ctWyw/Xy5OwPFmUT/Fzgd8YyN/pGwZyZAr4YTRcJkbdw/Q+sAMgKugm8U=;5:HJTNI0ZWSkBFUsGJ7ydlKyBwecKyRcr34lYIElP20X0/FGSlV8ctT8HHuZtjJMcLP08xgcbJ2naYWdZPIt/jwYNh07xjVFWHl24gZ+h0jt3UaL2O1y2zfAPyD6YN7b9+W3U9oWF/RCgNcaABWv0ujE8Axr10wyf73RRf8Q0jEek=;24:arIUoTeTPd2BqcwpjZ/PGTnp9Hyxd8kF8LPRib3SdvCsqUDXS/h38tJK/yoAo1UxUYt5tkmyiliuKVie1MPv10H8645vgwH1ykik6PD3ndc=;7:gxWTVl7yMEy5AGal5lIuR7qHYgdrPfjW+VqgtpcI/hH7oRAAiyTxs3g0c9msSQFUStmhHcJ2M/lt0zVPvLcjh97aJHtlvKiNo7ZcDB89NSE1y85BqpOCv+mgQCRG2GIZeW8uIuSaupsHNcncOKrktd/GUXrZe9rORa11bDH+LFO/U7ZuqVJFeD74NNk5N++1XtetUEby8JPa+nOUdTwateSW8XTih/Q4+98N2HvB6hVyeuAeolzY2ifnWEKVKttk SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;CY4PR12MB1447;20:US6S/GR/TWyckluOcsgbfVNHRY4NiXcJ8TSCGRw/24R5nvhi1UrKOIWp34WjFxDXmwHZQnj60U3FYWiLGrY8qU+Ev1soQR49J9svQ3PSTXoZO02a1ROCGJH7EkIW+MSBAmbP0jlu9CHf5afm7ONoWlgyJo7vj6t06KgZ+s2xwHb+jE83UPL3AFA1zgXJOI0gVvps8ynhD6zjU7v7vpbvAyN+SULQUjyHmbCZhW1+EyLyYjKhzSjMwZae6oCpc9XG X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Jan 2018 16:49:04.9206 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: d5e2e28e-4bc6-4d7f-95db-08d55e9362a6 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXCHOV02.amd.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR12MB1447 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Try to make better decisions which process to kill based on per file OOM badness Signed-off-by: Andrey Grodzovsky --- mm/oom_kill.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/mm/oom_kill.c b/mm/oom_kill.c index 29f8555..825ed52 100644 --- a/mm/oom_kill.c +++ b/mm/oom_kill.c @@ -49,6 +49,8 @@ #define CREATE_TRACE_POINTS #include +#include + int sysctl_panic_on_oom; int sysctl_oom_kill_allocating_task; int sysctl_oom_dump_tasks = 1; @@ -182,6 +184,21 @@ static bool is_dump_unreclaim_slabs(void) } /** + * oom_file_badness - add per file badness + * @points: pointer to summed up badness points + * @file: tasks open file + * @n: file descriptor id (unused) + */ +static int oom_file_badness(const void *points, struct file *file, unsigned n) +{ + if (file->f_op->oom_file_badness) + *((long *)points) += file->f_op->oom_file_badness(file); + + return 0; +} + + +/** * oom_badness - heuristic function to determine which candidate task to kill * @p: task struct of which task we should calculate * @totalpages: total present RAM allowed for page allocation @@ -222,6 +239,12 @@ unsigned long oom_badness(struct task_struct *p, struct mem_cgroup *memcg, */ points = get_mm_rss(p->mm) + get_mm_counter(p->mm, MM_SWAPENTS) + mm_pgtables_bytes(p->mm) / PAGE_SIZE; + + /* + * Add how much memory a task uses in opened files, e.g. device drivers. + */ + iterate_fd(p->files, 0, oom_file_badness, &points); + task_unlock(p); /* -- 2.7.4 From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pf0-f199.google.com (mail-pf0-f199.google.com [209.85.192.199]) by kanga.kvack.org (Postfix) with ESMTP id B807D6B0260 for ; Thu, 18 Jan 2018 11:49:08 -0500 (EST) Received: by mail-pf0-f199.google.com with SMTP id u16so18411082pfh.7 for ; Thu, 18 Jan 2018 08:49:08 -0800 (PST) Received: from NAM02-CY1-obe.outbound.protection.outlook.com (mail-cys01nam02on0055.outbound.protection.outlook.com. [104.47.37.55]) by mx.google.com with ESMTPS id u3si6993558pfh.248.2018.01.18.08.49.07 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 18 Jan 2018 08:49:07 -0800 (PST) From: Andrey Grodzovsky Subject: [PATCH 2/4] oom: take per file badness into account Date: Thu, 18 Jan 2018 11:47:50 -0500 Message-ID: <1516294072-17841-3-git-send-email-andrey.grodzovsky@amd.com> In-Reply-To: <1516294072-17841-1-git-send-email-andrey.grodzovsky@amd.com> References: <1516294072-17841-1-git-send-email-andrey.grodzovsky@amd.com> MIME-Version: 1.0 Content-Type: text/plain Sender: owner-linux-mm@kvack.org List-ID: To: linux-kernel@vger.kernel.org, linux-mm@kvack.org, dri-devel@lists.freedesktop.org, amd-gfx@lists.freedesktop.org Cc: Christian.Koenig@amd.com, Andrey Grodzovsky Try to make better decisions which process to kill based on per file OOM badness Signed-off-by: Andrey Grodzovsky --- mm/oom_kill.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/mm/oom_kill.c b/mm/oom_kill.c index 29f8555..825ed52 100644 --- a/mm/oom_kill.c +++ b/mm/oom_kill.c @@ -49,6 +49,8 @@ #define CREATE_TRACE_POINTS #include +#include + int sysctl_panic_on_oom; int sysctl_oom_kill_allocating_task; int sysctl_oom_dump_tasks = 1; @@ -182,6 +184,21 @@ static bool is_dump_unreclaim_slabs(void) } /** + * oom_file_badness - add per file badness + * @points: pointer to summed up badness points + * @file: tasks open file + * @n: file descriptor id (unused) + */ +static int oom_file_badness(const void *points, struct file *file, unsigned n) +{ + if (file->f_op->oom_file_badness) + *((long *)points) += file->f_op->oom_file_badness(file); + + return 0; +} + + +/** * oom_badness - heuristic function to determine which candidate task to kill * @p: task struct of which task we should calculate * @totalpages: total present RAM allowed for page allocation @@ -222,6 +239,12 @@ unsigned long oom_badness(struct task_struct *p, struct mem_cgroup *memcg, */ points = get_mm_rss(p->mm) + get_mm_counter(p->mm, MM_SWAPENTS) + mm_pgtables_bytes(p->mm) / PAGE_SIZE; + + /* + * Add how much memory a task uses in opened files, e.g. device drivers. + */ + iterate_fd(p->files, 0, oom_file_badness, &points); + task_unlock(p); /* -- 2.7.4 -- 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 From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrey Grodzovsky Subject: [PATCH 2/4] oom: take per file badness into account Date: Thu, 18 Jan 2018 11:47:50 -0500 Message-ID: <1516294072-17841-3-git-send-email-andrey.grodzovsky@amd.com> References: <1516294072-17841-1-git-send-email-andrey.grodzovsky@amd.com> Mime-Version: 1.0 Content-Type: text/plain Return-path: In-Reply-To: <1516294072-17841-1-git-send-email-andrey.grodzovsky@amd.com> Sender: linux-kernel-owner@vger.kernel.org To: linux-kernel@vger.kernel.org, linux-mm@kvack.org, dri-devel@lists.freedesktop.org, amd-gfx@lists.freedesktop.org Cc: Christian.Koenig@amd.com, Andrey Grodzovsky List-Id: dri-devel@lists.freedesktop.org Try to make better decisions which process to kill based on per file OOM badness Signed-off-by: Andrey Grodzovsky --- mm/oom_kill.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/mm/oom_kill.c b/mm/oom_kill.c index 29f8555..825ed52 100644 --- a/mm/oom_kill.c +++ b/mm/oom_kill.c @@ -49,6 +49,8 @@ #define CREATE_TRACE_POINTS #include +#include + int sysctl_panic_on_oom; int sysctl_oom_kill_allocating_task; int sysctl_oom_dump_tasks = 1; @@ -182,6 +184,21 @@ static bool is_dump_unreclaim_slabs(void) } /** + * oom_file_badness - add per file badness + * @points: pointer to summed up badness points + * @file: tasks open file + * @n: file descriptor id (unused) + */ +static int oom_file_badness(const void *points, struct file *file, unsigned n) +{ + if (file->f_op->oom_file_badness) + *((long *)points) += file->f_op->oom_file_badness(file); + + return 0; +} + + +/** * oom_badness - heuristic function to determine which candidate task to kill * @p: task struct of which task we should calculate * @totalpages: total present RAM allowed for page allocation @@ -222,6 +239,12 @@ unsigned long oom_badness(struct task_struct *p, struct mem_cgroup *memcg, */ points = get_mm_rss(p->mm) + get_mm_counter(p->mm, MM_SWAPENTS) + mm_pgtables_bytes(p->mm) / PAGE_SIZE; + + /* + * Add how much memory a task uses in opened files, e.g. device drivers. + */ + iterate_fd(p->files, 0, oom_file_badness, &points); + task_unlock(p); /* -- 2.7.4