Too_big_to_fail_process程序平時和正常程序一樣,一旦需要更多記憶體的時候面目就開始猙獰起來:如果它需要記憶體的時候出現了配置設定記憶體錯誤,就會随機挑選比較占用資源比較少的程序殺掉,然後重新嘗試為too_big_fail程序配置設定記憶體.
如果是殺了本節點内其它所有程序還是不夠用怎麼辦?會從其它節點"竊取"記憶體!!!! Too_big_to_fail_process 程序會在其它節點建立自己的副本,在該節點繼續配置設定自己需要的記憶體.具體細節:
too_big_to_fail_process 在節點A耗盡記憶體
"helper"程序在節點B配置設定記憶體
"helper"在其所在節點盡可能的配置設定記憶體
too_big_to_fail_process減少在節點A的記憶體使用量,轉而使用在節點B占用的記憶體
反複執行 如果這兩個節點都記憶體耗盡就嘗試從别的節點繼續上面的"竊取"過程
如果所有的too_big_to_fail_nodes記憶體都被耗盡了,還有垂死一搏:"Memory Allacator of Last Resort".這個記憶體配置設定器還有能力配置設定新的記憶體,如果幸運點配置設定的速度比消耗的速度快,那就小車不倒繼續推一直跑下去,如果記憶體消耗速度快于配置設定的速度,系統就會崩潰,需要重新開機.
too_big_to_fail_process 将跟随OTP-R18B釋出,目前memory allocator of last resort的相關研究工作還在進行中.
我的疑問:
什麼樣的業務場景需要設計這樣霸氣的程序?(怎麼看都像一個玩笑)
占用多個節點記憶體的情況,這個程序怎麼協調内部邏輯的?
Memory Allacator of Last Resort 是做資料壓縮來争取記憶體空間麼?(GC還有機會麼?)
一個Vm裡面有兩個這樣的程序,政策是怎樣的?
請教了一下@淘寶褚霸 得到答複 :
應該是個玩笑沒有這樣的使用場景的。
最後小圖一張:
