[英]"No space left on drive" when trying to allocate more shared memory
MacOS.苹果系统。 16GB RAM
16GB 内存
I'm running code (which other users are running on similar hardware) allocating shared memory.我正在运行代码(其他用户在类似硬件上运行)分配共享 memory。 It gets halfway through, then dies with the message:
它通过了一半,然后随着消息而死:
Error allocating shared memory:: No space left on device
I've checked:我检查过:
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
I tried to increase shmall
but kept getting:我试图增加
shmall
但不断得到:
sysctl: unknown oid 'kern.sysv.shmall:'
Anyone know how to fix this?有人知道怎么修这个东西吗?
This looks like a duplicate of https://unix.stackexchange.com/questions/689295/values-from-sysctl-a-dont-match-etc-sysctl-conf-even-after-restart/710645 .这看起来像https://unix.stackexchange.com/questions/689295/values-from-sysctl-a-dont-match-etc-sysctl-conf-even-after-restart/710645的副本。
I can copy/paste my answer here, but not sure if that's double dipping haha.我可以在这里复制/粘贴我的答案,但不确定这是否是双重浸渍哈哈。 The tl;dr is you'll need to create a LaunchDaemon after disabling SIP :
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>
Then load with sudo launchctl bootstrap system /Library/LaunchDaemons/com.startup.sysctl.plist
然后使用
sudo launchctl bootstrap system /Library/LaunchDaemons/com.startup.sysctl.plist
加载
Output looks like this: 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.