Qual è la dimensione massima del buffer di ricezione di Linux UDP? Ho pensato che è limitato solo dalla RAM disponibile, ma quando ho impostatoDimensione massima UDP Linux del buffer di ricezione
5 GB rmem_max:
echo 5000000000 > /proc/sys/net/core/rmem_max
e 4GB per il buffer di presa effettiva (in Erlang):
gen_udp:listen(Port, [{recbuf, 4000000000}])
Quando misuro l'utilizzo del buffer, mostra:
# netstat -u6anp | grep 5050
udp6 1409995136 0 :::5050 :::* 13483/beam.smp
Non riesco a superare questo 1,4 GB. Per dimensioni tampone più piccole, come ad es. 500 MB, la dimensione effettiva del buffer corrispondeva al valore configurato. Il mio sistema è Debian 6.0, la macchina ha 50GB di RAM disponibili.
Dove dice che è limitato solo dalla RAM disponibile? E perché pensi di aver bisogno di un buffer da 4 GB? – EJP
Non funziona. Non dice neanche che sia limitato in nessun altro modo. Ho bisogno di un tale buffer per evitare la perdita di dati durante la sbirciatina del traffico di rete più lungo. –
Al contrario. Dice che il kernel può aggiustare il valore che fornisci up o down, e ti consiglia di chiamare 'getsockopt()' per vedere quale valore è stato effettivamente assegnato. Trovo difficile credere di aver bisogno di 4 GB per gestire i picchi del traffico. Probabilmente dovresti leggere più velocemente. – EJP