[問題] 壓低CPU和memory但不kill程序

看板Linux作者 (道可道非常道)時間11年前 (2013/04/30 11:39), 編輯推噓4(4012)
留言16則, 4人參與, 最新討論串1/1
如題,在共享主機上要跑站台維護腳本, 主機會主動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)

04/30 12:35, , 1F
試試 nice -n 19 script.sh
04/30 12:35, 1F

04/30 12:37, , 2F
echo 1870000 > /sys/devices/system/cpu/cpu2/cpufreq/
04/30 12:37, 2F

04/30 12:38, , 3F
cpufreq/scaling_max_freq
04/30 12:38, 3F

04/30 12:38, , 4F
cat /sys/devices/system/cpu/*/cpufreq/scaling_availa
04/30 12:38, 4F

04/30 12:39, , 5F
cpufreq/scaling_available_frequencies
04/30 12:39, 5F
找不到 /sys/devices/system/cpu/cpu2/...... 這樣的路徑耶 不知這是用在什麼平台?還有這原理是什麼?

04/30 17:13, , 6F
ulimit不會中斷啊,就只是allocation fail.
04/30 17:13, 6F

04/30 17:13, , 7F
只是很多程式碰到alloc fail就直接不跑了
04/30 17:13, 7F
我的確是遇到程式allocation fail就中止的情況... 不過那些遇到allocation fail還能繼續跑的程式是怎麼辦到的啊? 比較好奇的是ulimit把程式的資源都限死了,程式要怎麼跑? → kdjf:然後丟不丟到Virt mem裡不是使用者可以決定的,通常無論你用了 04/30 17:15

04/30 17:15, , 8F
VM還是真正的ram, OS都是把你直接砍了
04/30 17:15, 8F
是這樣啊?本來想說反正VM是硬碟空間XD 請問這樣原來的問題有解嗎? 站台資料多,需要跑常駐的腳本去管理啊orz 我是不在意程式吃少一點資源慢慢跑,但一直kill掉很困擾QQ ※ 編輯: danny0838 來自: 114.45.49.146 (04/30 20:09)

04/30 21:01, , 9F
VM是一種記憶體管理方式,你可以把VM當作是一個連續的定址
04/30 21:01, 9F

04/30 21:01, , 10F
空間,而每個process都會被分配一個VM,而當process執行到
04/30 21:01, 10F

04/30 21:01, , 11F
空間內某一段的指令時,OS就會分配實體記憶體對應到那段空
04/30 21:01, 11F

04/30 21:01, , 12F
間,也就是page fault,在linux裡面VM是以pure demand pag
04/30 21:01, 12F

04/30 21:02, , 13F
ing實作的,每個VM會對應一個page table
04/30 21:02, 13F

04/30 21:02, , 14F
page table裡就是存放著虛擬記憶體和實體記憶體的對應關係
04/30 21:02, 14F
所以VM的原理是把一段連續的硬碟空間鎖定供記憶體利用, 也就是把硬碟空間模擬成記憶體空間, 這樣理解對嗎? ※ 編輯: danny0838 來自: 118.168.100.170 (05/01 19:10)

05/02 13:10, , 15F
cpu可以用cgroups處理
05/02 13:10, 15F

05/02 13:12, , 16F
05/02 13:12, 16F
文章代碼(AID): #1HVppXn_ (Linux)