From: Byungchul Park <max.byungchul.park@gmail.com> To: linux-kernel@vger.kernel.org Cc: torvalds@linux-foundation.org, damien.lemoal@opensource.wdc.com, linux-ide@vger.kernel.org, adilger.kernel@dilger.ca, linux-ext4@vger.kernel.org, mingo@redhat.com, peterz@infradead.org, will@kernel.org, tglx@linutronix.de, rostedt@goodmis.org, joel@joelfernandes.org, sashal@kernel.org, daniel.vetter@ffwll.ch, duyuyang@gmail.com, johannes.berg@intel.com, tj@kernel.org, tytso@mit.edu, willy@infradead.org, david@fromorbit.com, amir73il@gmail.com, gregkh@linuxfoundation.org, kernel-team@lge.com, linux-mm@kvack.org, akpm@linux-foundation.org, mhocko@kernel.org, minchan@kernel.org, hannes@cmpxchg.org, vdavydov.dev@gmail.com, sj@kernel.org, jglisse@redhat.com, dennis@kernel.org, cl@linux.com, penberg@kernel.org, rientjes@google.com, vbabka@suse.cz, ngupta@vflare.org, linux-block@vger.kernel.org, paolo.valente@linaro.org, josef@toxicpanda.com, linux-fsdevel@vger.kernel.org, viro@zeniv.linux.org.uk, jack@suse.cz, jlayton@kernel.org, dan.j.williams@intel.com, hch@infradead.org, djwong@kernel.org, dri-devel@lists.freedesktop.org, rodrigosiqueiramelo@gmail.com, melissa.srw@gmail.com, hamohammed.sa@gmail.com, 42.hyeyoo@gmail.com, chris.p.wilson@intel.com, gwan-gyeong.mun@intel.com, max.byungchul.park@gmail.com, boqun.feng@gmail.com, longman@redhat.com, hdanton@sina.com Subject: [PATCH v9 23/25] dept: Record the latest one out of consecutive waits of the same class Date: Tue, 31 Jan 2023 17:39:52 +0900 [thread overview] Message-ID: <1675154394-25598-24-git-send-email-max.byungchul.park@gmail.com> (raw) In-Reply-To: <1675154394-25598-1-git-send-email-max.byungchul.park@gmail.com> The current code records all the waits for later use to track relation between waits and events in each context. However, since the same class is handled the same way, it'd be okay to record only one on behalf of the others if they all have the same class. Even though it's the ideal to search the whole history buffer for that, since it'd cost too high, alternatively, let's keep the latest one at least when the same class'ed waits consecutively appear. Signed-off-by: Byungchul Park <max.byungchul.park@gmail.com> --- kernel/dependency/dept.c | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/kernel/dependency/dept.c b/kernel/dependency/dept.c index 3ab999f..2887858 100644 --- a/kernel/dependency/dept.c +++ b/kernel/dependency/dept.c @@ -1522,9 +1522,28 @@ static inline struct dept_wait_hist *new_hist(void) return wh; } +static inline struct dept_wait_hist *last_hist(void) +{ + int pos_n = hist_pos_next(); + struct dept_wait_hist *wh_n = hist(pos_n); + + /* + * This is the first try. + */ + if (!pos_n && !wh_n->wait) + return NULL; + + return hist(pos_n + DEPT_MAX_WAIT_HIST - 1); +} + static void add_hist(struct dept_wait *w, unsigned int wg, unsigned int ctxt_id) { - struct dept_wait_hist *wh = new_hist(); + struct dept_wait_hist *wh; + + wh = last_hist(); + + if (!wh || wh->wait->class != w->class || wh->ctxt_id != ctxt_id) + wh = new_hist(); if (likely(wh->wait)) put_wait(wh->wait); -- 1.9.1
WARNING: multiple messages have this Message-ID (diff)
From: Byungchul Park <max.byungchul.park@gmail.com> To: linux-kernel@vger.kernel.org Cc: hamohammed.sa@gmail.com, hdanton@sina.com, jack@suse.cz, peterz@infradead.org, daniel.vetter@ffwll.ch, amir73il@gmail.com, david@fromorbit.com, dri-devel@lists.freedesktop.org, mhocko@kernel.org, linux-mm@kvack.org, linux-ide@vger.kernel.org, adilger.kernel@dilger.ca, chris.p.wilson@intel.com, joel@joelfernandes.org, 42.hyeyoo@gmail.com, cl@linux.com, will@kernel.org, duyuyang@gmail.com, sashal@kernel.org, paolo.valente@linaro.org, damien.lemoal@opensource.wdc.com, willy@infradead.org, hch@infradead.org, mingo@redhat.com, djwong@kernel.org, vdavydov.dev@gmail.com, rientjes@google.com, dennis@kernel.org, linux-ext4@vger.kernel.org, ngupta@vflare.org, johannes.berg@intel.com, boqun.feng@gmail.com, dan.j.williams@intel.com, josef@toxicpanda.com, rostedt@goodmis.org, gwan-gyeong.mun@intel.com, linux-block@vger.kernel.org, linux-fsdevel@vger.kernel.org, jglisse@redhat.com, viro@zeniv.linux.org.uk, longman@redhat.com, tglx@linutronix.de, vbabka@suse.cz, melissa.srw@gmail.com, sj@kernel.org, tytso@mit.edu, rodrigosiqueiramelo@gmail.com, kernel-team@lge.com, gregkh@linuxfoundation.org, jlayton@kernel.org, penberg@kernel.org, minchan@kernel.org, max.byungchul.park@gmail.com, hannes@cmpxchg.org, tj@kernel.org, akpm@linux-foundation.org, torvalds@linux-foundation.org Subject: [PATCH v9 23/25] dept: Record the latest one out of consecutive waits of the same class Date: Tue, 31 Jan 2023 17:39:52 +0900 [thread overview] Message-ID: <1675154394-25598-24-git-send-email-max.byungchul.park@gmail.com> (raw) In-Reply-To: <1675154394-25598-1-git-send-email-max.byungchul.park@gmail.com> The current code records all the waits for later use to track relation between waits and events in each context. However, since the same class is handled the same way, it'd be okay to record only one on behalf of the others if they all have the same class. Even though it's the ideal to search the whole history buffer for that, since it'd cost too high, alternatively, let's keep the latest one at least when the same class'ed waits consecutively appear. Signed-off-by: Byungchul Park <max.byungchul.park@gmail.com> --- kernel/dependency/dept.c | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/kernel/dependency/dept.c b/kernel/dependency/dept.c index 3ab999f..2887858 100644 --- a/kernel/dependency/dept.c +++ b/kernel/dependency/dept.c @@ -1522,9 +1522,28 @@ static inline struct dept_wait_hist *new_hist(void) return wh; } +static inline struct dept_wait_hist *last_hist(void) +{ + int pos_n = hist_pos_next(); + struct dept_wait_hist *wh_n = hist(pos_n); + + /* + * This is the first try. + */ + if (!pos_n && !wh_n->wait) + return NULL; + + return hist(pos_n + DEPT_MAX_WAIT_HIST - 1); +} + static void add_hist(struct dept_wait *w, unsigned int wg, unsigned int ctxt_id) { - struct dept_wait_hist *wh = new_hist(); + struct dept_wait_hist *wh; + + wh = last_hist(); + + if (!wh || wh->wait->class != w->class || wh->ctxt_id != ctxt_id) + wh = new_hist(); if (likely(wh->wait)) put_wait(wh->wait); -- 1.9.1
next prev parent reply other threads:[~2023-01-31 8:44 UTC|newest] Thread overview: 55+ messages / expand[flat|nested] mbox.gz Atom feed top 2023-01-31 8:39 [PATCH v9 00/25] DEPT(Dependency Tracker) Byungchul Park 2023-01-31 8:39 ` Byungchul Park 2023-01-31 8:39 ` [PATCH v9 01/25] llist: Move llist_{head,node} definition to types.h Byungchul Park 2023-01-31 8:39 ` Byungchul Park 2023-01-31 8:39 ` [PATCH v9 02/25] dept: Implement Dept(Dependency Tracker) Byungchul Park 2023-01-31 8:39 ` Byungchul Park 2023-01-31 8:39 ` [PATCH v9 03/25] dept: Add single event dependency tracker APIs Byungchul Park 2023-01-31 8:39 ` Byungchul Park 2023-01-31 8:39 ` [PATCH v9 04/25] dept: Add lock " Byungchul Park 2023-01-31 8:39 ` Byungchul Park 2023-01-31 8:39 ` [PATCH v9 05/25] dept: Tie to Lockdep and IRQ tracing Byungchul Park 2023-01-31 8:39 ` Byungchul Park 2023-02-01 2:28 ` kernel test robot 2023-02-01 17:42 ` kernel test robot 2023-01-31 8:39 ` [PATCH v9 06/25] dept: Add proc knobs to show stats and dependency graph Byungchul Park 2023-01-31 8:39 ` Byungchul Park 2023-01-31 8:39 ` [PATCH v9 07/25] dept: Apply sdt_might_sleep_{start,end}() to wait_for_completion()/complete() Byungchul Park 2023-01-31 8:39 ` [PATCH v9 07/25] dept: Apply sdt_might_sleep_{start, end}() " Byungchul Park 2023-02-01 3:19 ` [PATCH v9 07/25] dept: Apply sdt_might_sleep_{start,end}() " kernel test robot 2023-01-31 8:39 ` [PATCH v9 08/25] dept: Apply sdt_might_sleep_{start,end}() to PG_{locked,writeback} wait Byungchul Park 2023-01-31 8:39 ` [PATCH v9 08/25] dept: Apply sdt_might_sleep_{start, end}() to PG_{locked, writeback} wait Byungchul Park 2023-01-31 8:39 ` [PATCH v9 09/25] dept: Apply sdt_might_sleep_{start,end}() to swait Byungchul Park 2023-01-31 8:39 ` Byungchul Park 2023-01-31 8:39 ` [PATCH v9 10/25] dept: Apply sdt_might_sleep_{start,end}() to waitqueue wait Byungchul Park 2023-01-31 8:39 ` [PATCH v9 10/25] dept: Apply sdt_might_sleep_{start, end}() " Byungchul Park 2023-01-31 8:39 ` [PATCH v9 11/25] dept: Apply sdt_might_sleep_{start,end}() to hashed-waitqueue wait Byungchul Park 2023-01-31 8:39 ` [PATCH v9 11/25] dept: Apply sdt_might_sleep_{start, end}() " Byungchul Park 2023-01-31 8:39 ` [PATCH v9 12/25] dept: Distinguish each syscall context from another Byungchul Park 2023-01-31 8:39 ` Byungchul Park 2023-01-31 8:39 ` [PATCH v9 13/25] dept: Distinguish each work " Byungchul Park 2023-01-31 8:39 ` Byungchul Park 2023-01-31 8:39 ` [PATCH v9 14/25] dept: Add a mechanism to refill the internal memory pools on running out Byungchul Park 2023-01-31 8:39 ` Byungchul Park 2023-01-31 8:39 ` [PATCH v9 15/25] locking/lockdep, cpu/hotplus: Use a weaker annotation in AP thread Byungchul Park 2023-01-31 8:39 ` Byungchul Park 2023-01-31 8:39 ` [PATCH v9 16/25] dept: Apply sdt_might_sleep_{start,end}() to dma fence wait Byungchul Park 2023-01-31 8:39 ` [PATCH v9 16/25] dept: Apply sdt_might_sleep_{start, end}() " Byungchul Park 2023-01-31 8:39 ` [PATCH v9 17/25] dept: Track timeout waits separately with a new Kconfig Byungchul Park 2023-01-31 8:39 ` Byungchul Park 2023-01-31 8:39 ` [PATCH v9 18/25] dept: Apply timeout consideration to wait_for_completion()/complete() Byungchul Park 2023-01-31 8:39 ` Byungchul Park 2023-01-31 8:39 ` [PATCH v9 19/25] dept: Apply timeout consideration to swait Byungchul Park 2023-01-31 8:39 ` Byungchul Park 2023-01-31 8:39 ` [PATCH v9 20/25] dept: Apply timeout consideration to waitqueue wait Byungchul Park 2023-01-31 8:39 ` Byungchul Park 2023-01-31 8:39 ` [PATCH v9 21/25] dept: Apply timeout consideration to hashed-waitqueue wait Byungchul Park 2023-01-31 8:39 ` Byungchul Park 2023-01-31 8:39 ` [PATCH v9 22/25] dept: Apply timeout consideration to dma fence wait Byungchul Park 2023-01-31 8:39 ` Byungchul Park 2023-01-31 8:39 ` Byungchul Park [this message] 2023-01-31 8:39 ` [PATCH v9 23/25] dept: Record the latest one out of consecutive waits of the same class Byungchul Park 2023-01-31 8:39 ` [PATCH v9 24/25] dept: Make Dept able to work with an external wgen Byungchul Park 2023-01-31 8:39 ` Byungchul Park 2023-01-31 8:39 ` [PATCH v9 25/25] dept: Track the potential waits of PG_{locked,writeback} Byungchul Park 2023-01-31 8:39 ` [PATCH v9 25/25] dept: Track the potential waits of PG_{locked, writeback} Byungchul Park
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=1675154394-25598-24-git-send-email-max.byungchul.park@gmail.com \ --to=max.byungchul.park@gmail.com \ --cc=42.hyeyoo@gmail.com \ --cc=adilger.kernel@dilger.ca \ --cc=akpm@linux-foundation.org \ --cc=amir73il@gmail.com \ --cc=boqun.feng@gmail.com \ --cc=chris.p.wilson@intel.com \ --cc=cl@linux.com \ --cc=damien.lemoal@opensource.wdc.com \ --cc=dan.j.williams@intel.com \ --cc=daniel.vetter@ffwll.ch \ --cc=david@fromorbit.com \ --cc=dennis@kernel.org \ --cc=djwong@kernel.org \ --cc=dri-devel@lists.freedesktop.org \ --cc=duyuyang@gmail.com \ --cc=gregkh@linuxfoundation.org \ --cc=gwan-gyeong.mun@intel.com \ --cc=hamohammed.sa@gmail.com \ --cc=hannes@cmpxchg.org \ --cc=hch@infradead.org \ --cc=hdanton@sina.com \ --cc=jack@suse.cz \ --cc=jglisse@redhat.com \ --cc=jlayton@kernel.org \ --cc=joel@joelfernandes.org \ --cc=johannes.berg@intel.com \ --cc=josef@toxicpanda.com \ --cc=kernel-team@lge.com \ --cc=linux-block@vger.kernel.org \ --cc=linux-ext4@vger.kernel.org \ --cc=linux-fsdevel@vger.kernel.org \ --cc=linux-ide@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-mm@kvack.org \ --cc=longman@redhat.com \ --cc=melissa.srw@gmail.com \ --cc=mhocko@kernel.org \ --cc=minchan@kernel.org \ --cc=mingo@redhat.com \ --cc=ngupta@vflare.org \ --cc=paolo.valente@linaro.org \ --cc=penberg@kernel.org \ --cc=peterz@infradead.org \ --cc=rientjes@google.com \ --cc=rodrigosiqueiramelo@gmail.com \ --cc=rostedt@goodmis.org \ --cc=sashal@kernel.org \ --cc=sj@kernel.org \ --cc=tglx@linutronix.de \ --cc=tj@kernel.org \ --cc=torvalds@linux-foundation.org \ --cc=tytso@mit.edu \ --cc=vbabka@suse.cz \ --cc=vdavydov.dev@gmail.com \ --cc=viro@zeniv.linux.org.uk \ --cc=will@kernel.org \ --cc=willy@infradead.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.