На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
  
> Есть ли возможность мониторить TCP-backlog для процесса? , Linux
    Тут есть хорошее описание работы TCP backlog на ядре 2.2:
    http://veithen.github.io/2014/01/01/how-tc...s-in-linux.html


    Есть ли возможность посмотреть какова заполненость очереди для определенного процесса, типа:

    ExpandedWrap disabled
      backlog -pid 12345


    ?
    Сообщение отредактировано: rlib -
      Можно попробовать
      ExpandedWrap disabled
        netstat -ntp

      Потом погрипать нужный PID
        Каким образом из аутпута netstat я могу сделать вывод о текущем рамере очереди ESTABLISHED CONNECTIONs?
        Сообщение отредактировано: rlib -
          Цитата rlib @
          рамере очереди ESTABLISHED CONNECTION

          Такой очереди, ЕМНИП, нет. Есть очереди входящие и исходящие.
          А про подсчет размеров может быть это поможет.

          Добавлено
          Но в такой постановке задачи типа "backlog -pid 12345" - не встречал утилит. Возможно самому придется писать, ибо если даже комбинации консольных утилит и как-то позволят извлечь информацию, это процесс небыстрый - о рилтайме забыть. В линухе вроде есть нечто типа auditd - может в ту сторону покопать.
            http://veithen.github.io/2014/01/01/how-tc...s-in-linux.html

            The implementation uses two queues, a SYN queue (or incomplete connection queue) and an accept queue (or complete connection queue). Connections in state SYN RECEIVED are added to the SYN queue and later moved to the accept queue when their state changes to ESTABLISHED, i.e. when the ACK packet in the 3-way handshake is received. As the name implies, the accept call is then implemented simply to consume connections from the accept queue. In this case, the backlog argument of the listen syscall determines the size of the accept queue.

            For IPv4, the first line of code will actually call tcp_v4_syn_recv_sock in net/ipv4/tcp_ipv4.c, which contains the following code:

            ExpandedWrap disabled
              if (sk_acceptq_is_full(sk))
                 goto exit_overflow;


            Собственно нужно добратся до структуры, которую прверяет функция
            ExpandedWrap disabled
              sk_acceptq_is_full(sk)
            Сообщение отредактировано: rlib -
              Цитата rlib @
              Собственно нужно добратся до структуры, которую прверяет функция

              Это не даст ожидаемого. Вопрос был изначально "заполненность очереди для определенного процесса", но, если я правильно понял - очередей процессу ни кто не выделял и не создавал. Есть сокет(ы) которые открывает приложение и посредством них работает с цепочкой сетевых драйверов - и очереди в них (в дровах). Вот есть интересная статейка.
                http://lxr.free-electrons.com/source/include/net/sock.h#L798

                ExpandedWrap disabled
                   socket_lock_t           sk_lock;
                  344         struct sk_buff_head     sk_receive_queue;
                  345         /*
                  346          * The backlog queue is special, it is always used with
                  347          * the per-socket spinlock held and requires low latency
                  348          * access. Therefore we special case it's implementation.
                  349          * Note : rmem_alloc is in this structure to fill a hole
                  350          * on 64bit arches, not because its logically part of
                  351          * backlog.
                  352          */
                  353         struct {
                  354                 atomic_t        rmem_alloc;
                  355                 int             len;
                  356                 struct sk_buff  *head;
                  357                 struct sk_buff  *tail;
                  358         } sk_backlog;
                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                0 пользователей:


                Рейтинг@Mail.ru
                [ Script execution time: 0,0241 ]   [ 15 queries used ]   [ Generated: 4.05.24, 18:31 GMT ]