İproute paketinde “ss” komutu; neden timewait soketleri için döşeme tablosu?


15

Bu soru için en iyi forum değilse beni affet, ama çekirdekle programlamanın kendisinden daha alakalı görünüyor.

Grafikleri ve istatistikleri izleyebilmemiz için açık portlar için sistemi sorgulayan bir komut dosyası yazıyorum. Bunun için iproute paketinden "ss" komutunu kullanıyorum. Eğer yürütürseniz ss -s|grep estab, buna benzer bir çıktı alırsınız:

TCP:   296 (estab 6, closed 238, orphaned 0, synrecv 0, timewait 238/0), ports 0

Sorum, hesaplanan soketleri TIME_WAIT durumunda gösteren timewait değişkeni ile ilgili. Eğik çizgiden sonra hangi sayıya atıfta bulunulduğunu anlamaya çalıştığımda, sonuçta aşağıdaki snippet'i bulmamı sağlayan kaynak kodunu arama kasırga macerasına dönüştü:

printf("TCP:   %d (estab %d, closed %d, orphaned %d, synrecv %d, timewait %d/%d), ports %d\n",
       s.tcp_total + slabstat.tcp_syns + s.tcp_tws,
       sn.tcp_estab,
       s.tcp_total - (s.tcp4_hashed+s.tcp6_hashed-s.tcp_tws),
       s.tcp_orphans,
       slabstat.tcp_syns,
       s.tcp_tws, slabstat.tcp_tws,
       slabstat.tcp_ports
       );

İtiraf etmeliyim ki, "slabstat" ın ne anlama geldiğini araştırmam nihayetinde slab önbellekleri ve / proc / slabinfo'daki raporlama arayüzü hakkında öğrenmemle sonuçlandı.

Soru: Slabtable'ın TIME_WAIT soket hesaplamaları ile ne ilgisi var? Komutu denediğim her sunucuda her çalıştırdığımda, sayı her zaman sıfır olduğu için bu sayının neden bildirildiğini anlayamıyorum.


Dürüst olmak gerekirse, muhtemelen ilgili çekirdek posta listelerinden birine göndererek en iyi yanıtları alırsınız, bkz. Tux.org/lkml/#related-lists
jeremiahd

Kod, plakada kaç tane bekleme soketinin tahsis edildiğini gösterir. IMO sadece bellek kullanımını belirlemeye yardımcı oluyor
Ulrich Dangel

Yanıtlar:


0

tcp_tw_bucketsNihayetinde sorgulanan şey gibi görünüyor , bu da Linux 2.6.12'den itibaren kaldırılan bir yapı

7 yaşındaki çekirdeklerde olmadıkça son sayı her zaman 0 olur.

Döşeme sorgulama gelince, söyleyebildiğim kadarıyla diğer yöntemlerden gülünç daha hızlı.


O 2.6.12'den önce kernel üzerindeyse, değer olacaktır slabstat.tcp_tws eşit s.tcp_tws ? Bu iki değer arasında herhangi bir fark var mı? (biri / proc / net / sockstat'tan ve biri / proc / slabinfo'dan)
ruanhao
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.