看板 Linux 關於我們 聯絡資訊
如題,在共享主機上要跑站台維護腳本, 主機會主動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)
AceIan:試試 nice -n 19 script.sh 04/30 12:35
frozen792:echo 1870000 > /sys/devices/system/cpu/cpu2/cpufreq/ 04/30 12:37
frozen792:cpufreq/scaling_max_freq 04/30 12:38
frozen792:cat /sys/devices/system/cpu/*/cpufreq/scaling_availa 04/30 12:38
frozen792:cpufreq/scaling_available_frequencies 04/30 12:39
找不到 /sys/devices/system/cpu/cpu2/...... 這樣的路徑耶 不知這是用在什麼平台?還有這原理是什麼?
kdjf:ulimit不會中斷啊,就只是allocation fail. 04/30 17:13
kdjf:只是很多程式碰到alloc fail就直接不跑了 04/30 17:13
我的確是遇到程式allocation fail就中止的情況... 不過那些遇到allocation fail還能繼續跑的程式是怎麼辦到的啊? 比較好奇的是ulimit把程式的資源都限死了,程式要怎麼跑? → kdjf:然後丟不丟到Virt mem裡不是使用者可以決定的,通常無論你用了 04/30 17:15
kdjf:VM還是真正的ram, OS都是把你直接砍了 04/30 17:15
是這樣啊?本來想說反正VM是硬碟空間XD 請問這樣原來的問題有解嗎? 站台資料多,需要跑常駐的腳本去管理啊orz 我是不在意程式吃少一點資源慢慢跑,但一直kill掉很困擾QQ ※ 編輯: danny0838 來自: 114.45.49.146 (04/30 20:09)
lucieun:VM是一種記憶體管理方式,你可以把VM當作是一個連續的定址 04/30 21:01
lucieun:空間,而每個process都會被分配一個VM,而當process執行到 04/30 21:01
lucieun:空間內某一段的指令時,OS就會分配實體記憶體對應到那段空 04/30 21:01
lucieun:間,也就是page fault,在linux裡面VM是以pure demand pag 04/30 21:01
lucieun:ing實作的,每個VM會對應一個page table 04/30 21:02
lucieun:page table裡就是存放著虛擬記憶體和實體記憶體的對應關係 04/30 21:02
所以VM的原理是把一段連續的硬碟空間鎖定供記憶體利用, 也就是把硬碟空間模擬成記憶體空間, 這樣理解對嗎? ※ 編輯: danny0838 來自: 118.168.100.170 (05/01 19:10)
kdjf:cpu可以用cgroups處理 05/02 13:10
kdjf:ram也可以 http://tinyurl.com/chq7t22 05/02 13:12