[英]"No space left on drive" when trying to allocate more shared memory
苹果系统。 16GB 内存
我正在运行代码(其他用户在类似硬件上运行)分配共享 memory。 它通过了一半,然后随着消息而死:
Error allocating shared memory:: No space left on device
我检查过:
sysctl -A | grep shm
kern.sysv.shmall: 1024
kern.sysv.shmmax: 4194304
kern.sysv.shmmin: 1
kern.sysv.shmmni: 32
kern.sysv.shmseg: 128
security.mac.posixshm_enforce: 1
security.mac.sysvshm_enforce: 1
我试图增加shmall
但不断得到:
sysctl: unknown oid 'kern.sysv.shmall:'
有人知道怎么修这个东西吗?
我可以在这里复制/粘贴我的答案,但不确定这是否是双重浸渍哈哈。 tl;博士是您需要在禁用 SIP后创建一个 LaunchDaemon :
<?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=4194304</string>
<string>kern.sysv.shmmin=1</string>
<string>kern.sysv.shmmni=32</string>
<string>kern.sysv.shmseg=128</string>
<string>kern.sysv.shmall=1024</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
然后使用sudo launchctl bootstrap system /Library/LaunchDaemons/com.startup.sysctl.plist
加载
Output 看起来像这样:
λ tail -f /tmp/sysctl.out
kern.sysv.shmmax: 16777216 -> 4194304
kern.sysv.shmmin: 1 -> 1
kern.sysv.shmmni: 4096
kern.sysv.shmseg: 512 -> 128
kern.sysv.shmall: 4096 -> 1024
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.