作者danny0838 (道可道非常道)
看板Linux
标题[问题] 压低CPU和memory但不kill程序
时间Tue Apr 30 11:39:10 2013
如题,在共享主机上要跑站台维护脚本,
主机会主动kill掉资源耗太大的process,
我希望脚本可以跑慢一点没关系,但不要吃太多资源。
查过限制CPU常见的ulimit和PHP的memory_usage,
但两者都是把资源用超过的程式中断掉...
请问各位前辈,有没有方法可确实压低process的CPU% (跑慢一点没关系)
和memory usage (多的丢到virtual memory?)
且能维持程序正常执行而不会kill或因资源不足而中断?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 60.248.128.70
※ 编辑: danny0838 来自: 60.248.128.70 (04/30 11:41)
※ 编辑: danny0838 来自: 60.248.128.70 (04/30 11:42)
1F:推 AceIan:试试 nice -n 19 script.sh 04/30 12:35
2F:推 frozen792:echo 1870000 > /sys/devices/system/cpu/cpu2/cpufreq/ 04/30 12:37
3F:→ frozen792:cpufreq/scaling_max_freq 04/30 12:38
4F:→ frozen792:cat /sys/devices/system/cpu/*/cpufreq/scaling_availa 04/30 12:38
5F:→ frozen792:cpufreq/scaling_available_frequencies 04/30 12:39
找不到 /sys/devices/system/cpu/cpu2/...... 这样的路径耶
不知这是用在什麽平台?还有这原理是什麽?
6F:→ kdjf:ulimit不会中断啊,就只是allocation fail. 04/30 17:13
7F:→ kdjf:只是很多程式碰到alloc fail就直接不跑了 04/30 17:13
我的确是遇到程式allocation fail就中止的情况...
不过那些遇到allocation fail还能继续跑的程式是怎麽办到的啊?
比较好奇的是ulimit把程式的资源都限死了,程式要怎麽跑?
→ kdjf:然後丢不丢到Virt mem里不是使用者可以决定的,通常无论你用了 04/30 17:15
8F:→ kdjf:VM还是真正的ram, OS都是把你直接砍了 04/30 17:15
是这样啊?本来想说反正VM是硬碟空间XD
请问这样原来的问题有解吗?
站台资料多,需要跑常驻的脚本去管理啊orz
我是不在意程式吃少一点资源慢慢跑,但一直kill掉很困扰QQ
※ 编辑: danny0838 来自: 114.45.49.146 (04/30 20:09)
9F:推 lucieun:VM是一种记忆体管理方式,你可以把VM当作是一个连续的定址 04/30 21:01
10F:→ lucieun:空间,而每个process都会被分配一个VM,而当process执行到 04/30 21:01
11F:→ lucieun:空间内某一段的指令时,OS就会分配实体记忆体对应到那段空 04/30 21:01
12F:→ lucieun:间,也就是page fault,在linux里面VM是以pure demand pag 04/30 21:01
13F:→ lucieun:ing实作的,每个VM会对应一个page table 04/30 21:02
14F:→ lucieun:page table里就是存放着虚拟记忆体和实体记忆体的对应关系 04/30 21:02
所以VM的原理是把一段连续的硬碟空间锁定供记忆体利用,
也就是把硬碟空间模拟成记忆体空间,
这样理解对吗?
※ 编辑: danny0838 来自: 118.168.100.170 (05/01 19:10)
15F:推 kdjf:cpu可以用cgroups处理 05/02 13:10