Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

【BUG】系统缓冲区大小 #31

Open
zhangtony239 opened this issue Jul 28, 2024 · 4 comments
Open

【BUG】系统缓冲区大小 #31

zhangtony239 opened this issue Jul 28, 2024 · 4 comments

Comments

@zhangtony239
Copy link
Contributor

官网文档中使用了sysctl -w来写入配置,但实测我这固化不了,得nano /etc/sysctl.conf写入才行。

Ubuntu 24.04 6.8.0-36-generic
#36-Ubuntu SMP PREEMPT_DYNAMIC Mon Jun 10 10:49:14 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux

@haruue
Copy link
Collaborator

haruue commented Jul 28, 2024

这个算系统差异, 比如在 Arch Linux 上, 得写到 /etc/sysctl.d/*.conf 才行

@zhangtony239
Copy link
Contributor Author

还是建议在文档中补一下了,谢谢!

@haruue
Copy link
Collaborator

haruue commented Aug 2, 2024

研究了下 sysctl 的 -w 选项应该是从来都没有过持久化的功能。

在 procps 于 2002 年的 最早版本(以前他们可能使用别的版本控制)中, sysctl 的 -w 选项是用于开启 WriteMode , 当时的 sysctl 只有在指定 -w 时, 才会将后续的参数 parse 成赋值, 以及「写入」到 /proc/sys 下的对应文件里。(没错, Linux 的 sysctl, 其实就是将 key 的 . 换成 / 接在 /proc/sys/ 后变成文件路径, 然后对这个路径进行读写, 例如 net.ipv4.tcp_congestion_control 实际上就对应 /proc/sys/net/ipv4/tcp_congestion_control)。

这个行为在两年后的 这个版本 中就被改变, 如果后面的参数包含 =, 那么也视为 WriteMode。 从这时候开始指定 -w 其实就不必要了。

在 2018 年, 有人注意到了这个问题, 这时候 sysctl 已经支持指定多个 key 了。 -w 的文档被从「Use this option when you want to change a sysctl setting.」变更为「Use this option when all arguments prescribe a key to be set.」, 也就是说, -w 只用于强制这条命令是「设置」选项。

@haruue
Copy link
Collaborator

haruue commented Aug 2, 2024

能在所有系统上同时 设置+持久化 的命令应该是下面这样

sysctl -w net.core.rmem_max=16777216 >> /etc/sysctl.d/99-sysctl.conf

有点太长了, 我们考虑一下怎么在文档里提及它。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants