現在我有24個核心和64G存儲集羣上運行,同時罐(Scala編寫的代碼)的多個實例,以Ubuntu 11.04 (GNU/Linux 2.6.38-15-generic x86_64)
。我觀察到內存使用率過高的問題,這對我運行的實例數量而言是超線性的。更具體地說,這是我在做什麼運行多個實例:內存問題
- scala中的代碼和使用sbt打包成一個罐子。
- 登錄羣集,使用
screen
打開新的屏幕會話。 - 在此屏幕中打開多個窗口。
- 在每個窗口中運行
java -cp myjar.jar main.scala.MyClass
我看到那是什麼,說什麼時候我只能跑7分的情況下,約10G內存使用,一切都很好。現在我運行了14個實例。內存很快被吃掉,所有64G都被佔用,然後機器急劇減速,甚至難以登錄。通過htop
監控機器,我可以看到一次只能運行幾個內核。任何人都可以告訴我我的程序發生了什麼,以及如何修復它,以便我能夠有效地使用計算資源?謝謝!
不幸的是,我不能告訴ÿ ou超線性內存消耗來自哪裏。當你開始14而不是10時,你的罐子有不同的表現嗎?你在你的程序實例之間使用IPC還是一些通信? – corny 2013-03-26 08:06:40