diff options
author | Daniel Bristot de Oliveira <bristot@kernel.org> | 2023-09-15 15:02:32 +0200 |
---|---|---|
committer | Daniel Bristot de Oliveira <bristot@kernel.org> | 2023-09-22 14:43:46 +0200 |
commit | e8c44d3b713b96cda055a23b21e8c4f931dd159f (patch) | |
tree | 33e9b2c38cc4959b06d0094b8f774e8468ffd957 /tools | |
parent | 301deca09b254965661d3e971f1a60ac2ce41f5f (diff) |
rtla/timerlat: Do not stop user-space if a cpu is offline
If no CPU list is passed, timerlat in user-space will dispatch
one thread per sysconf(_SC_NPROCESSORS_CONF). However, not all
CPU might be available, for instance, if HT is disabled.
Currently, rtla timerlat is stopping the session if an user-space
thread cannot set affinity to a CPU, or if a running user-space
thread is killed. However, this is too restrictive.
So, reduce the error to a debug message, and rtla timerlat run as
long as there is at least one user-space thread alive.
Link: https://lore.kernel.org/lkml/59cf2c882900ab7de91c6ee33b382ac7fa6b4ed0.1694781909.git.bristot@kernel.org
Fixes: cdca4f4e5e8e ("rtla/timerlat_top: Add timerlat user-space support")
Signed-off-by: Daniel Bristot de Oliveira <bristot@kernel.org>
Diffstat (limited to 'tools')
-rw-r--r-- | tools/tracing/rtla/src/timerlat_u.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/tools/tracing/rtla/src/timerlat_u.c b/tools/tracing/rtla/src/timerlat_u.c index 05e310696dd5..01dbf9a6b5a5 100644 --- a/tools/tracing/rtla/src/timerlat_u.c +++ b/tools/tracing/rtla/src/timerlat_u.c @@ -45,7 +45,7 @@ static int timerlat_u_main(int cpu, struct timerlat_u_params *params) retval = sched_setaffinity(gettid(), sizeof(set), &set); if (retval == -1) { - err_msg("Error setting user thread affinity\n"); + debug_msg("Error setting user thread affinity %d, is the CPU online?\n", cpu); exit(1); } @@ -193,7 +193,9 @@ void *timerlat_u_dispatcher(void *data) procs_count--; } } - break; + + if (!procs_count) + break; } sleep(1); |