天天看點

[Erlang 0102] 愚人節消息 too_big_to_fail_process介紹 疑問

   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裡面有兩個這樣的程序,政策是怎樣的?

請教了一下@淘寶褚霸 得到答複 :

應該是個玩笑沒有這樣的使用場景的。

最後小圖一張:

[Erlang 0102] 愚人節消息 too_big_to_fail_process介紹 疑問