403Webshell
Server IP : 112.74.42.100  /  Your IP : 216.73.216.142
Web Server : nginx/1.20.2
System : Linux iZwz96lx4pjqiy84w4hni7Z 5.10.134-17.3.al8.x86_64 #1 SMP Thu Oct 31 14:29:57 CST 2024 x86_64
User : www ( 1000)
PHP Version : 8.0.26
Disable Function : passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : ON  |  Pkexec : ON
Directory :  /usr/local/sysak/.sysak_components/tools/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /usr/local/sysak/.sysak_components/tools/applatency
#!/bin/sh
#****************************************************************#
# ScriptName: applatency.sh
# Author: $SHTERM_REAL_USER@alibaba-inc.com
# Create Date: 2023-01-03 10:53
# Modify Author: $SHTERM_REAL_USER@alibaba-inc.com
# Modify Date: 2023-01-03 10:53
# Function:
#***************************************************************#
TOOLS_ROOT="$SYSAK_WORK_PATH/tools"
usage() {
	echo "sysak applatency: auto detect the latency source"
	echo "options: -h,          help information"
	echo "         -t threshold,latency time, default 10ms"
	echo "         -l logfile,  file for tracing log"
	echo "         -c name,     the traced process name"
	echo "         -p pid,      the traced process id"
}


log_dir=/var/log/sysak/applatency/
irqlog=${log_dir}irqoff-`date "+%Y-%m-%d-%H-%M-%S"`.log
noschedlog=${log_dir}nosched-`date "+%Y-%m-%d-%H-%M-%S"`.log
sslowlog=${log_dir}sslow-`date "+%Y-%m-%d-%H-%M-%S"`.log
rqlog=${log_dir}rq-`date "+%Y-%m-%d-%H-%M-%S"`.log

lat_thresh=10
system_wide="true"

while getopts 't:l:c:p:h' OPT; do
	case $OPT in
		"h")
			usage
			exit 0
			;;
		"t")
			lat_thresh=$OPTARG
			;;
		"l")
			irqlog=irqoff-$OPTARG
			noschedlog=nosched-$OPTARG
			sslowlog=sslow-$OPTARG
			rqlog=rq-$OPTARG
			;;
		"c")
			cmdname="$OPTARG"
			app_name=$cmdname
			system_wide="false"
			;;
		"p")
			pid=$OPTARG
			app_name=`head -n 1 /proc/$pid/status  | awk {'printf $2'}`
			system_wide="false"
			;;
		*)
			usage
			exit -1
		;;
	esac
done

mkdir -p $log_dir

$TOOLS_ROOT/irqoff -f $irqlog -t $lat_thresh &
irqoff_pid=$!
$TOOLS_ROOT/nosched -f $noschedlog -t $lat_thresh &
nosched_pid=$!
if [ -n "$cmdname" ]; then
	$TOOLS_ROOT/runqslower -f $rqlog -P $lat_thresh &
	rqslow_pid=$!
	$TOOLS_ROOT/syscall_slow -t $lat_thresh -f $sslowlog -c $cmdname &
	sslow_pid=$!
else
	if [ -n "$pid" ]; then
		$TOOLS_ROOT/runqslower -f $rqlog -P -p $pid $lat_thresh &
		rqslow_pid=$!
		$TOOLS_ROOT/syscall_slow -t $lat_thresh -f $sslowlog -p $pid &
		sslow_pid=$!
	else
		$TOOLS_ROOT/runqslower -f $rqlog -P $lat_thresh &
		rqslow_pid=$!
		$TOOLS_ROOT/syscall_slow -t $lat_thresh -f $sslowlog &
		sslow_pid=$!
	fi
fi

cleanup() {
	kill $irqoff_pid
	kill $nosched_pid
	kill $sslow_pid
	kill $rqslow_pid
}

trap cleanup INT QUIT TERM
wait $irqoff_pid
wait $nosched_pid
wait $sslow_pid
wait $rqslow_pid

check_irqoff() {
	irqoff_cnt=0
	if [ $system_wide == "true" ]; then
		irqoff_cnt=`grep -nr "20[0-9][0-9]-[0-1][0-9]-[0-3][0-9]" $irqlog | wc -l`
	else
		irqoff_cnt=`grep -nrw $app_name $irqlog | wc -l`
	fi

	if [ "$irqoff_cnt" -gt 0 ]; then
		echo "$irqoff_cnt irqoff events may delay $app_name running, see more $irqlog"
	fi
}

check_nosched() {
	nosched_cnt=0
	if [ $system_wide == "true" ]; then
		nosched_cnt=`grep -nr "20[0-9][0-9]-[0-1][0-9]-[0-3][0-9]" $noschedlog | wc -l`
	else
		nosched_cnt=`grep -nrw $app_name $noschedlog | wc -l`
	fi

	if [ "$nosched_cnt" -gt 0 ]; then
		echo "$nosched_cnt nosched events may delay $app_name running, see more $noschedlog"
	fi
}

check_rqslow() {
	rqslow_cnt=0
	if [ $system_wide == "true" ]; then
		rqslow_cnt=`grep -nr "20[0-9][0-9]-[0-1][0-9]-[0-3][0-9]" $rqlog | wc -l`
	else
		rqslow_cnt=`grep -nrw $app_name $rqlog | wc -l`
	fi

	if [ "$rqslow_cnt" -gt 0 ]; then
		echo "$rqslow_cnt runq slow events may delay $app_name running, see more $rqlog"
	fi

}

check_syscall() {
	slowsys_cnt=0
	if [ $system_wide == "true" ]; then
		slowsys_cnt=`grep -nr "20[0-9][0-9]-[0-1][0-9]-[0-3][0-9]" $sslowlog | wc -l`
	else
		slowsys_cnt=`grep -nrw \($app_name\) $sslowlog | wc -l`
	fi

	if [ "$slowsys_cnt" -gt 0 ]; then
		echo "$slowsys_cnt slow syscall events may delay $app_name running, see more $sslowlog"
	fi

}

check_irqoff
check_nosched
check_rqslow
check_syscall

Youez - 2016 - github.com/yon3zu
LinuXploit