verificar o tamanho atual da fila de pendências

5

O sysctl netdev_max_backlog define um limite para o número máximo de pacotes permitidos na fila de pendências do kernel.

Existe uma maneira de verificar o tamanho da fila atual (ou seja, quantos pacotes estão atualmente na fila em um determinado momento)?

Literalmente, o valor de queue->input_pkt_queue.qlen de 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;
    }
    
por Christopher Neylan 16.06.2015 / 15:55

1 resposta

0

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

sonda do systemtap. O número da linha (3536) depende da versão do kernel, procure por esta linha

if (qlen <= netdev_max_backlog && !skb_flow_limit(skb, qlen)) {
    
por 27.07.2018 / 17:25