我正在運行x86_64 RedHat 5.3(內核2.6.18),並在嘗試設置UDP緩衝區的上下文中從sysctl -a專門查看net.core.rmem_max。接收器應用程序有時會丟失數據包,但我認爲緩衝區已經足夠大,取決於它的含義:什麼是UDP緩衝區的單位,以及sysctl params的文檔在哪裏?
此設置的單位是什麼 - 位,字節,數據包或頁面?如果是比特或字節,它來自數據報/有效載荷(如100字節)還是網絡MTU大小(〜1500字節)?如果是頁面,頁面大小以字節爲單位?
這是每個系統,每個物理設備(NIC),每個虛擬設備(VLAN),每個進程,每個線程,每個套接字/每個多播組的最大值?例如,假設我的數據是每條消息100個字節,每個網絡數據包包含2條消息,並且我希望能夠緩衝每個套接字50,000條消息,並且我在每個線程上爲每個線程打開3個套接字。 net.core.rmem_max應該有多大?同樣,當我在應用程序中設置套接字選項時,單位是有效負載字節,所以在這種情況下,每個套接字上5000000?
最後,總的來說,我將如何查找通過sysctl -a查看的參數單位的詳細信息?我有類似的單位和每X有關其他參數的問題,如net.core.netdev_max_backlog和net.ipv4.igmp_max_memberships。
謝謝。