From patchwork Thu Jan 11 00:11:45 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Carlos Galo X-Patchwork-Id: 13516697 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 31D5AC4707B for ; Thu, 11 Jan 2024 00:13:46 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id B92966B009A; Wed, 10 Jan 2024 19:13:45 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id B42D56B009B; Wed, 10 Jan 2024 19:13:45 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id A0B586B009C; Wed, 10 Jan 2024 19:13:45 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 8C7906B009A for ; Wed, 10 Jan 2024 19:13:45 -0500 (EST) Received: from smtpin04.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 6403F160589 for ; Thu, 11 Jan 2024 00:13:45 +0000 (UTC) X-FDA: 81665106810.04.6E669ED Received: from mail-yw1-f202.google.com (mail-yw1-f202.google.com [209.85.128.202]) by imf21.hostedemail.com (Postfix) with ESMTP id C2B321C001E for ; Thu, 11 Jan 2024 00:13:43 +0000 (UTC) Authentication-Results: imf21.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=Qt1ffFNZ; spf=pass (imf21.hostedemail.com: domain of 3tjKfZQoKCMstr8259xr25x55x2v.t532z4BE-331Crt1.58x@flex--carlosgalo.bounces.google.com designates 209.85.128.202 as permitted sender) smtp.mailfrom=3tjKfZQoKCMstr8259xr25x55x2v.t532z4BE-331Crt1.58x@flex--carlosgalo.bounces.google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1704932023; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding:in-reply-to: references:dkim-signature; bh=Ds9QCoWJDqvAKdAL5vsJwiq6HddgkjsWTfVqUPaWffA=; b=Yel9whuIyMWFbFBbO8cdNElMIPib47qNFPK44/F81lI6KJ8MKKIJnNa7au6sclr259zEtn 7LYTRPrhu1/S88xu8bqUP8HowSreFD4d/FyG0FGjOpYE0ydtYZoWgH4gbt7WT8mZtSPkZn oohq/ZL4bzigfuITUpjT2dWfxu+WVIA= ARC-Authentication-Results: i=1; imf21.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=Qt1ffFNZ; spf=pass (imf21.hostedemail.com: domain of 3tjKfZQoKCMstr8259xr25x55x2v.t532z4BE-331Crt1.58x@flex--carlosgalo.bounces.google.com designates 209.85.128.202 as permitted sender) smtp.mailfrom=3tjKfZQoKCMstr8259xr25x55x2v.t532z4BE-331Crt1.58x@flex--carlosgalo.bounces.google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1704932023; a=rsa-sha256; cv=none; b=A6DMgH3+9PDnnvbxi6/6lWdvWvlCOhJ1KbxWqAHZd+3BexGJbRTm8ytoJHt12M3khE+Fv0 siUJA9lQ4+dwL9obhMCo63gIBrlkKl6enJaMi7mGbFDAFGfjDZd/QNPidbaWIerJFAF090 vLsu3wZrzMQyo6T2GDCaGgZtUP8xHwI= Received: by mail-yw1-f202.google.com with SMTP id 00721157ae682-5f53b4554b6so71946957b3.3 for ; Wed, 10 Jan 2024 16:13:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1704932023; x=1705536823; darn=kvack.org; h=cc:to:from:subject:message-id:mime-version:date:from:to:cc:subject :date:message-id:reply-to; bh=Ds9QCoWJDqvAKdAL5vsJwiq6HddgkjsWTfVqUPaWffA=; b=Qt1ffFNZW7kOW145x3TJPRq1HY8xj8dx6Li8Nxy1lbl2tysVRt4CIImYzUw5u6euRt W5jKq+1pLEWHuasdCIP1I9NzpvSe1k+MqS12CLwCuBYoEXJKVS93bOfVJDPBeICe50zE NJVWJiAsA8Q5atCiGZx5vcCpakYtoDyk3oFYBi/8UJ3StW+5S+8UrVR+u394+N7aYUob hiEukKIYmj2umUXZcRKUVI/o8sNlXe+4auQAuFKuZ6yc9MpzrgZuP3KhhOb3I8el2wSd wHDxWRhNE6kyqbykwDBiBDnHmgD6h79mJf7Cb5/lNpdHaHfgjntjvEQM5KDe2RhNe8yl hKCA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1704932023; x=1705536823; h=cc:to:from:subject:message-id:mime-version:date:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=Ds9QCoWJDqvAKdAL5vsJwiq6HddgkjsWTfVqUPaWffA=; b=s3LhTWNEChj7cG475ZcJOsWHy8P8snb5eQPdmM6QEJiPQ74G+nXpfGxeMmYQcjI8fa S39mwo731UIDpuCLfrLTUWYoiicTYS0VF1o/0n2jIqQzG2NbvZj+aWDwBx3V2IOjW83v r2IIHteT1UrmBNkznJZgB7Ua1qKs6IiLq1pc/WhlZf1cvGRuxfo6Dvg8S8oXOYGycmnO L+d9rtua1lseeVNurkEk9rxz52MIdCEelcMUn07CAe0R4tFeIOu0lXJdL81C1CtFa8v/ 6T1GaLE1+qvdnWSRBYJpA1v5bYbVZ3rsK3EdPQ6Ho9jX3nqI2ShAD1AtSx8dJsltTSfG VbnQ== X-Gm-Message-State: AOJu0YygD8xmH2XG2UnjiPo0qnp3o8NCkKJdUyP7m6+bBo7GD7SJUNLA C5ok1RCLYVXnEJt5xcJIgCIXL1is58vSfn6k9nJxhZY= X-Google-Smtp-Source: AGHT+IGOKg1xYoR1bvEZbVA0oOg05MDhta9buJB15J73ALyFEuJd6c88CvkB6II+CbHSVTov/cPiNwv2YMLAGnIB X-Received: from cgalo-android-cuttlefish.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:24f8]) (user=carlosgalo job=sendgmr) by 2002:a81:8941:0:b0:5d6:dda0:33b4 with SMTP id z62-20020a818941000000b005d6dda033b4mr229013ywf.4.1704932022930; Wed, 10 Jan 2024 16:13:42 -0800 (PST) Date: Thu, 11 Jan 2024 00:11:45 +0000 Mime-Version: 1.0 X-Mailer: git-send-email 2.43.0.275.g3460e3d667-goog Message-ID: <20240111001155.746-1-carlosgalo@google.com> Subject: [PATCH] mm: Update mark_victim tracepoints fields From: Carlos Galo To: rostedt@goodmis.org, akpm@linux-foundation.org, surenb@google.com Cc: android-mm@google.com, kernel-team@android.com, Carlos Galo , Masami Hiramatsu , Mathieu Desnoyers , linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org, linux-mm@kvack.org X-Rspamd-Queue-Id: C2B321C001E X-Rspam-User: X-Stat-Signature: snqkimy3wss3ji9y4zxbdugx5mtrd43z X-Rspamd-Server: rspam01 X-HE-Tag: 1704932023-288756 X-HE-Meta: U2FsdGVkX18QgnUSqhkesGeP0oiORhPq3xn0kTrE/qh5nPAcu6o7EfemcJ77wYBsz3IHLGp51+DMVwEClcEB4YPww/Z6FHPWESyftGG9Tls/0BNheXfJRmdju1JT35owqgihcuKGNezfGnVaV17xml/sBMzXs/gz2I3RLLJY7qKbb6oNTb3/gieUvP69Asoz7x1V0EuEJgNEeT8ATRD17Gbb+fK7wtzkMtzLcWGV8XYbVPYXfS36jqljzOdH/snqS/MZi68+BypMcCUFVyEIQR2kvXXuKbhbB2JQFpod4TzMoq4Ifx0/yz8+SjTSLRAq4shxtaDu8q60+pywwEB87KeSyTO1iAyRXzpV2tFhnhEdt/QXd+pPMYZizctcBb6sZ+XoGWxOESezm38cVxdMVE2wDFfN/B7yOB7rKq3+kovaMOta1LLOzFvOUrG+l3fY2vTTzht0tZwqnZt9KRXgcR5DqVHJfnF0W39OFoqdZ/hkOXG3BJ0xaEc6zObGAgIVWX6ACLZaCDlzKaHjcR/soeC7tOJ/gW10t6ioc+6emdK8D0T/oh3atsCC9xFiIenvGf06awlWOYDPtoAtnDg8bDSX1Jzir2jrEoUhg5xM9wsm02BkPuD73I4QpNyIpenp11ThmKe82OCUFBtSnHLf16r28aCtVgV24TVrjBzIWfuwikoVvPgxQ/4lCwIwwdnsvm7p0+gwJg4ihPzvudrABs7r8dk1S1M2bnOLlli7VEY/T5j6BITl6m3diPHZDe5nfPSurH1GGYZ6/AHzOcULo9HYEzoCdq6ncLkzpsm18Ny+7gqocZzpZo5v/2c7OFLWKZep2i2nG8alDxF8Fz6gXoXvUjsZXc1xTbYD1bkKCwgWzzi+oiCYIWx6M1SJ466Qn9W1PEf/cyscIV+4kLuHXhcTcPxoeQuKxYUXC6K3DTCoDwbVhAs+dRhbTA00Y25hoHlouCpXiXj8zDshWAI gxl0AmzL ymCqnfgxZRPG+3eprmEXxHndw/FB4pP2F3JimAWAAVYcwt3QVHvnpA0vv3lRcQh7xctMtnVlHKdbaOUUdA7m2MguvGMd7rT8DUlVNrXjThZx+QW6dgD0OSPRaNpW7+u9acnjk3CtgsM/ClVkfRn7U3IdwJJI1EKgf3rVbAAUhpEixvPWg8QG3dd0j68zyZEnTtluYtdMoyqQcuJ99P44fcL2C/E+qjzu5WcFHxpCE04We0hW6EbIMi6HuqbuQmBJIOaFaRoD+I254pmOM3kGdakQaSkhvrM2YVg4cxIyj48aavU1txqaY8rqNDBb/Cb18wdzhbe9z+Rxog+ZHHZmwzTklXE/FgmW6vguMukm9I5pI+NjNDr/muEXpz/8//2Pn2cNByA2vIxbsIO+cl+M0Ya5FD4nXZUx7c98wJkSzeXPAT4jjSwB2PFw3bb2SAkYO6sKSslG8KnRAOM9qMPxfoJX2UK7J7bfntkD/J9WOVpjL23iJHye4o62SYaz7yIQdQ58scrDF6ssQwiFBlsg774T+UPDLHKTUV2fke+UT7GpX613S4bww5zBdQi8ALr+ObE/z+sBzw6hlXqyr0d4gEZZOomo0YNU9H60v49xXbgv22oqXgSTAAGkDZIT1YT3NkMj+HO+WurOgKebdNke9wcVJJ80iwUWYY6KyoV6P1ipAGEIiAghA3oOE2baE2CZvRjfvvfmcKmGPwcD3U6xC5KkJ/UzA6vYtrklTOZzkf3Jqh0C6c3DlLNNhrkea8rNXblLT71it55jJjKCA50PvLuh4rMfYJFeS7YtohpJVMqfkMhG2iNGRnpcbzw== X-Bogosity: Ham, tests=bogofilter, spamicity=0.070238, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: The current implementation of the mark_victim tracepoint provides only the process ID (pid) of the victim process. This limitation poses challenges for userspace tools that need additional information about the OOM victim. The association between pid and the additional data may be lost after the kill, making it difficult for userspace to correlate the OOM event with the specific process. In order to mitigate this limitation, add the following fields: - UID In Android each installed application has a unique UID. Including the `uid` assists in correlating OOM events with specific apps. - Process Name (comm) Enables identification of the affected process. - OOM Score Allows userspace to get additional insights of the relative kill priority of the OOM victim. Cc: Steven Rostedt Cc: Andrew Morton Cc: Suren Baghdasaryan Signed-off-by: Carlos Galo --- include/trace/events/oom.h | 19 +++++++++++++++---- mm/oom_kill.c | 6 +++++- 2 files changed, 20 insertions(+), 5 deletions(-) base-commit: 0dd3ee31125508cd67f7e7172247f05b7fd1753a diff --git a/include/trace/events/oom.h b/include/trace/events/oom.h index 26a11e4a2c36..fb8a5d1b8a0a 100644 --- a/include/trace/events/oom.h +++ b/include/trace/events/oom.h @@ -72,19 +72,30 @@ TRACE_EVENT(reclaim_retry_zone, ); TRACE_EVENT(mark_victim, - TP_PROTO(int pid), + TP_PROTO(struct task_struct *task, uid_t uid), - TP_ARGS(pid), + TP_ARGS(task, uid), TP_STRUCT__entry( __field(int, pid) + __field(uid_t, uid) + __string(comm, task->comm) + __field(short, oom_score_adj) ), TP_fast_assign( - __entry->pid = pid; + __entry->pid = task->pid; + __entry->uid = uid; + __assign_str(comm, task->comm); + __entry->oom_score_adj = task->signal->oom_score_adj; ), - TP_printk("pid=%d", __entry->pid) + TP_printk("pid=%d uid=%u comm=%s oom_score_adj=%hd", + __entry->pid, + __entry->uid + __get_str(comm), + __entry->oom_score_adj, + ) ); TRACE_EVENT(wake_reaper, diff --git a/mm/oom_kill.c b/mm/oom_kill.c index 9e6071fde34a..0698c00c5da6 100644 --- a/mm/oom_kill.c +++ b/mm/oom_kill.c @@ -44,6 +44,7 @@ #include #include #include +#include #include #include "internal.h" @@ -753,6 +754,7 @@ static inline void queue_oom_reaper(struct task_struct *tsk) */ static void mark_oom_victim(struct task_struct *tsk) { + const struct cred *cred; struct mm_struct *mm = tsk->mm; WARN_ON(oom_killer_disabled); @@ -772,7 +774,9 @@ static void mark_oom_victim(struct task_struct *tsk) */ __thaw_task(tsk); atomic_inc(&oom_victims); - trace_mark_victim(tsk->pid); + cred = get_task_cred(tsk); + trace_mark_victim(tsk, cred->uid.val); + put_cred(cred); } /**