/etc/sysctl.conf
我使用的是 Mac Monterey 12.1,并增加了文件中的共享内存限制:
kern.sysv.shmmax: 16777216
kern.sysv.shmmin: 1
kern.sysv.shmmni: 128
kern.sysv.shmseg: 512
kern.sysv.shmall: 4096
security.mac.posixshm_enforce: 1
security.mac.sysvshm_enforce: 1
并重新启动(并关闭)机器。但是,重新启动后,当我运行时,sysctl -A | grep shm
它显示的值与文件不同:
kern.sysv.shmall: 1024
kern.sysv.shmmax: 4194304
kern.sysv.shmmin: 1
kern.sysv.shmmni: 32
kern.sysv.shmseg: 8
security.mac.posixshm_enforce: 1
security.mac.sysvshm_enforce: 1
即使/etc/sysctl.conf
仍然显示更改持续存在。
换句话说,我不知道sysctl -A | grep shm
这些值是从哪里得到的。
有谁知道我需要在哪里修改它们?
答案1
感谢亚历山大·丹金让我走上正确的道路。
fio
根据OP,我在基准测试方面遇到了类似的问题,解决了亚历山大发布的内容的修改版本。
以下是经过一定程度删节和定制的步骤用户997112的问题。
脚步
- 禁用 SIP
- 苹果的免责声明
警告
仅暂时禁用 SIP 以执行必要的任务,并尽快重新启用它。完成测试后未能重新启用 SIP 会使您的计算机容易受到恶意代码的攻击。
- 苹果的免责声明
- 创造
/Library/LaunchDaemons/com.startup.sysctl.plist
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <!-- DISABLE SIP TO USE: macOS Recovery > Utilities > Terminal > `csrutil disable` > Reboot --> <plist version="1.0"> <dict> <key>Label</key> <string>com.startup.sysctl</string> <key>LaunchOnlyOnce</key> <true/> <key>StandardErrorPath</key> <string>/private/tmp/sysctl.err</string> <key>StandardOutPath</key> <string>/private/tmp/sysctl.out</string> <key>ProgramArguments</key> <array> <string>/usr/sbin/sysctl</string> <string>-w</string> <string>kern.sysv.shmmax=16777216</string> <string>kern.sysv.shmmin=1</string> <string>kern.sysv.shmmni=128</string> <string>kern.sysv.shmseg=512</string> <string>kern.sysv.shmall=4096</string> </array> <key>RunAtLoad</key> <true/> </dict> </plist>
- 在一些内务处理项目之后加载 PLIST
# sanity check sysctl -a | grep shm # set permissions sudo chown root:wheel /Library/LaunchDaemons/com.startup.sysctl.plist # validate key-value pairs plutil /Library/LaunchDaemons/com.startup.sysctl.plist # load plist sudo launchctl bootstrap system /Library/LaunchDaemons/com.startup.sysctl.plist # check logs tail -f /tmp/sysctl.out tail -f /tmp/sysctl.err # recheck sysctl values sysctl -a | grep shm
来源
macos - 即使重新启动后,sysctl -A 的值也不匹配/etc/sysctl.conf - 智库101 - 一个基于CC版权的问答分享平台
c++ - 共享内存“打开的文件太多”但ipcs没有显示很多分配 - VoidCC
答案2
- 下载文件
.plist
https://anonfiles.com/3eGaR6kfya/com.startup.sysctl_plist - 将下载的文件移动到
/Library/LaunchDaemons/com.startup.sysctl.plist
- 启动终端并依次写入两个命令:先“
sudo chown root:wheel /Library/LaunchDaemons/com.startup.sysctl.plist
”,然后“sudo launchctl load -w /Library/LaunchDaemons/com.startup.sysctl.plist
” - 重新启动系统。