我读到了TCP拥塞变体是如何在Linux中实现的。每个变体都作为一个单独的模块实现。
当我读到这个问题时:向Linux添加添加拥塞控制变体
我知道这个变体可以使用mod探头加载。
这是否意味着当lsmod运行时,TCP立方必须显示为默认加载?当我运行lsmod时,我找不到与拥塞控制相关的加载模块。是否有特定类型的内核模块列在lsmod下面?
发布于 2018-09-16 12:52:31
这是一个需要解决的问题,并对这个具体的案例(拥堵)做了一点澄清。
核模块是内核的一部分,它是可选的,在内核初始启动时不需要出现,如果不需要的话,也不必在以后出现。这是一种插入式。这使得大多数功能可以按需提供,如果从未使用,则无需使用内存。大多数模块可以编译为模块或内置。如果内置,就意味着您将找不到.ko
模块文件,因为它已经在初始内核中了。
您可以检查所做的事情:
CONFIG_TCP_CONG_CUBIC
),访问通常作为/boot/config-$(uname -r)
文件使用的配置,然后验证使用了什么选项: grep CONFIG_TCP_CONG_CUBIC /boot/config-$(uname -r)由于您没有找到模块,所以您的情况可能会出现结果示例,但是如果使用立方(可能是默认的),这可能意味着它是内置的:
$ grep _CUBIC /boot/config-$(uname -r)
CONFIG_TCP_CONG_CUBIC=y
CONFIG_DEFAULT_CUBIC=y
$ fgrep tcp_cubic.ko /lib/modules/$(uname -r)/modules.builtin
kernel/net/ipv4/tcp_cubic.ko
这就回答了一个问题:假设你总是加载模块,因为它是内置的。默认的内置(通常是必需的)是有意义的。
您可能希望在/lib/modules/$(uname -r)
中的某个位置找到的内置模块文件的列表可以用lsmod
显示,但不能用cat /lib/modules/$(uname -r)/modules.builtin
显示。它们并不特殊,但通常(由Linux发行版选择),但并不总是如此,因为必须从要内置的选项列表(包括所有相关的模块依赖项)中选择默认选项。
关于这个小小的澄清:当然,一个模块必须加载(或内置)才能使用它的功能。但是你链接到的Q/A并没有说你只需要加载tcp拥塞模块就可以激活它。引用:
要尝试其中的一种,您需要使用modprobe、-a、tcp_westwood或您想要的任何东西来安装它。然后您可以使用这个回显"westwood“>/proc/sys/net/ipv4 4/tcp_拥塞_control来测试它。
由于这个伪文件是读/写的,所以您只需查询它就可以知道使用中的拥塞是什么,可能是这样的结果:
$ cat /proc/sys/net/ipv4/tcp_congestion_control
cubic
现在要更改算法:
# lsmod | grep tcp_westwood
# echo westwood > /proc/sys/net/ipv4/tcp_congestion_control
# lsmod | grep tcp_westwood
tcp_westwood 16384 1
该模块是自动加载的,现在正在使用中(有些系统可能不会自动加载)。
无论如何,这个具体案例的充分信息是在/proc/sys/net/ipv4/tcp_congestion_control
,而不是lsmod
's的输出。
https://unix.stackexchange.com/questions/469370
复制相似问题