2010-11-29 48 views
3

有關開發和測試的虛擬化優劣問題,有很多問題需要解答。虛擬化應用程序的編程注意事項

我的問題是微妙的不同 - 在這個世界中,虛擬化是司空見慣的,什麼是當談到編寫可能被部署到虛擬化環境中的軟件程序員應該考慮的事情?我的一些初步想法是:

  1. 檢測,如果你的應用程序的另一個實例正在運行
  2. 與硬件通信(物理/虛擬)
  3. 資源限制(對於多核CPU上運行的單寫的應用程序CPU VM)

還有別的嗎?

回答

3

你最覆蓋三大點的基礎知識。當心:

  • 硬件通信相關的問題。磁盤訪問速度非常不同(可能會出現異常高的極端情況 - 想象一下在磁盤寫入過程中關閉了3天的虛擬機....)。網絡訪問可能會因異常響應而中斷
  • 花式指針算法。儘量避免它
  • 嚴重依賴異常罕見的低級別/彙編指令
  • 依賴機器時鐘。請記住,您對時鐘進行的任何調用以及時間間隔可能會在虛擬機上運行時定期返回異常值。單CPU應用程序可能會發現它們在多臺CPU機器上運行,它們會執行類似Work Stealing
  • 角落案件和不尋常的失敗模式更爲常見。你可能不必擔心儘可能多的網卡會在你的溝通中消失,真正的機器上,因爲你會在資源(內存,磁盤等)的一虛一
  • 手冊管理。工作越自動化,虛擬環境在處理它時可能越好。例如,使用內存管理類型的語言/環境可能會更好,而不是使用C編寫應用程序。
+0

優秀的答案,這些都是好點,有一些我沒有考慮過,如時間/時鐘問題。 – Jazza 2010-12-13 10:01:30

1

根據我的經驗,您確實只有幾件事情需要關注:

  • 您的應用程序不應該因爲CPU時間不足而失敗(即使用超時太緊)

  • 不要使用低優先級總是運行的進程在後臺執行任務

  • 時鐘可以運行不均勻

  • 不要捆綁什麼OS說有關係統負載

幾乎任何其他問題不應該由應用程序,而是由虛擬器,主機操作系統或者您喜歡的SYS管理員:-)

處理
相關問題