!26 blktrace bug fix
From: @lin-xiaoran Reviewed-by: @liuzhiqiang26 Signed-off-by: @liuzhiqiang26
This commit is contained in:
commit
b79d9a0e89
65
0016-blktrace-fix-exit-directly-when-nthreads-running.patch
Normal file
65
0016-blktrace-fix-exit-directly-when-nthreads-running.patch
Normal file
@ -0,0 +1,65 @@
|
||||
From 3a1b1366d30375cdb0f5b299df4edda0c8ba3bcc Mon Sep 17 00:00:00 2001
|
||||
From: lijinlin <lijinlin3@huawei.com>
|
||||
Date: Mon, 28 Jun 2021 13:41:32 -0600
|
||||
Subject: blktrace: exit directly when nthreads_running != ncpus in
|
||||
run_tracers()
|
||||
|
||||
We found blktrace got stuck when cgroup restricts blktrace to use cpu,
|
||||
the messages and stack is:
|
||||
[root@localhost ~]# blktrace -w 10 -o- /dev/sda
|
||||
FAILED to start thread on CPU 1: 22/Invalid argument
|
||||
FAILED to start thread on CPU 2: 22/Invalid argument
|
||||
[root@localhost ~]# cat /proc/1385110/stack
|
||||
[<0>] __switch_to+0xe8/0x150
|
||||
[<0>] futex_wait_queue_me+0xd4/0x158
|
||||
[<0>] futex_wait+0xf4/0x230
|
||||
[<0>] do_futex+0x470/0x900
|
||||
[<0>] __arm64_sys_futex+0x13c/0x188
|
||||
[<0>] el0_svc_common+0x80/0x200
|
||||
[<0>] el0_svc_handler+0x78/0xe0
|
||||
[<0>] el0_svc+0x10/0x260
|
||||
[<0>] 0xffffffffffffffff
|
||||
|
||||
Blktrace failed to start thread is caused by thread can't lock on the
|
||||
Restricted cpu. In this case, blktrace would't schedule an alarm after
|
||||
defined time to set variable 'done' as 1.
|
||||
We debug the code and found the call trace as bellow:
|
||||
main()
|
||||
==>run_tracers()
|
||||
==>wait_tracers()
|
||||
==>process_trace_bufs()
|
||||
==>wait_empty_entries()
|
||||
==>t_pthread_cond_wait()
|
||||
Blktrace was set to piped output, so the process is stuck in
|
||||
wait_empty_entries() for wait variable 'done' have been set as 1.
|
||||
|
||||
We set variable 'done' as 1 when 'nthreads_running' is not equal to
|
||||
'ncpus' in run_tracers() to fix the problem.
|
||||
|
||||
Signed-off-by: lijinlin <lijinlin3@huawei.com>
|
||||
Signed-off-by: Zhiqiang Liu <liuzhiqiang26@huawei.com>
|
||||
Signed-off-by: Lixiaokeng <lixiaokeng@huawei.com>
|
||||
Signed-off-by: Jens Axboe <axboe@kernel.dk>
|
||||
---
|
||||
blktrace.c | 4 +++-
|
||||
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/blktrace.c b/blktrace.c
|
||||
index 82a6aad..3444fbb 100644
|
||||
--- a/blktrace.c
|
||||
+++ b/blktrace.c
|
||||
@@ -2705,8 +2705,10 @@ static int run_tracers(void)
|
||||
printf("blktrace: connected!\n");
|
||||
if (stop_watch)
|
||||
alarm(stop_watch);
|
||||
- } else
|
||||
+ } else {
|
||||
stop_tracers();
|
||||
+ done = 1;
|
||||
+ }
|
||||
|
||||
wait_tracers();
|
||||
if (nthreads_running == ncpus)
|
||||
--
|
||||
cgit 1.2.3-1.el7
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
Name: blktrace
|
||||
Version: 1.2.0
|
||||
Release: 16
|
||||
Release: 17
|
||||
Summary: Block IO tracer in the Linux kernel
|
||||
License: GPLv2+
|
||||
Source: http://brick.kernel.dk/snaps/blktrace-%{version}.tar.bz2
|
||||
@ -24,6 +24,7 @@ Patch12: 0012-btt_plot.py-Use-with-open-as-.-context-manager.patch
|
||||
Patch13: 0013-blkparse-Fix-device-in-event-tracking-error-messages.patch
|
||||
Patch14: 0014-blkparse-Allow-request-tracking-on-non-md-dm-devices.patch
|
||||
Patch15: 0015-blkparse-Initialize-and-test-for-undefined-request-t.patch
|
||||
Patch16: 0016-blktrace-fix-exit-directly-when-nthreads-running.patch
|
||||
|
||||
%description
|
||||
blktrace is a block layer IO tracing mechanism which provides detailed
|
||||
@ -88,6 +89,9 @@ comparing the differences between different benchmark runs.
|
||||
%{_mandir}/man1/iowatcher.*
|
||||
|
||||
%changelog
|
||||
* Fri Jul 02 2021 linxiaoran <linxiaoran@huawei.com> - 1.2.0-17
|
||||
- Fix blktrace exit patch
|
||||
|
||||
* Thu Sep 10 2020 lihaotian <lihaotian9@huawei.com> - 1.2.0-16
|
||||
- create iowatcher rpm sub-package
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user