linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/2] kernel/latencytop.c: rename clear_all_latency_tracing to clear_tsk_latency_tracing
@ 2019-02-26 11:46 Lin Feng
  2019-02-26 11:46 ` [PATCH 2/2] kernel/latencytop.c: remove unnecessary checks for latencytop_enabled Lin Feng
  0 siblings, 1 reply; 2+ messages in thread
From: Lin Feng @ 2019-02-26 11:46 UTC (permalink / raw)
  To: linux-kernel; +Cc: akpm, adobriyan, fabf, arjan, linf

The name clear_all_latency_tracing is misleading, in fact which only
clear per task's latency_record[], and we do have another function
named clear_global_latency_tracing which clear the global
latency_record[] buffer.

Signed-off-by: Lin Feng <linf@wangsu.com>
---
 fs/proc/base.c             | 2 +-
 include/linux/latencytop.h | 4 ++--
 kernel/fork.c              | 2 +-
 kernel/latencytop.c        | 2 +-
 4 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/fs/proc/base.c b/fs/proc/base.c
index f5ed9512d193..da0f6112d314 100644
--- a/fs/proc/base.c
+++ b/fs/proc/base.c
@@ -511,7 +511,7 @@ static ssize_t lstats_write(struct file *file, const char __user *buf,
 
 	if (!task)
 		return -ESRCH;
-	clear_all_latency_tracing(task);
+	clear_tsk_latency_tracing(task);
 	put_task_struct(task);
 
 	return count;
diff --git a/include/linux/latencytop.h b/include/linux/latencytop.h
index 7c560e0dc8f4..9022f0c2e2e4 100644
--- a/include/linux/latencytop.h
+++ b/include/linux/latencytop.h
@@ -36,7 +36,7 @@ account_scheduler_latency(struct task_struct *task, int usecs, int inter)
 		__account_scheduler_latency(task, usecs, inter);
 }
 
-void clear_all_latency_tracing(struct task_struct *p);
+void clear_tsk_latency_tracing(struct task_struct *p);
 
 extern int sysctl_latencytop(struct ctl_table *table, int write,
 			void __user *buffer, size_t *lenp, loff_t *ppos);
@@ -48,7 +48,7 @@ account_scheduler_latency(struct task_struct *task, int usecs, int inter)
 {
 }
 
-static inline void clear_all_latency_tracing(struct task_struct *p)
+static inline void clear_tsk_latency_tracing(struct task_struct *p)
 {
 }
 
diff --git a/kernel/fork.c b/kernel/fork.c
index b69248e6f0e0..4f32faf9dfa9 100644
--- a/kernel/fork.c
+++ b/kernel/fork.c
@@ -1963,7 +1963,7 @@ static __latent_entropy struct task_struct *copy_process(
 #ifdef TIF_SYSCALL_EMU
 	clear_tsk_thread_flag(p, TIF_SYSCALL_EMU);
 #endif
-	clear_all_latency_tracing(p);
+	clear_tsk_latency_tracing(p);
 
 	/* ok, now we should be set up.. */
 	p->pid = pid_nr(pid);
diff --git a/kernel/latencytop.c b/kernel/latencytop.c
index 96b4179cee6a..9e794b49791e 100644
--- a/kernel/latencytop.c
+++ b/kernel/latencytop.c
@@ -67,7 +67,7 @@ static struct latency_record latency_record[MAXLR];
 
 int latencytop_enabled;
 
-void clear_all_latency_tracing(struct task_struct *p)
+void clear_tsk_latency_tracing(struct task_struct *p)
 {
 	unsigned long flags;
 
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 2+ messages in thread

* [PATCH 2/2] kernel/latencytop.c: remove unnecessary checks for latencytop_enabled
  2019-02-26 11:46 [PATCH 1/2] kernel/latencytop.c: rename clear_all_latency_tracing to clear_tsk_latency_tracing Lin Feng
@ 2019-02-26 11:46 ` Lin Feng
  0 siblings, 0 replies; 2+ messages in thread
From: Lin Feng @ 2019-02-26 11:46 UTC (permalink / raw)
  To: linux-kernel; +Cc: akpm, adobriyan, fabf, arjan, linf

1. In latencytop source codes, we only have such calling chain:
account_scheduler_latency(struct task_struct *task, int usecs, int inter)
{
        if (unlikely(latencytop_enabled)) /* the outtermost check */
                __account_scheduler_latency(task, usecs, inter);
}
__account_scheduler_latency
    account_global_scheduler_latency
        if (!latencytop_enabled)

So, the inner check for latencytop_enabled is not necessary at all.

2. In clear_all_latency_tracing and now is called
clear_tsk_latency_tracing the check for latencytop_enabled is redundant
and buggy to some extent.
We have no reason to refuse clearing the /proc/$pid/latency if
latencytop_enabled is set to 0, considering that if we use latencytop
manually by echo 0 > /proc/sys/kernel/latencytop, then we want to clear
/proc/$pid/latency and failed.
Aslo we don't have such check in brother function
clear_global_latency_tracing.

Notes: These changes only visible to users who sets CONFIG_LATENCYTOP and
won't change user tool latencytop's behaviors.

Signed-off-by: Lin Feng <linf@wangsu.com>
---
 kernel/latencytop.c | 6 ------
 1 file changed, 6 deletions(-)

diff --git a/kernel/latencytop.c b/kernel/latencytop.c
index 9e794b49791e..897895efafd9 100644
--- a/kernel/latencytop.c
+++ b/kernel/latencytop.c
@@ -71,9 +71,6 @@ void clear_tsk_latency_tracing(struct task_struct *p)
 {
 	unsigned long flags;
 
-	if (!latencytop_enabled)
-		return;
-
 	raw_spin_lock_irqsave(&latency_lock, flags);
 	memset(&p->latency_record, 0, sizeof(p->latency_record));
 	p->latency_record_count = 0;
@@ -96,9 +93,6 @@ account_global_scheduler_latency(struct task_struct *tsk,
 	int firstnonnull = MAXLR + 1;
 	int i;
 
-	if (!latencytop_enabled)
-		return;
-
 	/* skip kernel threads for now */
 	if (!tsk->mm)
 		return;
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2019-02-26 11:54 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-02-26 11:46 [PATCH 1/2] kernel/latencytop.c: rename clear_all_latency_tracing to clear_tsk_latency_tracing Lin Feng
2019-02-26 11:46 ` [PATCH 2/2] kernel/latencytop.c: remove unnecessary checks for latencytop_enabled Lin Feng

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).