GNU/Linux >> Znalost Linux >  >> Linux

Příkaz „ss“ v balíčku Iproute; Proč dotazovat tabulku Slab pro Timewait Sockets?

Promiňte, pokud toto není nejlepší fórum pro tuto otázku, ale zdá se mi to relevantnější pro jádro než pro samotné programování.

Píšu skript, který se dotáže systému na otevřené porty, abychom mohli vykreslit grafy a sledovat statistiky. K tomu používám příkaz „ss“ z balíčku iproute. Pokud spustíte ss -s|grep estab obdržíte výstup podobný tomuto:

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

Moje otázka souvisí s proměnnou timewait, která ukazuje vypočítané sokety ve stavu TIME_WAIT. Když jsem se pokoušel zjistit, jaké číslo bylo uvedeno za lomítkem, stalo se z toho bouřlivé dobrodružství hledání zdrojového kódu, které mě nakonec přivedlo k nalezení následujícího úryvku:

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

Musím přiznat, že moje pátrání po tom, co měl „slabstat“ znamenat, nakonec vedlo k tomu, že jsem se dozvěděl o slab cache a jejich reportovacím rozhraní na /proc/slabinfo.

Otázka:Co má slabtable společného s výpočty soketů TIME_WAIT? Nedaří se mi přijít na to, proč je toto číslo hlášeno, protože pokaždé, když jsem spustil příkaz na každém serveru, na kterém jsem to zkoušel, bylo číslo vždy nula.

Přijatá odpověď:

Vypadá to jako tcp_tw_buckets je to, co je nakonec dotazováno, což je struktura odstraněná v Linuxu 2.6.12

Poslední číslo by tedy pravděpodobně bylo vždy 0, pokud to není na 7 let starých jádrech.

Pokud jde o dotazování slab, pokud mohu říci, je to směšně rychlejší než ostatní dostupné metody.


Linux
  1. 15 Příklady příkazů aptitude pro správu balíčků v Linuxu

  2. Příklady příkazů RPM pro dotazování, instalaci, odstranění a upgrade balíčků

  3. Porovnání příkazů balíčku IPROUTE NET-TOOLS V/s (porovnání příkazů ip vs ifconfig)

  1. iptables:příkaz nenalezen

  2. rpm:příkaz nenalezen

  3. Jaký balíček musím nainstalovat pro použití routovacích soketů?

  1. Existuje nástroj příkazového řádku pro vizualizaci a analýzu dat?

  2. Proč `xdg-mime query filetype ...` nedokáže najít nový přidaný typ souboru?

  3. Správná syntaxe příkazu id -r