您可以使用SystemTap编写脚本来查看qlen。以下是一个简单的示例脚本,用于跟踪输入包队列中的sk_buff数量:
probe kernel.function("enqueue_to_backlog").return {
printf("qlen: %u\n", $qlen)
}
probe kernel.statement("if (!netif_running(skb->dev))").return,
kernel.statement("if (qlen <= netdev_max_backlog && !skb_flow_limit(skb, qlen))").return {
printf("skb address: %p\n", $skb)
printf("input device name: %s\n", user_string($skb->dev->name))
printf("cpu number: %d\n", cpu())
printf("\n")
}
这个脚本会在每次enqueue_to_backlog()
函数返回时打印出当前的qlen
值。此外,它还会在特定代码段处打印出sk_buff地址、输入设备名称和CPU编号。注意,为了执行此脚本,您需要安装SystemTap工具,并使用root权限运行它。