我想以这样的方式配置tcp_rmem,它既适用于低延迟,也适用于高延迟。同时,对于低延迟的用例,它不会消耗更多的内存。有可能做到这一点吗?我在考虑为tcp_rmem设置更高的值,这样它就可以在高延迟下工作。想象一下,如果延迟很低,那么每个连接会为接收缓冲区分配多少内存?
例如,如果我将tcp_rmem设置为1MB(最小值)2MB(默认值)3MB(最大值)。1.是总是为每个连接分配2MB,还是根据需要分配2MB? 2.是从1MB开始,当发现1MB不够时,再分配2MB,当看到2MB不够时,再分配3MB。3.不考虑时延,总是根据传入速率分配1MB、2MB、3MB?
所以在我的测试中,速率是恒定的,延迟是可变的。90%的时间延迟将会非常低。但为了处理这10%的高延迟情况,我必须将tcp_rmem更改为高值,这也会影响90%的其他场景。
我找不到tcp_moderate_rcvbuf参数是如何工作的?根据什么参数来分配内存。
发布于 2020-04-28 03:55:40
systcl tcp_rmem和tcp_wmem的min、default、max字段的含义如下。min:总是保证分配最小的套接字缓冲区大小。使用套接字选项SO_RCVBUF,任何大小都可以用于接收缓冲区。但不能超过max。
默认值:这是默认分配的套接字缓冲区大小的总量。max:如果使用SO_RCVBUF显式设置,则不能将套接字缓冲区大小设置为大于此值。
因此,如果设置了更高的min、default和max值。无论延迟和吞吐量如何,都会始终使用它们。
https://stackoverflow.com/questions/61409344
复制相似问题