lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [day] [month] [year] [list]
Message-ID: <20250603120755.1028396-1-lukasz.luba@arm.com>
Date: Tue,  3 Jun 2025 13:07:14 +0100
From: Lukasz Luba <lukasz.luba@....com>
To: linux-kernel@...r.kernel.org
Cc: lukasz.luba@....com,
	rostedt@...dmis.org,
	mhiramat@...nel.org,
	mathieu.desnoyers@...icios.com,
	mingo@...hat.com,
	peterz@...radead.org,
	juri.lelli@...hat.com,
	vincent.guittot@...aro.org,
	dietmar.eggemann@....com,
	bsegall@...gle.com,
	mgorman@...e.de,
	vschneid@...hat.com,
	andrii@...nel.org,
	linux-trace-kernel@...r.kernel.org,
	rafael@...nel.org
Subject: [PATCH] sched/tp: Add new tracepoint for tracking uclamp set from user-space

The user-space can set uclamp value for a given task. It impacts task
placement decisions made by the task scheduler. The user-space services
can dynamically change the uclamp values for tasks. Tracking the uclamp
changes is a very useful information and helps to understand the system
behavior. It allows to track improvements in the OS middleware and
applications which start using uclamp mechanisms and report test results.

This tracepoint is going to help in the further development of combined
kernel and middleware solutions.

Signed-off-by: Lukasz Luba <lukasz.luba@....com>
---

Hi all,

This patch is an attempt to refresh a bit my previous attempt in this
area, which can be found here [1]. It's a smaller version than the
previous one.

It's based on next-20250530.

Regards,
Lukasz Luba

[1] https://lore.kernel.org/lkml/20230509122246.1702397-1-lukasz.luba@arm.com/


 include/trace/events/sched.h | 3 +++
 kernel/sched/core.c          | 1 +
 kernel/sched/syscalls.c      | 4 ++++
 3 files changed, 8 insertions(+)

diff --git a/include/trace/events/sched.h b/include/trace/events/sched.h
index 4e6b2910cec3f..1b14d5bbc9e2a 100644
--- a/include/trace/events/sched.h
+++ b/include/trace/events/sched.h
@@ -894,6 +894,9 @@ DECLARE_TRACE_CONDITION(sched_set_state,
 	TP_ARGS(tsk, state),
 	TP_CONDITION(!!(tsk->__state) != !!state));
 
+DECLARE_TRACE(uclamp_update_task,
+	TP_PROTO(struct task_struct *p, int uclamp_id,  unsigned int value),
+	TP_ARGS(p, uclamp_id, value));
 #endif /* _TRACE_SCHED_H */
 
 /* This part must be outside protection */
diff --git a/kernel/sched/core.c b/kernel/sched/core.c
index dce50fa57471d..2c3bf0b6830fa 100644
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
@@ -116,6 +116,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(sched_util_est_cfs_tp);
 EXPORT_TRACEPOINT_SYMBOL_GPL(sched_util_est_se_tp);
 EXPORT_TRACEPOINT_SYMBOL_GPL(sched_update_nr_running_tp);
 EXPORT_TRACEPOINT_SYMBOL_GPL(sched_compute_energy_tp);
+EXPORT_TRACEPOINT_SYMBOL_GPL(uclamp_update_task_tp);
 
 DEFINE_PER_CPU_SHARED_ALIGNED(struct rq, runqueues);
 
diff --git a/kernel/sched/syscalls.c b/kernel/sched/syscalls.c
index 547c1f05b667e..e8dbc7fbe99d5 100644
--- a/kernel/sched/syscalls.c
+++ b/kernel/sched/syscalls.c
@@ -430,12 +430,16 @@ static void __setscheduler_uclamp(struct task_struct *p,
 	    attr->sched_util_min != -1) {
 		uclamp_se_set(&p->uclamp_req[UCLAMP_MIN],
 			      attr->sched_util_min, true);
+		trace_uclamp_update_task_tp(p, UCLAMP_MIN,
+					    attr->sched_util_min);
 	}
 
 	if (attr->sched_flags & SCHED_FLAG_UTIL_CLAMP_MAX &&
 	    attr->sched_util_max != -1) {
 		uclamp_se_set(&p->uclamp_req[UCLAMP_MAX],
 			      attr->sched_util_max, true);
+		trace_uclamp_update_task_tp(p, UCLAMP_MAX,
+					    attr->sched_util_max);
 	}
 }
 
-- 
2.48.1


Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ