作者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