sysctl は、netdev_max_backlog
カーネルバックログキューに許可される最大パケット数の制限を設定します。
確認する方法はありますか?現在のキューサイズ(つまり、特定の時間に現在キューにあるパケット数)?
queue->input_pkt_queue.qlen
文字通り from の値は次のとおりですnet/core/dev.c:netif_rx()
。
queue = &__get_cpu_var(softnet_data);
__get_cpu_var(netdev_rx_stat).total++;
if (queue->input_pkt_queue.qlen <= netdev_max_backlog) {
if (queue->input_pkt_queue.qlen) {
enqueue:
__skb_queue_tail(&queue->input_pkt_queue, skb);
local_irq_restore(flags);
return NET_RX_SUCCESS;
}
答え1
probe kernel.statement("enqueue_to_backlog@net/core/dev.c:3536") {
printf("probe enqueue_to_backlog on cpu: %d qlen: %d\n", $sd->cpu, $qlen + 1)
}
システムタブプローブ。行番号(3536)はカーネルのバージョンによって異なります。この行を探してください。
if (qlen <= netdev_max_backlog && !skb_flow_limit(skb, qlen)) {