Comando "ss" nel pacchetto iproute; perché interrogare la tabella slab per socket timewait?


15

Scusami se questo non è il miglior forum per questa domanda, ma sembra più rilevante per il kernel che per la programmazione stessa.

Sto scrivendo uno script che richiede al sistema porte aperte in modo da poter rappresentare graficamente e monitorare le statistiche. Per questo, sto usando il comando "ss" dal pacchetto iproute. Se esegui ss -s|grep estab, riceverai un output simile al seguente:

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

La mia domanda ha a che fare con la variabile timewait, che mostra i socket calcolati nello stato TIME_WAIT. Quando ho provato a capire a quale numero si riferiva dopo la barra, è diventata un'avventura vorticosa di ricerca del codice sorgente che alla fine mi ha portato a trovare il seguente frammento:

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

Devo ammettere che la mia ricerca di ciò che "slabstat" avrebbe dovuto significare alla fine ha portato alla mia conoscenza delle cache delle lastre e della loro interfaccia di reportistica su / proc / slabinfo.

La domanda: cosa c'entra la slabtable con i calcoli del socket TIME_WAIT? Non riesco a capire perché questo numero venga segnalato, poiché ogni volta che eseguo il comando su tutti i server su cui l'ho provato, il numero è sempre stato zero.


In tutta onestà, si sarebbe probabilmente ottenere le migliori risposte inviando questo per una delle liste relative kernel mailing, vedere tux.org/lkml/#related-lists
jeremiahd

Il codice mostra solo quanti socket di attesa sono allocati nel solaio. IMO aiuta solo a determinare l'utilizzo della memoria
Ulrich Dangel,

Risposte:


0

Sembra tcp_tw_bucketsche sia alla fine il polling, che è una struttura rimossa da Linux 2.6.12

Quindi l'ultimo numero sarebbe probabilmente sempre 0 a meno che non sia su kernel di 7 anni.

Per quanto riguarda l'interrogazione della lastra, per quanto ne so è ridicolmente più veloce degli altri metodi disponibili.


Se si trova su un kernel prima del 2.6.12, il valore slabstat.tcp_tws sarà uguale a s.tcp_tws ? C'è qualche differenza tra questi due valori? (uno è di / proc / net / sockstat e uno di / proc / slabinfo)
ruanhao
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.