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

From: Jens Axboe
Date: Sun Feb 18 2024 - 08:00:51 EST


On 2/17/24 10:59 PM, Xiaobing Li wrote:
> On 2/6/24 10:40 AM, Xiaobing Li wrote:
>> 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
>
> Hi, Jens and Pavel
> This patch is to add a script that displays the statistics of the
> sqpoll thread to the terminal.

No objections to this one, but it will not get applied until the kernel
side is sorted out.

--
Jens Axboe