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管理员:-)

处理
相关问题