// backlog.stp global syn_stat, acc_stat global syn_total, acc_total probe begin { println("Tracing...Hit Ctl-C to exit.") } probe kernel.function("tcp_v4_conn_request") { qlen = @cast($sk, "struct inet_connection_sock")->icsk_accept_queue->listen_opt->qlen //max_qlen_log = @cast($sk, "struct inet_connection_sock")->icsk_accept_queue->listen_opt->max_qlen_log sk_ack_backlog = $sk->sk_ack_backlog //sk_max_ack_backlog = $sk->sk_max_ack_backlog syn_stat <<< qlen acc_stat <<< sk_ack_backlog syn_total++ acc_total++ /* println("Syn-Q cur: ", qlen, " Syn-Q max: ", max_qlen_log, " Acc-Q cur: ", sk_ack_backlog, " Acc-Q max: ", sk_max_ack_backlog) */ } probe timer.ms(1000) { if(@count(syn_stat)>0) { println("=== Syn-Q ===") println("min/avg/max: ", @min(syn_stat), "/", @avg(syn_stat), "/", @max(syn_stat)) println("total num: ", syn_total) println(@hist_log(syn_stat)) println("=== Acc-Q ===") println("min/avg/max: ", @min(acc_stat), "/", @avg(acc_stat), "/", @max(acc_stat)) println("total num: ", acc_total) println(@hist_log(acc_stat)) } }