阿里云 99 元活动服务器有点坑,编译 lamp 的时候,之前用的 lamp.sh ,没出过问题,但这次是在阿里云 99 元的活动服务器上购买的,编译过程总是出错、反复重试还是出错,检查错误,发现是收到了一个杀死进程的信号。经过检索,可能原因是 cpu 性能受到限制,超过限制时,会发送停止经常的信号。
晕啊,过去以为的限制性能,是 cpu 长时间达到 5%后会变慢,没想到是直接把进程杀了。。。
准备用 namespace 和 cgroup 来限制编译进程使用不超过 4%的 cpu 使用率,有大佬能指点一下吗? 我尝试的方法:
首先,按照之前的步骤创建一个新的 cgroup ,并设置 CPU 限制。例如,创建一个名为 limited_cpu 的 cgroup ,并设置 CPU shares:
sudo cgcreate -g cpu:/limited_cpu
sudo cgset -r cpu.cfs_quota_us=50000 limited_cpu
sudo cgset -r cpu.cfs_period_us=100000 limited_cpu
sudo unshare --fork --pid --mount-proc bash
在新的 bash 会话中,您可以启动编译过程。但首先,您需要将这个 bash 会话的 PID 添加到之前创建的 cgroup 中。由于您使用了独立的 PID namespace ,您需要找到这个 bash 会话在全局 PID namespace 中的对应 PID 。
这可以通过查看新 bash 会话中 $$ 变量的值来实现,然后在主会话中找到对应的子进程。例如,在新的 bash 会话中:
echo $$
然后在主会话中,使用如下命令将其添加到 cgroup:
sudo cgclassify -g cpu:limited_cpu [Global PID]
将 [Global PID] 替换为您刚才找到的 PID 。
但这步遇到了问题,因为echo $$
得到的 pid 无法使用。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.