[PATCH] liburing: add script for statistics sqpoll running time

From: Xiaobing Li
Date: Tue Feb 06 2024 - 00:23:38 EST


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@xxxxxxxxxxx>
---
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