Quanta memoria mediamente viene consumata dal kernel Linux (nello spazio indirizzo del kernel) per connessione di rete TCP/IP?Quanta memoria viene consumata dal kernel Linux per connessione di rete TCP/IP?
risposta
Per una memoria di collegamento TCP consumata dipende
dimensione sk_buff (struttura di rete interno utilizzato dal kernel)
di lettura e scrittura del buffer per una connessione
la dimensione dei buffer può essere modificata come richiesto
[email protected]:~# sysctl -A | grep net | grep mem
assegno di queste variabili
questi specificare l'utilizzo massimo buffer di memoria di default per tutte le connessioni di rete nel kernel
net.core.wmem_max = 131071
net.core.rmem_max = 131071
net.core.wmem_default = 126976
net.core.rmem_default = 126976
questi specificare l'utilizzo della memoria di buffer specifico per le connessioni TCP
net.ipv4.tcp_mem = 378528 504704 757056
net.ipv4.tcp_wmem = 4096 16384 4194304
net.ipv4.tcp_rmem = 4096 87380 4194304
la tre valori specificati sono le dimensioni del buffer "min default max". Quindi, per iniziare con Linux, verranno utilizzati i valori predefiniti del buffer di lettura e scrittura per ciascuna connessione. All'aumentare del numero di connessioni, questi buffer saranno ridotti [al massimo fino al valore minimo specificato] Lo stesso vale per il valore massimo del buffer.
Questi valori possono essere impostati utilizzando questo sysctl -w KEY=KEY VALUE
es. Il comando seguente garantisce che i buffer di lettura e scrittura per ciascuna connessione siano 4096 ciascuno.
sysctl -w net.ipv4.tcp_rmem='4096 4096 4096'
sysctl -w net.ipv4.tcp_wmem='4096 4096 4096'
Dipende. Su molte molte cose
Penso che una connessione inattiva richiederà alcune centinaia di byte.
Ma se ci sono dati in trasmissione e/o ricezione dati, il consumo aumenta. Le dimensioni della finestra possono limitare approssimativamente questo consumo.
Il consumo extra per i dati non è solo i byte nella coda di ricezione/trasmissione. Esistono overhead, quindi un segmento con un byte potrebbe richiedere qualcosa come 2K. TCP tenta di ridurre questo, ad esempio unendo i segmenti in un singolo sk_buff, ma non sempre riesce.
Dipende anche da quale livello. Nel caso di uno scenario di puro bridging, c'è solo l'FDB a livello di bridge. Quando il routing entra in gioco, c'è la tabella di routing e l'FDB/vicino di livello IP db. E infine, una volta che un socket locale è in gioco, si hanno ovviamente dimensione della finestra, buffer di socket (sia di invio che di ricezione, e sono predefiniti a 128k l'ultima volta che ho controllato), liste di frammenti (se usati), quindi è lì che la memoria va, ma una risposta chiara è difficile da fare con tutte le parti in uso. È possibile utilizzare ss -m
per ottenere alcune statistiche di memoria dei socket stream locali.
Puoi spiegarmi i 4 caratteri (r, w, f, t) nell'output di 'ss -m'? – pradeepchhetri
- 1. TCPIP rete con C#
- 2. Quanta memoria viene effettivamente utilizzata dall'app Windows?
- 3. Come accedere alla memoria dello spazio utente dal kernel Linux?
- 4. L'invio di pacchetti UDP dal Linux Kernel
- 5. la quantità di memoria utilizzata dal modulo del mio kernel?
- 6. Ottenere inode dal percorso in Linux Kernel
- 7. Cambia flag di protezione memoria spazio utente dal modulo kernel
- 8. Come utilizzare la memoria contigua nel kernel di Linux?
- 9. Come pulire le cache utilizzate dal kernel Linux
- 10. Quanta memoria prima diventa scortese?
- 11. In che modo copy_from_user dal kernel Linux funziona internamente?
- 12. Kernel Linux - Ottieni l'ultimo blocco di memoria scritto
- 13. barriere di memoria e Linux kernel spinlock su TILE-Gx
- 14. Quanta memoria usa un Hashtable?
- 15. Ambiente virtuale per Linux Kernel hacking
- 16. Come viene mappata l'anatomia della memoria Spazio del kernel
- 17. In quale contesto Kernel Thread viene eseguito in Linux?
- 18. Come utilizzare il conteggio dal modulo del kernel di Linux?
- 19. python - la memoria non viene restituita al kernel
- 20. Quale contesto viene chiamata una funzione in Linux Kernel
- 21. Come mantenere l'output asm dal modulo del kernel Linux build
- 22. Quanta memoria dovrebbe occupare la mia app per iPhone?
- 23. Come posso allocare memoria nel kernel Linux per una stringa di tipo char *?
- 24. Quanta memoria viene utilizzata dai campi "mancanti facoltativi"/"vuoti ripetuti" in ProtoBuf?
- 25. Quanta memoria Java HashSet dovrebbe richiedere
- 26. Quanta memoria deve allocare "managed_shared_memory"? (boost)
- 27. Modulo Kernel Linux (* .ko) compatibilità tra i kernel
- 28. Modifica del timeout TCP per un dispositivo di rete linux
- 29. Quanta memoria usa un puntatore C++?
- 30. Quanta memoria ha una costante in C?
Puoi descrivere la situazione in modo più dettagliato? Senza di esso, la migliore stima che chiunque sarebbe in grado di dare sarebbe qualcosa come "tra 1K e 10M", che non ti aiuterà molto. Immagino tu intenda le connessioni TCP/IP dove un capo (il server?) È la tua macchina.Potete supporre che la connessione sia al momento inattiva, o almeno che non sia bloccata (cioè tutto è ACK in un tempo ragionevole)? – ugoren