[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20240206024014.11412-1-xiaobing.li@samsung.com>
Date: Tue, 6 Feb 2024 10:40:14 +0800
From: Xiaobing Li <xiaobing.li@...sung.com>
To: axboe@...nel.dk, asml.silence@...il.com
Cc: linux-kernel@...r.kernel.org, io-uring@...r.kernel.org,
kun.dou@...sung.com, peiwei.li@...sung.com, joshi.k@...sung.com,
kundan.kumar@...sung.com, wenwen.chen@...sung.com, ruyi.zhang@...sung.com,
cliang01.li@...sung.com, xue01.he@...sung.com, Xiaobing Li
<xiaobing.li@...sung.com>
Subject: [PATCH] liburing: add script for statistics sqpoll running time
Count the running time and actual IO processing time of the sqpoll
thread, and output the statistical time to terminal.
---
The test results are as follows:
PID WorkTime(us) TotalTime(us) COMMAND
1188923 1528823 1817846 iou-sqp-1188916
1188920 1539703 1833793 iou-sqp-1188917
1188921 1544210 1847887 iou-sqp-1188918
1188922 1561503 1857846 iou-sqp-1188919
Signed-off-by: Xiaobing Li <xiaobing.li@...sung.com>
---
test/sqtimeshow.sh | 61 ++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 61 insertions(+)
create mode 100644 test/sqtimeshow.sh
diff --git a/test/sqtimeshow.sh b/test/sqtimeshow.sh
new file mode 100644
index 0000000..e85fd2f
--- /dev/null
+++ b/test/sqtimeshow.sh
@@ -0,0 +1,61 @@
+#!/usr/bin/env bash
+
+UPLINE=$(tput cuu1)
+
+function set_header() {
+ printf "\033[47;30m%-15s %-15s %-15s %-15s \033[0m\n" PID WorkTime\(us\) TotalTime\(us\) COMMAND
+}
+
+function get_time() {
+ pid=$1
+ item=$2
+ proc_file="/proc/$pid/fdinfo/6"
+ if [ ! -e $proc_file ]; then
+ return
+ fi
+ content=$(cat ${proc_file} | grep ${item} | awk -F" " '{print $2}')
+ echo ${content%us}
+}
+
+function show_util() {
+ index=0
+ while true
+ do
+ data=$(top -H -b -n 1 | grep iou-sqp)
+ if [ -z "${data}" ]; then
+ echo "no sq thread is running."
+ exit
+ fi
+ index=0
+ num=$(echo $data | tr -cd R |wc -c)
+ arr=($data)
+ len=$((${#arr[@]} / ${num}))
+ i=0
+ while [ ${i} -lt ${num} ]
+ do
+ pid=${arr[${i} * ${len}]}
+ name=${arr[${i} * ${len} + len - 1]}
+ work_time=$(get_time $pid "SqWorkTime")
+ total_time=$(get_time $pid "SqTotalTime")
+ printf "%-15s %-15s %-15s %-15s\n" ${pid} ${work_time} ${total_time} ${name}
+ ((i++))
+ done
+ sleep 2
+ update=$UPLINE
+ for j in $(seq 1 ${num}); do
+ update=$update$UPLINE
+ done
+ if [ ! -z "$(top -H -b -n 1 | grep iou-sqp)" ]; then
+ echo "$update"
+ fi
+ done
+}
+
+function main() {
+ # set header
+ set_header
+ # show util
+ show_util
+}
+
+main
--
2.34.1
Powered by blists - more mailing lists