代码之家  ›  专栏  ›  技术社区  ›  Jazza

虚拟化应用程序的编程注意事项

  •  3
  • Jazza  · 技术社区  · 14 年前

    关于虚拟化在开发和测试中的利弊,有很多问题要问。

    我的问题是微妙的不同-在一个虚拟化司空见惯的世界中,程序员在编写可能部署到虚拟化环境中的软件时应该考虑什么?我最初的一些想法是:

    1. 检测应用程序的另一个实例是否正在运行
    2. 与硬件通信(物理/虚拟)
    3. 资源限制(为运行在单CPU虚拟机上的多核CPU编写的应用程序)

    还有别的吗?

    2 回复  |  直到 14 年前
        1
  •  3
  •   blueberryfields    14 年前

    你有三大要点所涵盖的大部分基础知识。注意:

    • 硬件通信相关问题。磁盘访问速度有很大的不同(可能有异常高的极限——想象一个虚拟机在磁盘写入过程中关闭了3天……)。网络访问可能因异常响应而中断
    • 奇特的指针算法。尽量避免
    • 严重依赖异常罕见的低级/组装说明
    • 对机钟的依赖。记住,在虚拟机上运行时,对时钟和时间间隔进行的任何调用都可能定期返回异常值
    • 单CPU应用程序可能会发现自己运行在多个CPU机器上,这些机器会做一些有趣的事情,比如 Work Stealing
    • 拐角情况和异常故障模式更为常见。你也许不必像在虚拟机上那样担心网卡会在你的通信过程中消失
    • 手动管理资源(内存、磁盘等)。工作越自动化,虚拟环境处理它的能力就越强。例如,最好使用内存管理类型的语言/环境,而不是用C编写应用程序。
        2
  •  1
  •   salva    14 年前

    根据我的经验,你只需要关心以下几件事:

    • 应用程序不应该因为CPU时间不足而失败(即使用超时时间太紧)

    • 不要使用低优先级始终运行的进程在后台执行任务

    • 时钟可能运转不均匀

    • 不要曲解操作系统对系统负载的看法

    几乎任何其他问题都不应该由应用程序处理,而应该由虚拟机、主机操作系统或您首选的系统管理员来处理:-)

    推荐文章