当我fs.pipe-max-size
像这样增加时:
echo "fs.pipe-max-size = N" >> /etc/sysctl.conf
sysctl -p
(N
约为4-10M字节)
并使用F_SETPIPE_SZ
将命名管道大小更改为N
,有时会失败并出现“操作不允许”错误。
系统有大约 20 个管道,我在所有管道上设置了相同的管道缓冲区大小。
问题是:
- 是因为我达到了某种总内核管道缓冲区内存容量(顺便说一下系统有 30G RAM)吗?
- 还是因为我使用的
N
不能被页面大小整除,所以F_SETPIPE_SZ
可能会将大小设置为超过fs.pipe-max-size
限制,并且会因“操作不允许”而失败?有道理,我认为我在日志中看到的值比我要求的要大。 - 或者完全是别的东西?