From patchwork Fri Mar 8 18:43:05 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Suren Baghdasaryan X-Patchwork-Id: 10845319 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 86B9114E1 for ; Fri, 8 Mar 2019 18:43:26 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 737D82FDE4 for ; Fri, 8 Mar 2019 18:43:26 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 670382FE20; Fri, 8 Mar 2019 18:43:26 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-10.5 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE, USER_IN_DEF_DKIM_WL autolearn=ham version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 8B65B2FDE4 for ; Fri, 8 Mar 2019 18:43:25 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 1C6168E0004; Fri, 8 Mar 2019 13:43:24 -0500 (EST) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 17A658E0002; Fri, 8 Mar 2019 13:43:24 -0500 (EST) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 03D028E0004; Fri, 8 Mar 2019 13:43:23 -0500 (EST) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-io1-f71.google.com (mail-io1-f71.google.com [209.85.166.71]) by kanga.kvack.org (Postfix) with ESMTP id CC0AC8E0002 for ; Fri, 8 Mar 2019 13:43:23 -0500 (EST) Received: by mail-io1-f71.google.com with SMTP id r21so16315648ioa.13 for ; Fri, 08 Mar 2019 10:43:23 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:dkim-signature:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=KOFnefpWm/MGJVRwB1q3IBuYjFO05z5JkA9pY57L9o8=; b=WjyYOxwzorRI4vuTBBC3Udq7m7jX1Nwr4DMcDYhCFgEzai/k8b05uMzvi6j7a1w8TF wwca0BRTMtbdnTctfBWRbrPLo1JjIKJeJMP8/8hob6eLxYisWLtCh2I4+irHoZhK0/md e+ImtWASSEvP7b48OamUXHMTU3nHsvoZSEt7KYCjvJVG6AY0in+/zmnrXhvaUQrfNTFj 6wA5Zfda9dSJn+PYQHG+YKFK1KZkBC4viDCUASoV/S4oMOOY8/GhwQ+UseTH8ha2tWtN TeByO4EbR2ICIZXqBsXL7/+cQKH4Fn7uoTlCAr0tTrUbHeNRKpdDJ/99QdcvPaJy9NNq tfRg== X-Gm-Message-State: APjAAAWQ1Y0StftjOyarPMo0Sd7YzfZSu6fFzrMBBa6krhwMJoPCt3Ri sN+oYNAK3w6ng9NAnNYd9fVlbvC8IUz1W07UumI1dFGmMJnwXrdCZUqFS8u+D5u9S3IeXfHcTnC INv76BcHndeGM9qWMU4twTuHIYmDa18LwUhD5tW35toZ8YXV3+mBCCX+Fc0r1/E90TIAGOB/045 dBcbKN3d0hc8G2ezYbEFWR7FATf9Baa0AV152xGRxtDx413mKKKSG7+5oF25JGOrghCnT9JYle8 VL2WbzsP97DuKwFQ45rYOLNwin4jenf6CT2mDlwNj+fsAX98xCOZLuCJSWkpJ9yPgXcVYiFsCOE fXFShu4JYJphOzEVY7a8APxkoPtzHl/J4Ba7GB+PMPTH3iWQGYytYwflZV52egY4R/0mlIE4js2 / X-Received: by 2002:a5d:91d3:: with SMTP id k19mr6047785ior.258.1552070603568; Fri, 08 Mar 2019 10:43:23 -0800 (PST) X-Received: by 2002:a5d:91d3:: with SMTP id k19mr6047742ior.258.1552070602220; Fri, 08 Mar 2019 10:43:22 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1552070602; cv=none; d=google.com; s=arc-20160816; b=l8eUWRY4NjIXzi6cr+syV7ufQlCBXFf/rSusOVyUsrRXjpWVFuNNRsep0CzXH4fskp zjqh4hSxbo8k0D38AjjpZQ2dtei+TkqYypTC9pDvFPnoIPSTVnDOJSks/DEj1+8XaPSL dt6Wj8QiWCgA3vwz1gVdJKfAGLjstKJ5KGCtmmbULqLqQ9IS5vX7JV0snFDTNRL34jka 5/rthnWupCHvgTQFxyqAFgF+nyxvynZZKJz48mKfmag7g51g1TsCbVuxq4bm878Per1m 7lIQy+B5TtJoxNRnArLqKP2OZ/0mwle6Zz69lPenX0b+zsO9RC+LucLgGEXlM33GSszD sTug== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=cc:to:from:subject:references:mime-version:message-id:in-reply-to :date:dkim-signature; bh=KOFnefpWm/MGJVRwB1q3IBuYjFO05z5JkA9pY57L9o8=; b=g6pAIQYEXhP2TPdK2RBdqFemetTOdLf0mOvFDlPuXj3UKXqd/HyQSQjUEXPAn/dR1v VFiZXbMD8MYqrZBU0TjqECSd2nE7Ps4z5SwtsF1JwgXXfhpVIz63+wgxGxmFC1+t/Jwx ge+TcK3SpfRznum3iSU+Dc+gKGbmONlB12OhpH55yxY1zs31EqKqVY3t7CLrqNteX3J4 MW4+u1lHcVTZ9Tjadw9JcQhUN3twuhD2Hhu4lZK/XeCECBU8qRTWA+/6oz0bOvNyZ/xN W9/lu/lgMj1pVgy6qIOlkWDXo2YXEaf5moy1lOBGaw7UDnAqyBB7zeBZcENhNuBkLIQa 0v/A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=Fq0xrXkG; spf=pass (google.com: domain of 3ybecxaykcc4ceboxlqyyqvo.mywvsxeh-wwufkmu.ybq@flex--surenb.bounces.google.com designates 209.85.220.73 as permitted sender) smtp.mailfrom=3ybeCXAYKCC4cebOXLQYYQVO.MYWVSXeh-WWUfKMU.YbQ@flex--surenb.bounces.google.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: from mail-sor-f73.google.com (mail-sor-f73.google.com. [209.85.220.73]) by mx.google.com with SMTPS id j24sor15105875itl.10.2019.03.08.10.43.22 for (Google Transport Security); Fri, 08 Mar 2019 10:43:22 -0800 (PST) Received-SPF: pass (google.com: domain of 3ybecxaykcc4ceboxlqyyqvo.mywvsxeh-wwufkmu.ybq@flex--surenb.bounces.google.com designates 209.85.220.73 as permitted sender) client-ip=209.85.220.73; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=Fq0xrXkG; spf=pass (google.com: domain of 3ybecxaykcc4ceboxlqyyqvo.mywvsxeh-wwufkmu.ybq@flex--surenb.bounces.google.com designates 209.85.220.73 as permitted sender) smtp.mailfrom=3ybeCXAYKCC4cebOXLQYYQVO.MYWVSXeh-WWUfKMU.YbQ@flex--surenb.bounces.google.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=date:in-reply-to:message-id:mime-version:references:subject:from:to :cc; bh=KOFnefpWm/MGJVRwB1q3IBuYjFO05z5JkA9pY57L9o8=; b=Fq0xrXkGnIBrB8IPGplA3ONIgs9/AtsDhXfa957pzUu8VveDvKt9hXCBFa4g03sXKf RfWWaxlEQ4HMi5vxnjFLw0BKcyO38p2v6BTsg3bUqecPc73aVEV+OsaDwDNDaCJH+wWy INLmlffLQotYNi+/k8wdjfNeG3pHvI1zRa3+65vy9XYgbxHRqsdmJIZ65avsqwaIYnCV +NEYwgx7MeOOuLV0XrUYK5/r0T2bYFqkh10ng3mN4+EvqUVSn8H/Zq8rxGvGY4cJDq1t SRBPt0IdkWFekzJX7pCy5JUaQRUXNXYgt9SSXeiLuvF1MmrTFVn6uK34PQ+Nv20lBiQ3 aQIA== X-Google-Smtp-Source: APXvYqzVQIDO3zH6/Mcc0ykLp0T9S36f2LzzA98NkiJ7Xxv2hG0pOuBW+mRWBRsSFt8RyW5EjF/qZ8iyxt4= X-Received: by 2002:a24:8088:: with SMTP id g130mr13087838itd.28.1552070601978; Fri, 08 Mar 2019 10:43:21 -0800 (PST) Date: Fri, 8 Mar 2019 10:43:05 -0800 In-Reply-To: <20190308184311.144521-1-surenb@google.com> Message-Id: <20190308184311.144521-2-surenb@google.com> Mime-Version: 1.0 References: <20190308184311.144521-1-surenb@google.com> X-Mailer: git-send-email 2.21.0.360.g471c308f928-goog Subject: [PATCH v5 1/7] psi: introduce state_mask to represent stalled psi states From: Suren Baghdasaryan To: gregkh@linuxfoundation.org Cc: tj@kernel.org, lizefan@huawei.com, hannes@cmpxchg.org, axboe@kernel.dk, dennis@kernel.org, dennisszhou@gmail.com, mingo@redhat.com, peterz@infradead.org, akpm@linux-foundation.org, corbet@lwn.net, cgroups@vger.kernel.org, linux-mm@kvack.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, kernel-team@android.com, Suren Baghdasaryan , Stephen Rothwell X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: X-Virus-Scanned: ClamAV using ClamSMTP The psi monitoring patches will need to determine the same states as record_times(). To avoid calculating them twice, maintain a state mask that can be consulted cheaply. Do this in a separate patch to keep the churn in the main feature patch at a minimum. This adds 4-byte state_mask member into psi_group_cpu struct which results in its first cacheline-aligned part becoming 52 bytes long. Add explicit values to enumeration element counters that affect psi_group_cpu struct size. Link: http://lkml.kernel.org/r/20190124211518.244221-4-surenb@google.com Signed-off-by: Suren Baghdasaryan Acked-by: Johannes Weiner Cc: Dennis Zhou Cc: Ingo Molnar Cc: Jens Axboe Cc: Li Zefan Cc: Peter Zijlstra Cc: Tejun Heo Signed-off-by: Andrew Morton Signed-off-by: Stephen Rothwell --- include/linux/psi_types.h | 9 ++++++--- kernel/sched/psi.c | 29 +++++++++++++++++++---------- 2 files changed, 25 insertions(+), 13 deletions(-) diff --git a/include/linux/psi_types.h b/include/linux/psi_types.h index 2cf422db5d18..762c6bb16f3c 100644 --- a/include/linux/psi_types.h +++ b/include/linux/psi_types.h @@ -11,7 +11,7 @@ enum psi_task_count { NR_IOWAIT, NR_MEMSTALL, NR_RUNNING, - NR_PSI_TASK_COUNTS, + NR_PSI_TASK_COUNTS = 3, }; /* Task state bitmasks */ @@ -24,7 +24,7 @@ enum psi_res { PSI_IO, PSI_MEM, PSI_CPU, - NR_PSI_RESOURCES, + NR_PSI_RESOURCES = 3, }; /* @@ -41,7 +41,7 @@ enum psi_states { PSI_CPU_SOME, /* Only per-CPU, to weigh the CPU in the global average: */ PSI_NONIDLE, - NR_PSI_STATES, + NR_PSI_STATES = 6, }; struct psi_group_cpu { @@ -53,6 +53,9 @@ struct psi_group_cpu { /* States of the tasks belonging to this group */ unsigned int tasks[NR_PSI_TASK_COUNTS]; + /* Aggregate pressure state derived from the tasks */ + u32 state_mask; + /* Period time sampling buckets for each state of interest (ns) */ u32 times[NR_PSI_STATES]; diff --git a/kernel/sched/psi.c b/kernel/sched/psi.c index 0e97ca9306ef..22c1505ad290 100644 --- a/kernel/sched/psi.c +++ b/kernel/sched/psi.c @@ -213,17 +213,17 @@ static bool test_state(unsigned int *tasks, enum psi_states state) static void get_recent_times(struct psi_group *group, int cpu, u32 *times) { struct psi_group_cpu *groupc = per_cpu_ptr(group->pcpu, cpu); - unsigned int tasks[NR_PSI_TASK_COUNTS]; u64 now, state_start; + enum psi_states s; unsigned int seq; - int s; + u32 state_mask; /* Snapshot a coherent view of the CPU state */ do { seq = read_seqcount_begin(&groupc->seq); now = cpu_clock(cpu); memcpy(times, groupc->times, sizeof(groupc->times)); - memcpy(tasks, groupc->tasks, sizeof(groupc->tasks)); + state_mask = groupc->state_mask; state_start = groupc->state_start; } while (read_seqcount_retry(&groupc->seq, seq)); @@ -239,7 +239,7 @@ static void get_recent_times(struct psi_group *group, int cpu, u32 *times) * (u32) and our reported pressure close to what's * actually happening. */ - if (test_state(tasks, s)) + if (state_mask & (1 << s)) times[s] += now - state_start; delta = times[s] - groupc->times_prev[s]; @@ -407,15 +407,15 @@ static void record_times(struct psi_group_cpu *groupc, int cpu, delta = now - groupc->state_start; groupc->state_start = now; - if (test_state(groupc->tasks, PSI_IO_SOME)) { + if (groupc->state_mask & (1 << PSI_IO_SOME)) { groupc->times[PSI_IO_SOME] += delta; - if (test_state(groupc->tasks, PSI_IO_FULL)) + if (groupc->state_mask & (1 << PSI_IO_FULL)) groupc->times[PSI_IO_FULL] += delta; } - if (test_state(groupc->tasks, PSI_MEM_SOME)) { + if (groupc->state_mask & (1 << PSI_MEM_SOME)) { groupc->times[PSI_MEM_SOME] += delta; - if (test_state(groupc->tasks, PSI_MEM_FULL)) + if (groupc->state_mask & (1 << PSI_MEM_FULL)) groupc->times[PSI_MEM_FULL] += delta; else if (memstall_tick) { u32 sample; @@ -436,10 +436,10 @@ static void record_times(struct psi_group_cpu *groupc, int cpu, } } - if (test_state(groupc->tasks, PSI_CPU_SOME)) + if (groupc->state_mask & (1 << PSI_CPU_SOME)) groupc->times[PSI_CPU_SOME] += delta; - if (test_state(groupc->tasks, PSI_NONIDLE)) + if (groupc->state_mask & (1 << PSI_NONIDLE)) groupc->times[PSI_NONIDLE] += delta; } @@ -448,6 +448,8 @@ static void psi_group_change(struct psi_group *group, int cpu, { struct psi_group_cpu *groupc; unsigned int t, m; + enum psi_states s; + u32 state_mask = 0; groupc = per_cpu_ptr(group->pcpu, cpu); @@ -480,6 +482,13 @@ static void psi_group_change(struct psi_group *group, int cpu, if (set & (1 << t)) groupc->tasks[t]++; + /* Calculate state mask representing active states */ + for (s = 0; s < NR_PSI_STATES; s++) { + if (test_state(groupc->tasks, s)) + state_mask |= (1 << s); + } + groupc->state_mask = state_mask; + write_seqcount_end(&groupc->seq); } From patchwork Fri Mar 8 18:43:06 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Suren Baghdasaryan X-Patchwork-Id: 10845321 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 4010A1515 for ; Fri, 8 Mar 2019 18:43:29 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 2CBD72FDE4 for ; Fri, 8 Mar 2019 18:43:29 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 20B342FE20; Fri, 8 Mar 2019 18:43:29 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-10.5 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE, USER_IN_DEF_DKIM_WL autolearn=ham version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id BEB482FDE4 for ; Fri, 8 Mar 2019 18:43:28 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 3E8D28E0005; Fri, 8 Mar 2019 13:43:27 -0500 (EST) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 3C9578E0002; Fri, 8 Mar 2019 13:43:27 -0500 (EST) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 2D8A88E0005; Fri, 8 Mar 2019 13:43:27 -0500 (EST) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-pg1-f200.google.com (mail-pg1-f200.google.com [209.85.215.200]) by kanga.kvack.org (Postfix) with ESMTP id DEB638E0002 for ; Fri, 8 Mar 2019 13:43:26 -0500 (EST) Received: by mail-pg1-f200.google.com with SMTP id e5so21126136pgc.16 for ; Fri, 08 Mar 2019 10:43:26 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:dkim-signature:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=bO9Ut6bvYRKsfb9hG438t2Q8GfNMLAbUhphxvMlnr+Y=; b=P2wxtCO5fRna/7QZI9e3fgkWF1yHR01hPejk2OolORw1i5loCVinK0KKY6v2at+F0z IUgZgq/4F8tfjVJvdJZ0bmTISVYobkM+GwoFEApK+jrj7zssCvDf6t8f+TjQOgcDOY1j 0m4l3/TGw8fr5Hp26+azmyBlQWapk5Qzed/aPSucpHZYgODRLUz6bOcDnpD5Xhp++jZd GI+TlsP7Zwzg+Ndt1/9JpSZPTLN9dYht58uTf9tPJMVqJIoRvnVsWSVD99uev0djpm5V wZTeoB2OHhduJExV5i2r4aimv9ssxxXtaGCxnQquN+yVdpBlnB2URDWbIWZbqkD1V9VM Nn1A== X-Gm-Message-State: APjAAAVWBogFU5njekGEY5phM2mnWZQL/mNLZpgfi06D3rDntiYnDGOm Az2xk4UiePoGm9TBoau7HLKF7tl8eyVXtDfMZSHZZKPwrY2vHtQ1DEuQO4zPqR3+ZxP0bd6Bhpf S8Qk2EjU2p47F7i9o81Vb1LSnh43rrwmERufWm265XoO0CXcQHwxZr6fEuTpky7Ns/uIFaXjJp5 7fLlb8Z7YF3p1mXi0m2UsZKnQHsLLBsqlVK9fQU9TZoPe5kqKlMbK3FZLVK8qW9T1CXbSvHJLwq Hh4D6d/XiPOf6THk1b5HD1P388Diw/0i331ycwcCpld0Kq6t9swFCJpTTa4lrkT4JmyAMfNVh8S 5O4onA0I6j7ZdWEIQgyfPYsdC3y92JGz1WGbd0FpaXE5OFNlWw0UG0DXX1NX/uuGNzIZfsI5fP5 6 X-Received: by 2002:a17:902:2a69:: with SMTP id i96mr20149801plb.58.1552070606596; Fri, 08 Mar 2019 10:43:26 -0800 (PST) X-Received: by 2002:a17:902:2a69:: with SMTP id i96mr20149735plb.58.1552070605682; Fri, 08 Mar 2019 10:43:25 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1552070605; cv=none; d=google.com; s=arc-20160816; b=hgzIoOAXTXJ32Wwd78V98wxRpdJ2jT0t2YuWV3ojZUXG7Fp/agdyBJk/PDWHUrlO8l 2UsrDrrlw5e9Yx47tLFIqPp+1TnBD3Browji9whRBw8XxJPpAeFsrFpmgNApJmDsdv1T BAxeBZW9OL+K9mRY0+sAriFz7Qjz4YEd18gIUruZj+wV/aOvgcqOo3TCMuRgw9D2qmor MENGGp2aCUGUkUX4e9SFt6ntnIuKSvWMIPAwthch81NUocrrgQI+PJgJV7CVAcqmnYqY OLBMttAU08C0qB9WrM0FpotPIP2rVgbhNADvBPRE6OZsX9x/PVmjH8hd3U5T3CLy+h6p CSEg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=cc:to:from:subject:references:mime-version:message-id:in-reply-to :date:dkim-signature; bh=bO9Ut6bvYRKsfb9hG438t2Q8GfNMLAbUhphxvMlnr+Y=; b=jG3CfYHWZ8lo/FXZRjFXpxDCjr9noWy84ZXOc4zxJ2O3s1WhAX08fVX//kA6PPnONK gV1UHgfEoF2J8j0IY4HD1OKjwmL4LCN08i/iuZn+/HE1pvXsXqgJbtLvfw1tN8Fnqe3e oKiWgOpuJa5nUaNgWrPi701LuiUJg7dz0vPSpGte6Cw5QbnMy8TdE/mS6MkdbwdxRc6Z h0qmxamH2d0raDyDY8Y8mUErUATSYVTaBXT4BXdUdmAH63nUaj1JsIckmS2lOZxbjfyK EgUWMb+O8Cao+SNQL3qHYGFRmmkiIXo+JuhKjf9QP1hB1p1xpF2OF+UzrDyufSGoYO+T QdZg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=Ddj5LQyj; spf=pass (google.com: domain of 3zbecxaykcdigifsbpuccuzs.qcazwbil-aayjoqy.cfu@flex--surenb.bounces.google.com designates 209.85.220.73 as permitted sender) smtp.mailfrom=3zbeCXAYKCDIgifSbPUccUZS.QcaZWbil-aaYjOQY.cfU@flex--surenb.bounces.google.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: from mail-sor-f73.google.com (mail-sor-f73.google.com. [209.85.220.73]) by mx.google.com with SMTPS id a7sor13790486plp.1.2019.03.08.10.43.25 for (Google Transport Security); Fri, 08 Mar 2019 10:43:25 -0800 (PST) Received-SPF: pass (google.com: domain of 3zbecxaykcdigifsbpuccuzs.qcazwbil-aayjoqy.cfu@flex--surenb.bounces.google.com designates 209.85.220.73 as permitted sender) client-ip=209.85.220.73; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=Ddj5LQyj; spf=pass (google.com: domain of 3zbecxaykcdigifsbpuccuzs.qcazwbil-aayjoqy.cfu@flex--surenb.bounces.google.com designates 209.85.220.73 as permitted sender) smtp.mailfrom=3zbeCXAYKCDIgifSbPUccUZS.QcaZWbil-aaYjOQY.cfU@flex--surenb.bounces.google.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=date:in-reply-to:message-id:mime-version:references:subject:from:to :cc; bh=bO9Ut6bvYRKsfb9hG438t2Q8GfNMLAbUhphxvMlnr+Y=; b=Ddj5LQyjlIjwrHP5ehK+oJ/v9fKavvSearbFSnK49AD0M0Ijda7ZsanGy74D80pufg Lgkcv8juSAkThYZJjtNfyaTS7N2zDclYu45eWjgibFFwaNK8ylyh0oB7kmipClxsLsWG cxV5JRBPuMfAr5RQ52u+RYzzNTQvS3pNMIth63F6imHd2Ft3RZ8Yp5NVHeLn/kPYvo0M fkk9E5iqllL6RJSI9Lsi+bUnPFigtvVlPOKMb7S0PbnrLOFx3egU9xt6UxWQIFUF+QJc InrzrowbvnHoW34yZXO0BbCSWS+Yn2NAKH9O/c9a5tz3tcc/HyTAjgeMNowOQwuAJCBJ tlUQ== X-Google-Smtp-Source: APXvYqw2C6wbweqasiF1cbPEq10gvpXR3nbBbTemia3F7+b5xQQZgTibnmAJlyRQEfHaibrTPeQ7I25CGVU= X-Received: by 2002:a17:902:8ec3:: with SMTP id x3mr6269298plo.54.1552070605443; Fri, 08 Mar 2019 10:43:25 -0800 (PST) Date: Fri, 8 Mar 2019 10:43:06 -0800 In-Reply-To: <20190308184311.144521-1-surenb@google.com> Message-Id: <20190308184311.144521-3-surenb@google.com> Mime-Version: 1.0 References: <20190308184311.144521-1-surenb@google.com> X-Mailer: git-send-email 2.21.0.360.g471c308f928-goog Subject: [PATCH v5 2/7] psi: make psi_enable static From: Suren Baghdasaryan To: gregkh@linuxfoundation.org Cc: tj@kernel.org, lizefan@huawei.com, hannes@cmpxchg.org, axboe@kernel.dk, dennis@kernel.org, dennisszhou@gmail.com, mingo@redhat.com, peterz@infradead.org, akpm@linux-foundation.org, corbet@lwn.net, cgroups@vger.kernel.org, linux-mm@kvack.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, kernel-team@android.com, Suren Baghdasaryan X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: X-Virus-Scanned: ClamAV using ClamSMTP psi_enable is not used outside of psi.c, make it static. Suggested-by: Andrew Morton Signed-off-by: Suren Baghdasaryan --- kernel/sched/psi.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/kernel/sched/psi.c b/kernel/sched/psi.c index 22c1505ad290..281702de9772 100644 --- a/kernel/sched/psi.c +++ b/kernel/sched/psi.c @@ -140,9 +140,9 @@ static int psi_bug __read_mostly; DEFINE_STATIC_KEY_FALSE(psi_disabled); #ifdef CONFIG_PSI_DEFAULT_DISABLED -bool psi_enable; +static bool psi_enable; #else -bool psi_enable = true; +static bool psi_enable = true; #endif static int __init setup_psi(char *str) { From patchwork Fri Mar 8 18:43:07 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Suren Baghdasaryan X-Patchwork-Id: 10845323 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id DCC9214E1 for ; Fri, 8 Mar 2019 18:43:32 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id C8B352FDE4 for ; Fri, 8 Mar 2019 18:43:32 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id BCD592FE20; Fri, 8 Mar 2019 18:43:32 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-10.5 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE, USER_IN_DEF_DKIM_WL autolearn=ham version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 199812FDE4 for ; Fri, 8 Mar 2019 18:43:32 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id C4C338E0006; Fri, 8 Mar 2019 13:43:30 -0500 (EST) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id BDB358E0002; Fri, 8 Mar 2019 13:43:30 -0500 (EST) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id A9FCA8E0006; Fri, 8 Mar 2019 13:43:30 -0500 (EST) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-pf1-f198.google.com (mail-pf1-f198.google.com [209.85.210.198]) by kanga.kvack.org (Postfix) with ESMTP id 66FD28E0002 for ; Fri, 8 Mar 2019 13:43:30 -0500 (EST) Received: by mail-pf1-f198.google.com with SMTP id h70so22996637pfd.11 for ; Fri, 08 Mar 2019 10:43:30 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:dkim-signature:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=OplnuXRZxId0pdfBC75FwRElAzJw95m6KFBlT8ZCwYA=; b=o1mPgSxigbnPVZFiGRNlP5WpNR3gXmJBIRt+NH8CsXYWOXeWMqV+UwePrO6OJPWEMR 3yxCF32KMWfbPjAe46pi57EuVthScwtlY3thQkCiOwuNlmfHN0RIy7uUAQNYUqeE44ZR 7N9zK70NrJTx9g4ze6kNIGQE1QCByNkI3hiodJciErL29YG0LHvtxSwuewGaqnpd9AVj 6i1cJSxjTu5AJOkeRKsrzsx3pIZ1YFhUwms0PK7Mi6xPVzxv44LO9QRWKMtO4TQXHoBA owY4vXDP4VNmgBU0R2iWwU7G2dSoKbAq7I25QMaFKol7PjcTxMtrJN7tWSqKpPfh4T32 q1mg== X-Gm-Message-State: APjAAAUARPKGu1HFkivKi3dgvu30vLKsHC2lpyvTn6qcCQ8AtDpppsEM 6CQQLXgg+XN4gaV+2HWeaDaBgMtsaj8ffNSzyboubE6CnuMklWxCV2hbo7YnE7B/y/snCNl/jwS Usv82mDs+k2urmthfYxeszk9LjgPUcThAv2a57agz1IhnnsKBd1mh7zRihprRYI5HZhb0Q9AMmk gd4+Q9obQQ2BpsX5MSXTiLenKH2EJ9x2vRSHHq9AvrXyAgtn+pxA93YZRmmPhm+irksCd1hBadb PuWYNzYaub3IvYo8RDT9Qo9inmaWMGhNDI2AlyMOU5Vx9ipOT4ZoK03K2LQunfv78lAsYbDtBe3 KWmAjr15wp4XGiZ3aw8R98cweqJEtYFzuVVqOtZpBUBf6Kkq0OuL/2HM9nxfXVkhQssPj/R4R48 F X-Received: by 2002:a63:5b43:: with SMTP id l3mr17894314pgm.298.1552070609997; Fri, 08 Mar 2019 10:43:29 -0800 (PST) X-Received: by 2002:a63:5b43:: with SMTP id l3mr17894250pgm.298.1552070608977; Fri, 08 Mar 2019 10:43:28 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1552070608; cv=none; d=google.com; s=arc-20160816; b=xuBPPGpEY2NURIXZFJgG2S2ngj1lQXVNsbO/08YWZd2XF5YW9hNscqJz3IhsLTSj8n pbmTcEUpxAd5/176gGkWM3cBsWBnKFknRC0DltzbQVxUUBw/+vFb3uQl5Sn/Z1cgsAI0 2mSiguUhtqbWVk6tuNQG8WUMwWwRAhAZDlOe/+eT5+mG/z0yshote+8rSQAep4O1grcn +JUrQNBq64icRttMi48tw42YINtnBxt7snyG+1AOntuOdTzjNpMUoCqGyl55zXiIHrCd cKF1kbxhjpA77FEHPoCd4CuZ5svIvW5AECpO1zz8JUcZNTIqK3xTOhU44F2rsvXZ+8eI XliA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=cc:to:from:subject:references:mime-version:message-id:in-reply-to :date:dkim-signature; bh=OplnuXRZxId0pdfBC75FwRElAzJw95m6KFBlT8ZCwYA=; b=tDc/yrzCNDb6cw7VFZjSN4IZmyrV8oafqvhdB9WK4PtoNuEL48oxy5yWzyrYHINcdU X48x9psOAMXA6VA72COKge7hVIyVvaKre4bVQOjqnLkGu9GVLCuOD57GdVPDc+LiwHEP 2CSQFoU9EW9otQlpf60woBopvzrODyI22IuHOKiPbvJqLktXMrNMMthLznkh8g7SZQIL bjUZWBXFF5H/P0/3ILWrFjWLS3De+mJjuA5oQOkXDzMFp8EmwzLKGI3u/g5QgzZXZN2Q T0ZXmZpJ4qwsZ05x81H8MtKv+LAwCAqn+J3Vsqbr8wl1koDFrxyLBtL6XTbrCjT8VPHC Cfsw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=eLdg3v+n; spf=pass (google.com: domain of 30lecxaykcdujlivesxffxcv.tfdczelo-ddbmrtb.fix@flex--surenb.bounces.google.com designates 209.85.220.73 as permitted sender) smtp.mailfrom=30LeCXAYKCDUjliVeSXffXcV.TfdcZelo-ddbmRTb.fiX@flex--surenb.bounces.google.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: from mail-sor-f73.google.com (mail-sor-f73.google.com. [209.85.220.73]) by mx.google.com with SMTPS id i35sor13431056plg.40.2019.03.08.10.43.28 for (Google Transport Security); Fri, 08 Mar 2019 10:43:28 -0800 (PST) Received-SPF: pass (google.com: domain of 30lecxaykcdujlivesxffxcv.tfdczelo-ddbmrtb.fix@flex--surenb.bounces.google.com designates 209.85.220.73 as permitted sender) client-ip=209.85.220.73; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=eLdg3v+n; spf=pass (google.com: domain of 30lecxaykcdujlivesxffxcv.tfdczelo-ddbmrtb.fix@flex--surenb.bounces.google.com designates 209.85.220.73 as permitted sender) smtp.mailfrom=30LeCXAYKCDUjliVeSXffXcV.TfdcZelo-ddbmRTb.fiX@flex--surenb.bounces.google.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=date:in-reply-to:message-id:mime-version:references:subject:from:to :cc; bh=OplnuXRZxId0pdfBC75FwRElAzJw95m6KFBlT8ZCwYA=; b=eLdg3v+nnsix/WEq9cIQXxF6rEMUbk6o+EfOnyMexjGolm48oKpVO/ZfgvFBUMzUQq +8vWtIHjH805IaHbtRpGR/K6cynyhI1tTZWOu4AycWFX2cseASldHKW47GOWpa8LeseY VeXtviVvtYaVHJuAnbU9eXRYGSrsoV6ozdT0HNj3IblQaTeM66Fd9Wi12o4N/exY0QVS 6DziP/9QOuU3qVfJHxCJzF72/hSeY+YCyVPbHRPmCih1es7yMeURa5KNV84MCIL1FAtd pD7ba1BOE6DEusuV/JPafZp0iS2oMlOBLpfZXHW3PNCyQilkVG4SMnpJt8wT7I9epybu +2LQ== X-Google-Smtp-Source: APXvYqyZSrbIf8B+VZMd4cruZgcwhbXTSNL/bwNkHx2baqHUb4H43f2sWNVaIXkX2++kPQabzgw+hIYX7Ho= X-Received: by 2002:a17:902:7c93:: with SMTP id y19mr6384585pll.137.1552070608718; Fri, 08 Mar 2019 10:43:28 -0800 (PST) Date: Fri, 8 Mar 2019 10:43:07 -0800 In-Reply-To: <20190308184311.144521-1-surenb@google.com> Message-Id: <20190308184311.144521-4-surenb@google.com> Mime-Version: 1.0 References: <20190308184311.144521-1-surenb@google.com> X-Mailer: git-send-email 2.21.0.360.g471c308f928-goog Subject: [PATCH v5 3/7] psi: rename psi fields in preparation for psi trigger addition From: Suren Baghdasaryan To: gregkh@linuxfoundation.org Cc: tj@kernel.org, lizefan@huawei.com, hannes@cmpxchg.org, axboe@kernel.dk, dennis@kernel.org, dennisszhou@gmail.com, mingo@redhat.com, peterz@infradead.org, akpm@linux-foundation.org, corbet@lwn.net, cgroups@vger.kernel.org, linux-mm@kvack.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, kernel-team@android.com, Suren Baghdasaryan X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: X-Virus-Scanned: ClamAV using ClamSMTP Renaming psi_group structure member fields used for calculating psi totals and averages for clear distinction between them and trigger-related fields that will be added next. Signed-off-by: Suren Baghdasaryan --- include/linux/psi_types.h | 14 ++++++------- kernel/sched/psi.c | 41 ++++++++++++++++++++------------------- 2 files changed, 28 insertions(+), 27 deletions(-) diff --git a/include/linux/psi_types.h b/include/linux/psi_types.h index 762c6bb16f3c..4d1c1f67be18 100644 --- a/include/linux/psi_types.h +++ b/include/linux/psi_types.h @@ -69,17 +69,17 @@ struct psi_group_cpu { }; struct psi_group { - /* Protects data updated during an aggregation */ - struct mutex stat_lock; + /* Protects data used by the aggregator */ + struct mutex avgs_lock; /* Per-cpu task state & time tracking */ struct psi_group_cpu __percpu *pcpu; - /* Periodic aggregation state */ - u64 total_prev[NR_PSI_STATES - 1]; - u64 last_update; - u64 next_update; - struct delayed_work clock_work; + /* Running pressure averages */ + u64 avg_total[NR_PSI_STATES - 1]; + u64 avg_last_update; + u64 avg_next_update; + struct delayed_work avgs_work; /* Total stall times and sampled pressure averages */ u64 total[NR_PSI_STATES - 1]; diff --git a/kernel/sched/psi.c b/kernel/sched/psi.c index 281702de9772..4fb4d9913bc8 100644 --- a/kernel/sched/psi.c +++ b/kernel/sched/psi.c @@ -165,7 +165,7 @@ static struct psi_group psi_system = { .pcpu = &system_group_pcpu, }; -static void psi_update_work(struct work_struct *work); +static void psi_avgs_work(struct work_struct *work); static void group_init(struct psi_group *group) { @@ -173,9 +173,9 @@ static void group_init(struct psi_group *group) for_each_possible_cpu(cpu) seqcount_init(&per_cpu_ptr(group->pcpu, cpu)->seq); - group->next_update = sched_clock() + psi_period; - INIT_DELAYED_WORK(&group->clock_work, psi_update_work); - mutex_init(&group->stat_lock); + group->avg_next_update = sched_clock() + psi_period; + INIT_DELAYED_WORK(&group->avgs_work, psi_avgs_work); + mutex_init(&group->avgs_lock); } void __init psi_init(void) @@ -278,7 +278,7 @@ static bool update_stats(struct psi_group *group) int cpu; int s; - mutex_lock(&group->stat_lock); + mutex_lock(&group->avgs_lock); /* * Collect the per-cpu time buckets and average them into a @@ -319,7 +319,7 @@ static bool update_stats(struct psi_group *group) /* avgX= */ now = sched_clock(); - expires = group->next_update; + expires = group->avg_next_update; if (now < expires) goto out; if (now - expires >= psi_period) @@ -332,14 +332,14 @@ static bool update_stats(struct psi_group *group) * But the deltas we sample out of the per-cpu buckets above * are based on the actual time elapsing between clock ticks. */ - group->next_update = expires + ((1 + missed_periods) * psi_period); - period = now - (group->last_update + (missed_periods * psi_period)); - group->last_update = now; + group->avg_next_update = expires + ((1 + missed_periods) * psi_period); + period = now - (group->avg_last_update + (missed_periods * psi_period)); + group->avg_last_update = now; for (s = 0; s < NR_PSI_STATES - 1; s++) { u32 sample; - sample = group->total[s] - group->total_prev[s]; + sample = group->total[s] - group->avg_total[s]; /* * Due to the lockless sampling of the time buckets, * recorded time deltas can slip into the next period, @@ -359,22 +359,22 @@ static bool update_stats(struct psi_group *group) */ if (sample > period) sample = period; - group->total_prev[s] += sample; + group->avg_total[s] += sample; calc_avgs(group->avg[s], missed_periods, sample, period); } out: - mutex_unlock(&group->stat_lock); + mutex_unlock(&group->avgs_lock); return nonidle_total; } -static void psi_update_work(struct work_struct *work) +static void psi_avgs_work(struct work_struct *work) { struct delayed_work *dwork; struct psi_group *group; bool nonidle; dwork = to_delayed_work(work); - group = container_of(dwork, struct psi_group, clock_work); + group = container_of(dwork, struct psi_group, avgs_work); /* * If there is task activity, periodically fold the per-cpu @@ -391,8 +391,9 @@ static void psi_update_work(struct work_struct *work) u64 now; now = sched_clock(); - if (group->next_update > now) - delay = nsecs_to_jiffies(group->next_update - now) + 1; + if (group->avg_next_update > now) + delay = nsecs_to_jiffies( + group->avg_next_update - now) + 1; schedule_delayed_work(dwork, delay); } } @@ -546,13 +547,13 @@ void psi_task_change(struct task_struct *task, int clear, int set) */ if (unlikely((clear & TSK_RUNNING) && (task->flags & PF_WQ_WORKER) && - wq_worker_last_func(task) == psi_update_work)) + wq_worker_last_func(task) == psi_avgs_work)) wake_clock = false; while ((group = iterate_groups(task, &iter))) { psi_group_change(group, cpu, clear, set); - if (wake_clock && !delayed_work_pending(&group->clock_work)) - schedule_delayed_work(&group->clock_work, PSI_FREQ); + if (wake_clock && !delayed_work_pending(&group->avgs_work)) + schedule_delayed_work(&group->avgs_work, PSI_FREQ); } } @@ -649,7 +650,7 @@ void psi_cgroup_free(struct cgroup *cgroup) if (static_branch_likely(&psi_disabled)) return; - cancel_delayed_work_sync(&cgroup->psi.clock_work); + cancel_delayed_work_sync(&cgroup->psi.avgs_work); free_percpu(cgroup->psi.pcpu); } From patchwork Fri Mar 8 18:43:08 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Suren Baghdasaryan X-Patchwork-Id: 10845325 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id E12371515 for ; Fri, 8 Mar 2019 18:43:35 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id CD5342FDE4 for ; Fri, 8 Mar 2019 18:43:35 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id C0F8E2FE20; Fri, 8 Mar 2019 18:43:35 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-10.5 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE, USER_IN_DEF_DKIM_WL autolearn=ham version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 498DD2FDE4 for ; Fri, 8 Mar 2019 18:43:35 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id DAC2C8E0007; Fri, 8 Mar 2019 13:43:33 -0500 (EST) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id D836D8E0002; Fri, 8 Mar 2019 13:43:33 -0500 (EST) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id C24888E0007; Fri, 8 Mar 2019 13:43:33 -0500 (EST) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-qk1-f199.google.com (mail-qk1-f199.google.com [209.85.222.199]) by kanga.kvack.org (Postfix) with ESMTP id 970788E0002 for ; Fri, 8 Mar 2019 13:43:33 -0500 (EST) Received: by mail-qk1-f199.google.com with SMTP id z123so16852121qka.20 for ; Fri, 08 Mar 2019 10:43:33 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:dkim-signature:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=5zrp8mnWP3uBM/Fizzp8Po+aOUFVr9GhLUoLscT+qvI=; b=tFY1let2czH04lJ6HgNavAxYSqW3GtgyEKY8gcBvTWJaa7D2xGKv3Z1x4R1ofQrObn OV3OlaXvsCourH0DwlLDkD+h6iOqwXphFtjRImKgbTFkiPgHpacGF0kmH05UnuhRkASW qfBa7rz0BWpjqhvbcQ07Hmv7AuInYM5rjjQ1TL9G6HkR6de5USEVe0ukolJXvOvIn2Jh OeAw2mU6QifKyfEbzuvzl/6zshUq/6WEu48mGsD3uMSUoJrp2I4s9OUuSPK2sACa6Vpz u6FrOsEgY0EMxV4FBSo1jbpmtcsLDw5JTgRo2D4KgSWZQiggG9nuumlKQObknAS2ATsM 6BeQ== X-Gm-Message-State: APjAAAUqp411DM8kip1wxwA78t+Sjexaz+9dvYbpNzrIS6a8TUd6IOah 2edps1oS5QZ9ci1abMkz2CkIRtZWRhPXel0E51z3fU0SeuUh/1527bKesHdkgwTDVzoinSxKU6H G9bLKqgOyPwnGaEOBNwy+eYsyindX9Aq97a5Wwdbelxkm+gFO72qylFh/zYtmWY0K6ojfd9iv0x +rheltngaUWXoWrE0sg9UoKHr2CjjApj/7typ9AweE+NsKhH5Nh2hBJwxeasG1MEWWcOBu50qNm 7GaQqlW2R41dfAJsGwoFwTVaR9DhTtaFHIjqmReeoWUZc5lxI7GIOEqw+DUz+zmz/7b0vTbraUh lUUHWD1fcW1626DoEKd7gEsMPJ15eetAE021LZSi3Ebism/WczFJ4ikIM1v6FkP49WyMwyBCqZ5 U X-Received: by 2002:a0c:e1c9:: with SMTP id v9mr16868057qvl.186.1552070613333; Fri, 08 Mar 2019 10:43:33 -0800 (PST) X-Received: by 2002:a0c:e1c9:: with SMTP id v9mr16868003qvl.186.1552070612566; Fri, 08 Mar 2019 10:43:32 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1552070612; cv=none; d=google.com; s=arc-20160816; b=fo0bfvT/X83yzWpP7vFPklqjkIFG8oquzB0NGR43zWwPlr8S8iVrQ69jwNuYlOfVHZ T4gpf4zBH65cGHIyglBCeph++ibYxOXvo6Ajzd3TFnt3k54vvSQFuejMMv11GmwFFQFB Y0yu36qH8xO8XWE67r+mTipKRdEM9DvZPBkAcfQc+YrpJKzdR0h6ODlFqh0YIVHN5FJ8 GPjyhy1b980E0WhxR4rNEbd59PyQjulSq6NfkQCQGVAsDdizScLkOCx5t+Ite42Owe64 WvAf5/y6Dr1VpPHUP+toTOnJ+DAujWhWHASU7MIrLZNePJu8oW5g4PJH1lSbc2sDrIJN oUEQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=cc:to:from:subject:references:mime-version:message-id:in-reply-to :date:dkim-signature; bh=5zrp8mnWP3uBM/Fizzp8Po+aOUFVr9GhLUoLscT+qvI=; b=H9wJTWg99naiGz13FFZVYOCudByqHk8YidTvdX4AdJKqRUNJH++JKDvRPV/7JMvFxK RaxXw1j543qygDdfq6+tQi99y8U6aqgjcklKWTudOOVbH2g5V7qw3l+b6SB0mRvVZWoq kJdI5Q1plJQWLP7l83V5knkjDGwUke1IpaU1V8STH/yLOd/11G7WtwWrZ7PW1jyvYeBR 0Pi3jg1mJ5NhechdJbpbns80jK+lEanbz8K/tgkbuGz2dfJIz1no47hGqXFw2/4/Sba/ bXnEI4cfK1MEN8SWefRomGu96dSB6AlP9cMtkFYaUzgQBU6BSr9grtIpNHyQ7NPblZHP Yv/w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b="N2+/GhOQ"; spf=pass (google.com: domain of 31lecxaykcdknpmziwbjjbgz.xjhgdips-hhfqvxf.jmb@flex--surenb.bounces.google.com designates 209.85.220.73 as permitted sender) smtp.mailfrom=31LeCXAYKCDknpmZiWbjjbgZ.Xjhgdips-hhfqVXf.jmb@flex--surenb.bounces.google.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: from mail-sor-f73.google.com (mail-sor-f73.google.com. [209.85.220.73]) by mx.google.com with SMTPS id p12sor304053qkg.5.2019.03.08.10.43.32 for (Google Transport Security); Fri, 08 Mar 2019 10:43:32 -0800 (PST) Received-SPF: pass (google.com: domain of 31lecxaykcdknpmziwbjjbgz.xjhgdips-hhfqvxf.jmb@flex--surenb.bounces.google.com designates 209.85.220.73 as permitted sender) client-ip=209.85.220.73; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b="N2+/GhOQ"; spf=pass (google.com: domain of 31lecxaykcdknpmziwbjjbgz.xjhgdips-hhfqvxf.jmb@flex--surenb.bounces.google.com designates 209.85.220.73 as permitted sender) smtp.mailfrom=31LeCXAYKCDknpmZiWbjjbgZ.Xjhgdips-hhfqVXf.jmb@flex--surenb.bounces.google.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=date:in-reply-to:message-id:mime-version:references:subject:from:to :cc; bh=5zrp8mnWP3uBM/Fizzp8Po+aOUFVr9GhLUoLscT+qvI=; b=N2+/GhOQIjgVthz+h+5kaB8hfb4yyrZZVmHe16ICqrfbYVc24XX7MCC9FuWksubwVU Xyjd64Yr/Z+WlCHwqfmHEv+CiriSFEdGbJ9EhGMGWuc80Qr3DgYdfRRtcofQeNGTEdK6 3T8qSakvYZgmXfkQbtgGE7jw2pDafLAazJmbRsYkcTi49Se0zeK6UtEa9Ve9E0guUnNS wL8US7Ad5FVeD8X6Dbv/kQhn8oAj8KtMLTIjQz2bKZGZyoHB2wqqUQfC1pY0+K6tFI9s dUnUhmXIejpHH3UJHFZ6OtQ1mkX12leikIcwcgQhb8msIez1QXxhLaRnmJcOLvQ207By Rpow== X-Google-Smtp-Source: APXvYqyMGccggJ9hSdX5o1VkyMLTNxFEnyQRtZiCw//yBJ/b6Rl0YnlaVKMZGIxvWbcqMUZYihjxrpjsucE= X-Received: by 2002:a37:ba47:: with SMTP id k68mr11068794qkf.60.1552070612363; Fri, 08 Mar 2019 10:43:32 -0800 (PST) Date: Fri, 8 Mar 2019 10:43:08 -0800 In-Reply-To: <20190308184311.144521-1-surenb@google.com> Message-Id: <20190308184311.144521-5-surenb@google.com> Mime-Version: 1.0 References: <20190308184311.144521-1-surenb@google.com> X-Mailer: git-send-email 2.21.0.360.g471c308f928-goog Subject: [PATCH v5 4/7] psi: split update_stats into parts From: Suren Baghdasaryan To: gregkh@linuxfoundation.org Cc: tj@kernel.org, lizefan@huawei.com, hannes@cmpxchg.org, axboe@kernel.dk, dennis@kernel.org, dennisszhou@gmail.com, mingo@redhat.com, peterz@infradead.org, akpm@linux-foundation.org, corbet@lwn.net, cgroups@vger.kernel.org, linux-mm@kvack.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, kernel-team@android.com, Suren Baghdasaryan X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: X-Virus-Scanned: ClamAV using ClamSMTP Split update_stats into collect_percpu_times and update_averages for collect_percpu_times to be reused later inside psi monitor. Signed-off-by: Suren Baghdasaryan --- kernel/sched/psi.c | 55 +++++++++++++++++++++++++++------------------- 1 file changed, 32 insertions(+), 23 deletions(-) diff --git a/kernel/sched/psi.c b/kernel/sched/psi.c index 4fb4d9913bc8..337a445aefa3 100644 --- a/kernel/sched/psi.c +++ b/kernel/sched/psi.c @@ -269,17 +269,13 @@ static void calc_avgs(unsigned long avg[3], int missed_periods, avg[2] = calc_load(avg[2], EXP_300s, pct); } -static bool update_stats(struct psi_group *group) +static bool collect_percpu_times(struct psi_group *group) { u64 deltas[NR_PSI_STATES - 1] = { 0, }; - unsigned long missed_periods = 0; unsigned long nonidle_total = 0; - u64 now, expires, period; int cpu; int s; - mutex_lock(&group->avgs_lock); - /* * Collect the per-cpu time buckets and average them into a * single time sample that is normalized to wallclock time. @@ -317,11 +313,18 @@ static bool update_stats(struct psi_group *group) for (s = 0; s < NR_PSI_STATES - 1; s++) group->total[s] += div_u64(deltas[s], max(nonidle_total, 1UL)); + return nonidle_total; +} + +static u64 update_averages(struct psi_group *group, u64 now) +{ + unsigned long missed_periods = 0; + u64 expires, period; + u64 avg_next_update; + int s; + /* avgX= */ - now = sched_clock(); expires = group->avg_next_update; - if (now < expires) - goto out; if (now - expires >= psi_period) missed_periods = div_u64(now - expires, psi_period); @@ -332,7 +335,7 @@ static bool update_stats(struct psi_group *group) * But the deltas we sample out of the per-cpu buckets above * are based on the actual time elapsing between clock ticks. */ - group->avg_next_update = expires + ((1 + missed_periods) * psi_period); + avg_next_update = expires + ((1 + missed_periods) * psi_period); period = now - (group->avg_last_update + (missed_periods * psi_period)); group->avg_last_update = now; @@ -362,9 +365,8 @@ static bool update_stats(struct psi_group *group) group->avg_total[s] += sample; calc_avgs(group->avg[s], missed_periods, sample, period); } -out: - mutex_unlock(&group->avgs_lock); - return nonidle_total; + + return avg_next_update; } static void psi_avgs_work(struct work_struct *work) @@ -372,10 +374,16 @@ static void psi_avgs_work(struct work_struct *work) struct delayed_work *dwork; struct psi_group *group; bool nonidle; + u64 now; dwork = to_delayed_work(work); group = container_of(dwork, struct psi_group, avgs_work); + mutex_lock(&group->avgs_lock); + + now = sched_clock(); + + nonidle = collect_percpu_times(group); /* * If there is task activity, periodically fold the per-cpu * times and feed samples into the running averages. If things @@ -384,18 +392,15 @@ static void psi_avgs_work(struct work_struct *work) * go - see calc_avgs() and missed_periods. */ - nonidle = update_stats(group); - if (nonidle) { - unsigned long delay = 0; - u64 now; - - now = sched_clock(); - if (group->avg_next_update > now) - delay = nsecs_to_jiffies( - group->avg_next_update - now) + 1; - schedule_delayed_work(dwork, delay); + if (now >= group->avg_next_update) + group->avg_next_update = update_averages(group, now); + + schedule_delayed_work(dwork, nsecs_to_jiffies( + group->avg_next_update - now) + 1); } + + mutex_unlock(&group->avgs_lock); } static void record_times(struct psi_group_cpu *groupc, int cpu, @@ -711,7 +716,11 @@ int psi_show(struct seq_file *m, struct psi_group *group, enum psi_res res) if (static_branch_likely(&psi_disabled)) return -EOPNOTSUPP; - update_stats(group); + /* Update averages before reporting them */ + mutex_lock(&group->avgs_lock); + collect_percpu_times(group); + update_averages(group, sched_clock()); + mutex_unlock(&group->avgs_lock); for (full = 0; full < 2 - (res == PSI_CPU); full++) { unsigned long avg[3]; From patchwork Fri Mar 8 18:43:09 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Suren Baghdasaryan X-Patchwork-Id: 10845327 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 9B68C1515 for ; Fri, 8 Mar 2019 18:43:39 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 849D52FDE4 for ; Fri, 8 Mar 2019 18:43:39 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 7433D2FE20; Fri, 8 Mar 2019 18:43:39 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-10.5 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE, USER_IN_DEF_DKIM_WL autolearn=ham version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id E71032FDE4 for ; Fri, 8 Mar 2019 18:43:38 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id C99718E0008; Fri, 8 Mar 2019 13:43:37 -0500 (EST) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id C71CE8E0002; Fri, 8 Mar 2019 13:43:37 -0500 (EST) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id B87998E0008; Fri, 8 Mar 2019 13:43:37 -0500 (EST) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-it1-f198.google.com (mail-it1-f198.google.com [209.85.166.198]) by kanga.kvack.org (Postfix) with ESMTP id 92AC78E0002 for ; Fri, 8 Mar 2019 13:43:37 -0500 (EST) Received: by mail-it1-f198.google.com with SMTP id j18so12436778itl.6 for ; Fri, 08 Mar 2019 10:43:37 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:dkim-signature:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=il6G9EezI/fMlmphYMEu+28c9gYVmi2vxGNvZesouDw=; b=ja1mrYJ2kDl71UWxnE0vveE4BpeD6nq4DUcYGy0M2o+AkRrHXc0OZOAo2Ickxhu64G khLsXqLH68S+QAi2Jsm/5plkG6r7aJZ9YIdvZAUqV/C6lEGtWVEahpjUHTLOoJOBo9sf IpEKgic2thySCwIGrDm6yv0VKdJ2plbgs+SXyQ1PjmLeBeVz0S85BNZ7RJ02065ENX3a d53OJB5gI/Ifi/tQSvD71ayZzh3pPGAy9m3C815r6nGz72m/c7a7bTtZ7ak80BPxpDCL O0dYDJhbJY1Pdfs7pr3N+thDn/RrpwFKBkVzQtNvYJkaZ/WNbsGFesLpYIwTgM2tTC/h GMZA== X-Gm-Message-State: APjAAAVKrrk0/1F38DFY72zwyfz33MYxy/nOcLKR8G0NZctKmf0G6cJx cHuDVhsiLS3zgubPoXHikOB86mper164HIa7oyNiyUQhfwUIDDTLvOp9dlcw78mrRQo3IySjGpL TNTrrbqXSXjVB7byZLh69QCEyvM7mgBPMTX1qQQR8TW0EDpxzZSYUgmeh7NoswyWPlt1UG7X1xT o5AeJ1BB+/MFbht0tj8DLvyzURHCsN1Jf+5En2Py/gqEKoMKW8ON+Sz5ybd0MmYV1PKYrJQwYBn nCae5BeN738JKaYBy2JWoJsVc3vkMxC0qVZWkqd73FhsF3VNPEcPvHs45sIeLh7jUJ7GONVs6/B OB7tdTmx8NZLOD6UE2e60hAoLXbjdzdMSw228he1mCva47V/S8zGYWDGgqlXPdoabMiuDAUBysm R X-Received: by 2002:a02:c513:: with SMTP id s19mr4291316jam.107.1552070617258; Fri, 08 Mar 2019 10:43:37 -0800 (PST) X-Received: by 2002:a02:c513:: with SMTP id s19mr4291282jam.107.1552070616303; Fri, 08 Mar 2019 10:43:36 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1552070616; cv=none; d=google.com; s=arc-20160816; b=fnhJvmhwyc+kX5MSU9tusyHclhvWfxMYnq/FIRa8xeQaTKDshAZC6J/7i3p0prmq5F FTUGCk3psv1eUUxKycY1rilflfkicG9v34HStwSEIJJp1lFGSxyxJDv6VMR1c2D6HfIa cgKup4kxdKneJHbs5no9/tgciVLOeOQ2fKgcdCzQVJB37VG49h+axKvaKnkovHb34yeI cW7mC6KLzrP3Y7p7KHfUaU4UXVQrnLCBUzJI6WeMBs1MXe1eX4JK6BO4Pd+hriu4GPma pog40e/LcglXBSxC5Llmd7CXATZPj1+01gJkTjWsL1niLOd4Xy5IYnNKrPdoQJuWTHjk W41w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=cc:to:from:subject:references:mime-version:message-id:in-reply-to :date:dkim-signature; bh=il6G9EezI/fMlmphYMEu+28c9gYVmi2vxGNvZesouDw=; b=KI/oqfcMSgNvqbKg1R+25WRoitNI7qSUaNpH8EJNtWpswsXAwtsuqDMO53SZX+tvDr pBYgoTbn6NTryaa7cdXEaDKVBwoND0FvN34wft5PIImQJvFH5O4WIEdySO+hGndQ6jlN kcqa8Z+KXuwQrVY0NvLYv+EHeqCRB1T/peZB/XCTs01QAH9WU2p9kfUbT0GAyxAN5cZe tN4dn1cJN+WlbB/Y/qMwST2hl5pn3y5FPWOKsNtVMt3dB4riU3hJXblAYvVCraXBQ4Xy +4038howmQT6eCDgIoBTYw9s11+KgyFhHOSXsoKib1C7E+chqracECasYr5VeuY8A/+t hrFg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=tjwDUtio; spf=pass (google.com: domain of 317ecxaykcdwqspclzemmejc.amkjglsv-kkityai.mpe@flex--surenb.bounces.google.com designates 209.85.220.73 as permitted sender) smtp.mailfrom=317eCXAYKCDwqspclZemmejc.amkjglsv-kkitYai.mpe@flex--surenb.bounces.google.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: from mail-sor-f73.google.com (mail-sor-f73.google.com. [209.85.220.73]) by mx.google.com with SMTPS id o3sor16306721itb.28.2019.03.08.10.43.36 for (Google Transport Security); Fri, 08 Mar 2019 10:43:36 -0800 (PST) Received-SPF: pass (google.com: domain of 317ecxaykcdwqspclzemmejc.amkjglsv-kkityai.mpe@flex--surenb.bounces.google.com designates 209.85.220.73 as permitted sender) client-ip=209.85.220.73; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=tjwDUtio; spf=pass (google.com: domain of 317ecxaykcdwqspclzemmejc.amkjglsv-kkityai.mpe@flex--surenb.bounces.google.com designates 209.85.220.73 as permitted sender) smtp.mailfrom=317eCXAYKCDwqspclZemmejc.amkjglsv-kkitYai.mpe@flex--surenb.bounces.google.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=date:in-reply-to:message-id:mime-version:references:subject:from:to :cc; bh=il6G9EezI/fMlmphYMEu+28c9gYVmi2vxGNvZesouDw=; b=tjwDUtiobdfgKZIH++c88OYAAvRoSWJh7qHVhtehwxLEwOeHNDrMa9pD/txBuYov3w tpzrN9TjmUTADYocTrzDBUrTEzZMD5HxdOt2a9GMDUUyolNa+9tkNacxhzz4BzCGherl syRewsKwbdO+CjBTIM8eUiUdE6wz2kpm1eSAGLgIQgktEKLIThfLDv6pApzc1QI2qg2G klbVSbS32HsJq1EW8loyLsAGIsXoVyECiiHpJGdzMYVVZC+CFimkx6LQx5a+oPhpNKl8 ig2xUUTSab4ro2ljYGE9dES4jtTPH+8mmUAJ60foFbGMnp0WadQ2fjLC/SzkO0K98Oj8 DU1A== X-Google-Smtp-Source: APXvYqwAwnYg5Nbq9SYI8Wv0WjT9si/BIA8kk9ROhAlWPiuYfhb0+1JdnfcDScdeun/zmwtuySgxLkrNte8= X-Received: by 2002:a24:6cd5:: with SMTP id w204mr13988014itb.16.1552070615991; Fri, 08 Mar 2019 10:43:35 -0800 (PST) Date: Fri, 8 Mar 2019 10:43:09 -0800 In-Reply-To: <20190308184311.144521-1-surenb@google.com> Message-Id: <20190308184311.144521-6-surenb@google.com> Mime-Version: 1.0 References: <20190308184311.144521-1-surenb@google.com> X-Mailer: git-send-email 2.21.0.360.g471c308f928-goog Subject: [PATCH v5 5/7] psi: track changed states From: Suren Baghdasaryan To: gregkh@linuxfoundation.org Cc: tj@kernel.org, lizefan@huawei.com, hannes@cmpxchg.org, axboe@kernel.dk, dennis@kernel.org, dennisszhou@gmail.com, mingo@redhat.com, peterz@infradead.org, akpm@linux-foundation.org, corbet@lwn.net, cgroups@vger.kernel.org, linux-mm@kvack.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, kernel-team@android.com, Suren Baghdasaryan X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: X-Virus-Scanned: ClamAV using ClamSMTP Introduce changed_states parameter into collect_percpu_times to track the states changed since the last update. Signed-off-by: Suren Baghdasaryan --- kernel/sched/psi.c | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/kernel/sched/psi.c b/kernel/sched/psi.c index 337a445aefa3..59e4e1f8bc02 100644 --- a/kernel/sched/psi.c +++ b/kernel/sched/psi.c @@ -210,7 +210,8 @@ static bool test_state(unsigned int *tasks, enum psi_states state) } } -static void get_recent_times(struct psi_group *group, int cpu, u32 *times) +static void get_recent_times(struct psi_group *group, int cpu, u32 *times, + u32 *pchanged_states) { struct psi_group_cpu *groupc = per_cpu_ptr(group->pcpu, cpu); u64 now, state_start; @@ -218,6 +219,8 @@ static void get_recent_times(struct psi_group *group, int cpu, u32 *times) unsigned int seq; u32 state_mask; + *pchanged_states = 0; + /* Snapshot a coherent view of the CPU state */ do { seq = read_seqcount_begin(&groupc->seq); @@ -246,6 +249,8 @@ static void get_recent_times(struct psi_group *group, int cpu, u32 *times) groupc->times_prev[s] = times[s]; times[s] = delta; + if (delta) + *pchanged_states |= (1 << s); } } @@ -269,10 +274,11 @@ static void calc_avgs(unsigned long avg[3], int missed_periods, avg[2] = calc_load(avg[2], EXP_300s, pct); } -static bool collect_percpu_times(struct psi_group *group) +static void collect_percpu_times(struct psi_group *group, u32 *pchanged_states) { u64 deltas[NR_PSI_STATES - 1] = { 0, }; unsigned long nonidle_total = 0; + u32 changed_states = 0; int cpu; int s; @@ -287,8 +293,11 @@ static bool collect_percpu_times(struct psi_group *group) for_each_possible_cpu(cpu) { u32 times[NR_PSI_STATES]; u32 nonidle; + u32 cpu_changed_states; - get_recent_times(group, cpu, times); + get_recent_times(group, cpu, times, + &cpu_changed_states); + changed_states |= cpu_changed_states; nonidle = nsecs_to_jiffies(times[PSI_NONIDLE]); nonidle_total += nonidle; @@ -313,7 +322,8 @@ static bool collect_percpu_times(struct psi_group *group) for (s = 0; s < NR_PSI_STATES - 1; s++) group->total[s] += div_u64(deltas[s], max(nonidle_total, 1UL)); - return nonidle_total; + if (pchanged_states) + *pchanged_states = changed_states; } static u64 update_averages(struct psi_group *group, u64 now) @@ -373,6 +383,7 @@ static void psi_avgs_work(struct work_struct *work) { struct delayed_work *dwork; struct psi_group *group; + u32 changed_states; bool nonidle; u64 now; @@ -383,7 +394,8 @@ static void psi_avgs_work(struct work_struct *work) now = sched_clock(); - nonidle = collect_percpu_times(group); + collect_percpu_times(group, &changed_states); + nonidle = changed_states & (1 << PSI_NONIDLE); /* * If there is task activity, periodically fold the per-cpu * times and feed samples into the running averages. If things @@ -718,7 +730,7 @@ int psi_show(struct seq_file *m, struct psi_group *group, enum psi_res res) /* Update averages before reporting them */ mutex_lock(&group->avgs_lock); - collect_percpu_times(group); + collect_percpu_times(group, NULL); update_averages(group, sched_clock()); mutex_unlock(&group->avgs_lock); From patchwork Fri Mar 8 18:43:10 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Suren Baghdasaryan X-Patchwork-Id: 10845329 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 1755F14E1 for ; Fri, 8 Mar 2019 18:43:43 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 02F782FDE4 for ; Fri, 8 Mar 2019 18:43:43 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id EAB492FE20; Fri, 8 Mar 2019 18:43:42 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-10.5 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE, USER_IN_DEF_DKIM_WL autolearn=ham version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 68E122FDE4 for ; Fri, 8 Mar 2019 18:43:42 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 4D5FC8E0009; Fri, 8 Mar 2019 13:43:41 -0500 (EST) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 481D18E0002; Fri, 8 Mar 2019 13:43:41 -0500 (EST) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 374C58E0009; Fri, 8 Mar 2019 13:43:41 -0500 (EST) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-ua1-f70.google.com (mail-ua1-f70.google.com [209.85.222.70]) by kanga.kvack.org (Postfix) with ESMTP id 06A318E0002 for ; Fri, 8 Mar 2019 13:43:41 -0500 (EST) Received: by mail-ua1-f70.google.com with SMTP id g9so2566245ual.8 for ; Fri, 08 Mar 2019 10:43:41 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:dkim-signature:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=CEhrqtVYU2GGjH6ppRjAuHHm7jjOcyih+GpEA+oebn8=; b=nftQaUqqT5M3Kfojyyz0myS1ftvjAJrJWTrfirjatTIeMYufqRk3cbMFRhMxe18hsZ cIq1z+Matn6/KEOZY60SDH0Bi7OhCuNNM26ogQazcCyRSaENepxC+QOUx5wo++Dp51pa e1BLv6U+VPYao7ldwVtbpHtTZiX7yeZ9J1esccKgiohwhsypeNWZpJXkPL9RNxWlx7Ta T56a2V3SmEzkzn5GJITTeagpWD/bzuVgkoQ7eKHUmNp9yJ6XmcSYnGDKl1zqvoVwKtGz 1HQL+NZ+LLx6gipLh63NxQqOv99c6YiHQxyMIg5Vnmm+4UiHeXBit3cQtzwk8C3swm7G fryg== X-Gm-Message-State: APjAAAXtEWtA3630iKwa56bH4nz+/kWyzuc9vmjMd0BW6z9YEPAbmftR HC38VrzSiPJuB6MPTiggShJop9KWrnTNfnzKMX0Co0N05YjDew+YDYE0z2NxJ856mEmGQV1vRhp W/UIGVDVMWe/H1Qu9iMqkQLhRiKu5DUS5NElBjdVU27NBpXPRwvsXSlWh+FpA9XH1YJyybU3CGp HF04QIudkKvA/YA7dAIAIwOg/tRtlQYyguHEzmkPjw22f9S08u6Cfbp6sc2K/VfVyE74fGhlZhu HnsalSvhAyjz1ooO590SDg7/u4cJ4qQJ9ZR3uyPI0HBKElAt7qzs0rIwRTh9Y9vdvZRdGjP9yge 2DFQzo5J5AoAumE4ye74DItm7tKTt3pfhp+d0Ch6rEYdeLhw8jGwATP1y5zYHOHUu12pB0dy8rD x X-Received: by 2002:a67:f90e:: with SMTP id t14mr10648733vsq.181.1552070620640; Fri, 08 Mar 2019 10:43:40 -0800 (PST) X-Received: by 2002:a67:f90e:: with SMTP id t14mr10648697vsq.181.1552070619935; Fri, 08 Mar 2019 10:43:39 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1552070619; cv=none; d=google.com; s=arc-20160816; b=jNPt/a/ZipKHtMx7hz+PHL1rM7mDEEmJkwCGxDaycXeycjlASX3jFL8Q3SikXIsVCO K9U8OslFCcdL/P+WjG29pE5c8y9mdE2Fq8TPaCF7CPn+00lBmoHmFe4oCl+QVMFf3epO I7CnFI/JU6VIezlMNJiLJP0Vyj+UpGUA+9pSKN18N5IeCn2iNz9NyDsnf2te+v/sPSJL S8tjU5CGdE08YF+s2kKVV8Sv20dKhmq375+yFgXeMlDUo7P7ZVd4rK5/+m2VgskZEeu8 endQGEMjwF/EoJTFdSoiirW+d2CM1PoaKFHJwZYTcrRUADM1Hz5JPoddnoguOKVUGkkD pN6Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=cc:to:from:subject:references:mime-version:message-id:in-reply-to :date:dkim-signature; bh=CEhrqtVYU2GGjH6ppRjAuHHm7jjOcyih+GpEA+oebn8=; b=HySEk6nripgGbeyN0L8A0I1IwVo5i2wlYD2/jUzti5XH1e87g9OAoV1THn8NQPuoSU oojZUa4k5M4BfAZmGZpqexX+eluAcbrpFC5NTvid71Y5oLnO2+4rhTS7oR48Q1slp5HN jehcS0PGf2vN8bU9zBan6QSrsEfLEhgH3aCEe5/lnCe306rB2RBb7rWOH2XaPtM8fObR 7NYyMcHNRQrum/ajAqut0DbcU0yxt9Sy6Czgpa2EJqkrzpyRGOf/AyFGgWxc2sA6FjtD tuXb7ZGy6GkWNKRx0o9js074DruNueZAWcOr1aZHGcMltV5rh3e6pMiQD2bn48YU7QLE pUbg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=c1B9mpz6; spf=pass (google.com: domain of 327ecxaykceauwtgpdiqqing.eqonkpwz-oomxcem.qti@flex--surenb.bounces.google.com designates 209.85.220.73 as permitted sender) smtp.mailfrom=327eCXAYKCEAuwtgpdiqqing.eqonkpwz-oomxcem.qti@flex--surenb.bounces.google.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: from mail-sor-f73.google.com (mail-sor-f73.google.com. [209.85.220.73]) by mx.google.com with SMTPS id b138sor5124071vkf.37.2019.03.08.10.43.39 for (Google Transport Security); Fri, 08 Mar 2019 10:43:39 -0800 (PST) Received-SPF: pass (google.com: domain of 327ecxaykceauwtgpdiqqing.eqonkpwz-oomxcem.qti@flex--surenb.bounces.google.com designates 209.85.220.73 as permitted sender) client-ip=209.85.220.73; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=c1B9mpz6; spf=pass (google.com: domain of 327ecxaykceauwtgpdiqqing.eqonkpwz-oomxcem.qti@flex--surenb.bounces.google.com designates 209.85.220.73 as permitted sender) smtp.mailfrom=327eCXAYKCEAuwtgpdiqqing.eqonkpwz-oomxcem.qti@flex--surenb.bounces.google.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=date:in-reply-to:message-id:mime-version:references:subject:from:to :cc; bh=CEhrqtVYU2GGjH6ppRjAuHHm7jjOcyih+GpEA+oebn8=; b=c1B9mpz6Jdou6pRY5OyrvSpDJl27rnNzP0KEjEWa2lnSzKi/TY8GKvZho04eqIPWmf Mbevkjhd2kB1p4b+u2RldlGvn2Q8iDTxMc777xOikyWl3V3hnX65J+i46DkaENmm3zXP ozcooURxLG/exN3rOJjFJdR1Ogw7wIrCqH2mzI50xZsiMCTvriahuZwLjq2O1Cljiul0 K0ygd6c+lQS5P2P2rKrX8m+cmDot+mdoua/nr3GSl9KtOOGf5I97XVGRs4twCtOTiwdC aQoZP+Pvr8fOhYrbuPvxicE4lRRk5dgLyBHNiYroYQyHmB/+K5WjqAJKLwrTKLEZiYWj 0MMA== X-Google-Smtp-Source: APXvYqwN0/Nf7GBGjuQW1wdXf6SKvccB1lEA9aOmPCgozi8YOkJIIOWvh+1BhGa6Czel6AwwlTaUyObxUrY= X-Received: by 2002:a1f:7d06:: with SMTP id y6mr12317055vkc.19.1552070619702; Fri, 08 Mar 2019 10:43:39 -0800 (PST) Date: Fri, 8 Mar 2019 10:43:10 -0800 In-Reply-To: <20190308184311.144521-1-surenb@google.com> Message-Id: <20190308184311.144521-7-surenb@google.com> Mime-Version: 1.0 References: <20190308184311.144521-1-surenb@google.com> X-Mailer: git-send-email 2.21.0.360.g471c308f928-goog Subject: [PATCH v5 6/7] refactor header includes to allow kthread.h inclusion in psi_types.h From: Suren Baghdasaryan To: gregkh@linuxfoundation.org Cc: tj@kernel.org, lizefan@huawei.com, hannes@cmpxchg.org, axboe@kernel.dk, dennis@kernel.org, dennisszhou@gmail.com, mingo@redhat.com, peterz@infradead.org, akpm@linux-foundation.org, corbet@lwn.net, cgroups@vger.kernel.org, linux-mm@kvack.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, kernel-team@android.com, Suren Baghdasaryan X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: X-Virus-Scanned: ClamAV using ClamSMTP kthread.h can't be included in psi_types.h because it creates a circular inclusion with kthread.h eventually including psi_types.h and complaining on kthread structures not being defined because they are defined further in the kthread.h. Resolve this by removing psi_types.h inclusion from the headers included from kthread.h. Signed-off-by: Suren Baghdasaryan --- include/linux/kthread.h | 3 ++- include/linux/sched.h | 1 - kernel/kthread.c | 1 + 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/include/linux/kthread.h b/include/linux/kthread.h index 2c89e60bc752..0f9da966934e 100644 --- a/include/linux/kthread.h +++ b/include/linux/kthread.h @@ -4,7 +4,6 @@ /* Simple interface for creating and stopping kernel threads without mess. */ #include #include -#include __printf(4, 5) struct task_struct *kthread_create_on_node(int (*threadfn)(void *data), @@ -198,6 +197,8 @@ bool kthread_cancel_delayed_work_sync(struct kthread_delayed_work *work); void kthread_destroy_worker(struct kthread_worker *worker); +struct cgroup_subsys_state; + #ifdef CONFIG_BLK_CGROUP void kthread_associate_blkcg(struct cgroup_subsys_state *css); struct cgroup_subsys_state *kthread_blkcg(void); diff --git a/include/linux/sched.h b/include/linux/sched.h index 1549584a1538..20b9f03399a7 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h @@ -26,7 +26,6 @@ #include #include #include -#include #include #include #include diff --git a/kernel/kthread.c b/kernel/kthread.c index 5942eeafb9ac..be4e8795561a 100644 --- a/kernel/kthread.c +++ b/kernel/kthread.c @@ -11,6 +11,7 @@ #include #include #include +#include #include #include #include From patchwork Fri Mar 8 18:43:11 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Suren Baghdasaryan X-Patchwork-Id: 10845331 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 1819E14E1 for ; Fri, 8 Mar 2019 18:43:50 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 000A52FDE4 for ; Fri, 8 Mar 2019 18:43:49 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id E78AD2FE20; Fri, 8 Mar 2019 18:43:49 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-10.5 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE, USER_IN_DEF_DKIM_WL autolearn=ham version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id E9AC12FDE4 for ; Fri, 8 Mar 2019 18:43:47 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id B878E8E000A; Fri, 8 Mar 2019 13:43:46 -0500 (EST) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id B38A88E0002; Fri, 8 Mar 2019 13:43:46 -0500 (EST) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id A00D68E000A; Fri, 8 Mar 2019 13:43:46 -0500 (EST) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-vk1-f200.google.com (mail-vk1-f200.google.com [209.85.221.200]) by kanga.kvack.org (Postfix) with ESMTP id 68BA18E0002 for ; Fri, 8 Mar 2019 13:43:46 -0500 (EST) Received: by mail-vk1-f200.google.com with SMTP id b123so9823817vka.21 for ; Fri, 08 Mar 2019 10:43:46 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:dkim-signature:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=0ZL/3pZ59izFS2kEKhcW03BhmVQQsRxh317XsxqmI88=; b=O6rTA9RTmxK4LuYKSX3NcmvVjrh/rqTepMdFbGC01nv4+C/IoqJ3m0WZ/dY5buN2nx 2zeiucMPZiwafep8qqiUUWN2R93a7sE/0kqw/CI9lfEp+2BJM9puPJcO+VouGZtg0Myh 36rlOdEvHCU+mGaYvlwKqwWZn8suOMAYCCGpfVOTHLPgHMf9SUZPt2c5DZinF5ZYvbCb rVqnt/Xbh8Rkq+K5bSlu3KkihysrPRAlkdHUw+dwDalGrr71WFOiQ/wJskyiFS/XYzZK ZNS6iMD1Em5kXG6Yh8lAivGGxBD1JEgxcxi1U6GCI4bsey1QlI/vuQNFa1Esq4rbMm/5 Pojg== X-Gm-Message-State: APjAAAVPNVYKbp/tzTofeghHA6zNiC60AeajlqrVAl2g2BWvjzzyv5fz hclUnfeZhpSqeHX/4M2ifCcX1cqrvimqg8zYOwIemWcX/nNMx9WK0x568iQLG0REIpR0DtaR5tI eh5JdlXLultQn0I+tNzez0pGbShAyWWlNyUz9lplysgv7Ia6eD0rN26MCf/2BmD+P5pkqcjVY0M 2n6kUv3K6qUwUhTAnKfc5IY+gRHQS9lueflXu5oktUHCDQebwbqU9SBQMqN7cxog2+taN82iIb4 oy0ud1ZPu0r9vF6/dPmI7T4jMrYYsHLZ2yuiAUaJzi13qjMw/hTyaS1I2ce4TU7v7Ks1+j3T68I 0tSBpa0ORkjBjnGkATyzCG6E56znU7VjPUa5gRg7o4/Y4zUbwhqfWKvcsYYbd8mkU2op9PaJw/3 y X-Received: by 2002:a67:fd13:: with SMTP id f19mr10029909vsr.58.1552070626039; Fri, 08 Mar 2019 10:43:46 -0800 (PST) X-Received: by 2002:a67:fd13:: with SMTP id f19mr10029827vsr.58.1552070623662; Fri, 08 Mar 2019 10:43:43 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1552070623; cv=none; d=google.com; s=arc-20160816; b=AJCz/YgO6mbOK7jgwaNYtjdaFjB6VdG+6DZVg2Q2SIP1NoTMIhVmmd3aqNcXtvU9HH Qwz6W99nka2xErFlrSEO+CTfaM1Inmq8wH+sVLVgDupiZ+fleqj7zx4cahFG/X/hNVvP 1EXjwCZRxMeAWwnkMPt908tDbMVTlrYgga90z427ZyB1ycqewv3adc0vEHB5qxoOYYDi NCe3B+no9dS8pHr9cFYHKkhg6ycV9oMBUGRI286VD8ms0Ar6RgN5RxT/fYhQRWgg4VYx 4vpLh3hE89v8D1BGRZHLawngH3DobXqfJ3cLuHQtytk8P6Cp/Inh3I6zoZz5VcCcwiai Ri3w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=cc:to:from:subject:references:mime-version:message-id:in-reply-to :date:dkim-signature; bh=0ZL/3pZ59izFS2kEKhcW03BhmVQQsRxh317XsxqmI88=; b=Lqak96muL2Z6L3w3j44BSv9gRU4VUgw75MKbbqhV6p+VjPZivX9Amv7GtIdVWIhdYJ k78VEYUkUvkrhVRgmeGgSLPUQhHl6hGxLyRFX/ZTzg1gYj/z7uab9fVGEDj/WfDJAhNd dVj3KIQZ2FWf1MKCxue6RQyfEEUcztuTVsk1CqVxTUVeyKr0PDDXfJ9Ck++7qQjYmzJ3 A/6FB8T/TWYfqH4cDNFupoop4cho7y3AkJ6La313JMC2KqHAQe9Jdjzz5/4s369jQwOW QsAKMhzD7tNWamwqBS+dkJn/EEA/s0YIn5fCLA1r0zlevmQTirHtgEAdxlpuEho9beY8 fhUw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=GhJzk1A0; spf=pass (google.com: domain of 337ecxaykceqy0xkthmuumrk.iusrot03-ssq1giq.uxm@flex--surenb.bounces.google.com designates 209.85.220.73 as permitted sender) smtp.mailfrom=337eCXAYKCEQy0xkthmuumrk.iusrot03-ssq1giq.uxm@flex--surenb.bounces.google.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: from mail-sor-f73.google.com (mail-sor-f73.google.com. [209.85.220.73]) by mx.google.com with SMTPS id y25sor5481226vsn.20.2019.03.08.10.43.43 for (Google Transport Security); Fri, 08 Mar 2019 10:43:43 -0800 (PST) Received-SPF: pass (google.com: domain of 337ecxaykceqy0xkthmuumrk.iusrot03-ssq1giq.uxm@flex--surenb.bounces.google.com designates 209.85.220.73 as permitted sender) client-ip=209.85.220.73; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=GhJzk1A0; spf=pass (google.com: domain of 337ecxaykceqy0xkthmuumrk.iusrot03-ssq1giq.uxm@flex--surenb.bounces.google.com designates 209.85.220.73 as permitted sender) smtp.mailfrom=337eCXAYKCEQy0xkthmuumrk.iusrot03-ssq1giq.uxm@flex--surenb.bounces.google.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=date:in-reply-to:message-id:mime-version:references:subject:from:to :cc; bh=0ZL/3pZ59izFS2kEKhcW03BhmVQQsRxh317XsxqmI88=; b=GhJzk1A0ryZH53AjlI90bDUlCqp6CIMeYszP9fYPPKvXoULkUBmCOBROAHZSDxDCoa cj0bNUzUacf0RxUKpZX4QnukkYJIST8aFdpJFQjxNHCdCM8aUfllEWLUHpDDHvqTcYqX uqvScywnfV1Dla0bYiYKRBU2L7onNhf6Rwl2YhK2XyBJMi2VtkZ9ehPN6YSnaLM4kTlH su1eOvmUbsRUq64F/g7lBUgTjZfynF2ZkyGjjLQGcz/bcWtZHto+5bb7ey8urxlVmSOl 3GVtu79i+Jb8WXh97eWrzXVSU2uyhnpzWu96foB+vbf/unkkBLfFnLWpwUPVa4yMOkRF hbSg== X-Google-Smtp-Source: APXvYqzQJx8wd9uhB05DpOyRslnOwWJkrlQA8DQpjapGCOCNfcTch9IrLubZTjX/zzgZNGmNsJNzc8Mxuzg= X-Received: by 2002:a67:efc1:: with SMTP id s1mr13017815vsp.1.1552070623342; Fri, 08 Mar 2019 10:43:43 -0800 (PST) Date: Fri, 8 Mar 2019 10:43:11 -0800 In-Reply-To: <20190308184311.144521-1-surenb@google.com> Message-Id: <20190308184311.144521-8-surenb@google.com> Mime-Version: 1.0 References: <20190308184311.144521-1-surenb@google.com> X-Mailer: git-send-email 2.21.0.360.g471c308f928-goog Subject: [PATCH v5 7/7] psi: introduce psi monitor From: Suren Baghdasaryan To: gregkh@linuxfoundation.org Cc: tj@kernel.org, lizefan@huawei.com, hannes@cmpxchg.org, axboe@kernel.dk, dennis@kernel.org, dennisszhou@gmail.com, mingo@redhat.com, peterz@infradead.org, akpm@linux-foundation.org, corbet@lwn.net, cgroups@vger.kernel.org, linux-mm@kvack.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, kernel-team@android.com, Suren Baghdasaryan X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: X-Virus-Scanned: ClamAV using ClamSMTP Psi monitor aims to provide a low-latency short-term pressure detection mechanism configurable by users. It allows users to monitor psi metrics growth and trigger events whenever a metric raises above user-defined threshold within user-defined time window. Time window and threshold are both expressed in usecs. Multiple psi resources with different thresholds and window sizes can be monitored concurrently. Psi monitors activate when system enters stall state for the monitored psi metric and deactivate upon exit from the stall state. While system is in the stall state psi signal growth is monitored at a rate of 10 times per tracking window. Min window size is 500ms, therefore the min monitoring interval is 50ms. Max window size is 10s with monitoring interval of 1s. When activated psi monitor stays active for at least the duration of one tracking window to avoid repeated activations/deactivations when psi signal is bouncing. Notifications to the users are rate-limited to one per tracking window. Signed-off-by: Suren Baghdasaryan Signed-off-by: Johannes Weiner --- Documentation/accounting/psi.txt | 107 +++++++ include/linux/psi.h | 8 + include/linux/psi_types.h | 82 ++++- kernel/cgroup/cgroup.c | 71 ++++- kernel/sched/psi.c | 494 ++++++++++++++++++++++++++++++- 5 files changed, 742 insertions(+), 20 deletions(-) diff --git a/Documentation/accounting/psi.txt b/Documentation/accounting/psi.txt index b8ca28b60215..4fb40fe94828 100644 --- a/Documentation/accounting/psi.txt +++ b/Documentation/accounting/psi.txt @@ -63,6 +63,110 @@ tracked and exported as well, to allow detection of latency spikes which wouldn't necessarily make a dent in the time averages, or to average trends over custom time frames. +Monitoring for pressure thresholds +================================== + +Users can register triggers and use poll() to be woken up when resource +pressure exceeds certain thresholds. + +A trigger describes the maximum cumulative stall time over a specific +time window, e.g. 100ms of total stall time within any 500ms window to +generate a wakeup event. + +To register a trigger user has to open psi interface file under +/proc/pressure/ representing the resource to be monitored and write the +desired threshold and time window. The open file descriptor should be +used to wait for trigger events using select(), poll() or epoll(). +The following format is used: + +