Received: by 2002:a25:6193:0:0:0:0:0 with SMTP id v141csp1612669ybb; Thu, 26 Mar 2020 04:13:18 -0700 (PDT) X-Google-Smtp-Source: ADFU+vsJxhLJDo+iD/L7OoRGN6KftXl+vTOj23YqM0symV4JymgtVtRkUeA4mK1OEAewYLZybNUZ X-Received: by 2002:a9d:d0f:: with SMTP id 15mr6008650oti.161.1585221198579; Thu, 26 Mar 2020 04:13:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1585221198; cv=none; d=google.com; s=arc-20160816; b=jixRF8osnYoOvDupe5OTz1+baoLD5hBl0xy+ylms4yMjF0/qo5+huajB/r2tYI03ts LWA49IiUC5YgPA0QyGrrlEF0g1DxaDS1rmOtTNIPIjRPTWMQySpjUVhP1v4TNJ93SjaO tTprfbqvueKsNQ+DeCryr1Ee8hL2vT9nZdh89x86DpAYgLWzw6+trbKFcQ2VOYhoFZ2H +Bs0R1qnbpqVaPrpbgfuKBRnCj8lrR+wLkYcu/Cb1fhMwhxMCyJj1jvujw/7um6ihhWo YDOIcURevqjF9jmC/MtQ+guiznrKhYqb77TFKWhxd5iUfvF9Hz/fQDrTUUuOqhGqPCA2 ASDA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from :dkim-signature; bh=UzzDt0/zC8t7ovhe7yIj9+UNLH3ZfB9o+FewH6cOgh4=; b=MnjVj7+Mtmkl3MZuaDsxzkPrtJ9iSf5hCGPov1iwuI3wM8U56YTuJBUjaZQiDJGR+v negl5SV2PivxBKMgsuGYyh2pcbqhW6CwxrlRcUAPyB0RhPbvg6gkeM64vwkxwXVoqRkV oXeWk7230THhmkkrsAVKtPB27rXBJBEZfu0POjXLq9w6MW/kSqQBbiYU5eoqDe4keU6O truWsyHfsThn+gP06p7GNtOg8znp7f7nth83+miobk4bNUrkMr6UHCXyFiH4zlOfhKaZ g5p5V0/Z5pJCXZl9PciVBNcFTm/fgLqAVipOz4dnCdKSr6sfpgSfQULO2Xb5/VIs32re FDKg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=eJpCgo34; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id y4si897142oti.145.2020.03.26.04.13.05; Thu, 26 Mar 2020 04:13:18 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=eJpCgo34; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727959AbgCZLMn (ORCPT + 99 others); Thu, 26 Mar 2020 07:12:43 -0400 Received: from mail-pg1-f193.google.com ([209.85.215.193]:46864 "EHLO mail-pg1-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727560AbgCZLMn (ORCPT ); Thu, 26 Mar 2020 07:12:43 -0400 Received: by mail-pg1-f193.google.com with SMTP id k191so2678216pgc.13; Thu, 26 Mar 2020 04:12:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=UzzDt0/zC8t7ovhe7yIj9+UNLH3ZfB9o+FewH6cOgh4=; b=eJpCgo34rTMlyH3BQTttLC8UZfwApCAG/DM+Q6SPEsyflv8/b0pm1u0BWgpAsFEsDN LinFDIZOcxNI7oIt+5KyIMBr/pnzuH+wKN1Sua3xMiPXT40HlPYSBa4A3HYZBBR/okXG B+Gd2XqPkQLdJNnPwnIvPGwsZ3okp74+Gi6RaTd6Tq7fnwm4HNBQILCRWs9O/9/9VxWz WjnqyyApKROpRAwLQsANc/upj2KMXuL81L7kEIlTmCok8V9sPba9ToDQs325MFeGIbCz jrbZy5gWvA0nirDhtNON1JeWDZvj+EgDQ6aiLZXFHPPp78GN6mVyeqgp693wacyk2ACO N1ag== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=UzzDt0/zC8t7ovhe7yIj9+UNLH3ZfB9o+FewH6cOgh4=; b=jzx18mznYK3UrfWkpPDtaAxiAjvcC7djx8elfdu/+yks5YgIrGm0T/L69VdBNEkp3f pkyLjk1RrjA/SB4OFjcOw3ErXfdRZcxiNPyqQAoLUHedyAoCVQCEM1UfjKzhtcGJCjDF y8JA0+V8/o3Dr2/WHoQFgUOivFGk6giiFvA/EO/9hno3NwXFNWTnGGufG9SwlmVTaFY9 cQRB6CjJkDVXRt9nppH/frdi8q+l0xv07P+OrkGMB5c7NjJNPmBCNdysoY8psJx9sEBe LygD+kFZ8Ha5b6KVNviw8/PG+I1AA5lZBbnWoVfF3XKdt8cY6i1VKLGwTYPCZhYYNQhk Mm3g== X-Gm-Message-State: ANhLgQ29Z4DKt6Z1zBqM3uaQzohOK9eIHzc7Hh0VPGqZ19O4zZ9+UKWU hjfPZrChck2BQMOx1im2b90= X-Received: by 2002:a62:6807:: with SMTP id d7mr8529801pfc.230.1585221161955; Thu, 26 Mar 2020 04:12:41 -0700 (PDT) Received: from dev.localdomain ([203.100.54.194]) by smtp.gmail.com with ESMTPSA id m9sm1427723pff.93.2020.03.26.04.12.38 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 26 Mar 2020 04:12:41 -0700 (PDT) From: Yafang Shao To: hannes@cmpxchg.org, peterz@infradead.org, akpm@linux-foundation.org, mhocko@kernel.org, axboe@kernel.dk, mgorman@suse.de, rostedt@goodmis.org, mingo@redhat.com Cc: linux-mm@kvack.org, linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, Yafang Shao Subject: [PATCH 0/2] psi: enhance psi with the help of ebpf Date: Thu, 26 Mar 2020 07:12:05 -0400 Message-Id: <1585221127-11458-1-git-send-email-laoar.shao@gmail.com> X-Mailer: git-send-email 1.8.3.1 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org PSI gives us a powerful way to anaylze memory pressure issue, but we can make it more powerful with the help of tracepoint, kprobe, ebpf and etc. Especially with ebpf we can flexiblely get more details of the memory pressure. In orderc to achieve this goal, a new parameter is added into psi_memstall_{enter, leave}, which indicates the specific type of a memstall. There're totally ten memstalls by now, MEMSTALL_KSWAPD MEMSTALL_RECLAIM_DIRECT MEMSTALL_RECLAIM_MEMCG MEMSTALL_RECLAIM_HIGH MEMSTALL_KCOMPACTD MEMSTALL_COMPACT MEMSTALL_WORKINGSET_REFAULT MEMSTALL_WORKINGSET_THRASHING MEMSTALL_MEMDELAY MEMSTALL_SWAPIO With the help of kprobe or tracepoint to trace this newly added agument we can know which type of memstall it is and then do corresponding improvement. I can also help us to analyze the latency spike caused by memory pressure. But note that we can't use it to build memory pressure for a specific type of memstall, e.g. memcg pressure, compaction pressure and etc, because it doesn't implement various types of task->in_memstall, e.g. task->in_memcgstall, task->in_compactionstall and etc. Although there're already some tracepoints can help us to achieve this goal, e.g. vmscan:mm_vmscan_kswapd_{wake, sleep} vmscan:mm_vmscan_direct_reclaim_{begin, end} vmscan:mm_vmscan_memcg_reclaim_{begin, end} /* no tracepoint for memcg high reclaim*/ compcation:mm_compaction_kcompactd_{wake, sleep} compcation:mm_compaction_begin_{begin, end} /* no tracepoint for workingset refault */ /* no tracepoint for workingset thrashing */ /* no tracepoint for use memdelay */ /* no tracepoint for swapio */ but psi_memstall_{enter, leave} gives us a unified entrance for all types of memstall and we don't need to add many begin and end tracepoints that hasn't been implemented yet. Patch #2 gives us an example of how to use it with ebpf. With the help of ebpf we can trace a specific task, application, container and etc. It also can help us to analyze the spread of latencies and whether they were clustered at a point of time or spread out over long periods of time. Yafang Shao (2): psi: introduce various types of memstall psi, tracepoint: introduce tracepoints for psi_memstall_{enter, leave} block/blk-cgroup.c | 4 ++-- block/blk-core.c | 4 ++-- include/linux/psi.h | 15 +++++++++++---- include/linux/psi_types.h | 13 +++++++++++++ include/trace/events/sched.h | 41 +++++++++++++++++++++++++++++++++++++++++ kernel/sched/psi.c | 14 ++++++++++++-- mm/compaction.c | 4 ++-- mm/filemap.c | 4 ++-- mm/memcontrol.c | 4 ++-- mm/page_alloc.c | 8 ++++---- mm/page_io.c | 4 ++-- mm/vmscan.c | 8 ++++---- 12 files changed, 97 insertions(+), 26 deletions(-) -- 1.8.3.1