Kích thước tối đa của bộ đệm nhận UDP Linux là gì? Tôi nghĩ nó chỉ bị giới hạn bởi bộ nhớ RAM có sẵn, nhưng khi tôi đặtKích thước tối đa của Linux UDP của bộ đệm nhận
5GB cho rmem_max:
echo 5000000000 > /proc/sys/net/core/rmem_max
và 4GB cho bộ đệm ổ cắm thực tế (trong Erlang):
gen_udp:listen(Port, [{recbuf, 4000000000}])
Khi tôi đo lường việc sử dụng bộ đệm hiển thị:
# netstat -u6anp | grep 5050
udp6 1409995136 0 :::5050 :::* 13483/beam.smp
Tôi không thể vượt quá 1,4 GB này. Đối với kích thước bộ đệm nhỏ hơn, ví dụ: 500MB, kích thước bộ đệm thực tế phù hợp với giá trị được định cấu hình. Hệ thống của tôi là Debian 6.0, máy có RAM 50GB.
Trường hợp nói nó chỉ bị giới hạn bởi RAM có sẵn? Và tại sao bạn nghĩ rằng bạn cần một bộ đệm 4GB? – EJP
Không. Nó không nói nó bị hạn chế theo bất kỳ cách nào khác. Tôi cần một bộ đệm như vậy để tránh mất dữ liệu trong thời gian lưu lượng truy cập mạng dài hơn. –
Ngược lại. Nó nói rằng hạt nhân có thể điều chỉnh giá trị bạn cung cấp lên hoặc xuống, và khuyên bạn nên gọi 'getsockopt()' để xem giá trị nào thực sự được phân bổ. Tôi thấy khó tin rằng bạn cần 4GB để xử lý các điểm lưu lượng truy cập. Có lẽ bạn nên đọc nhanh hơn. – EJP