현재 백로그 대기열 크기 확인

현재 백로그 대기열 크기 확인

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)) {

관련 정보