问题:Windows Azure 的有效开销是多少?
问题:如果内存频繁交换,应用程序就会陷入停滞状态。租用更大的实例需要花钱。只要知道自己需要什么,我就能轻松计算出应该租用什么。
语境
我已经运行 Azure 计算角色一段时间了。但是,我仍然不太清楚 Microsoft Azure 为实例增加的“开销”。这里的开销主要是“内存”。
更多详细信息:这些是 .NET 角色实例,每个 VM 1 个角色。
基本上,我想要做的是计算我的应用程序使用了多少内存,并将其与实例大小关联起来(例如,如果我有一个应用程序,我知道它有效地使用了 400 MB 的内存,我想计算我是否应该使用 768 MB 的角色或 1.3 GB 的角色)。
提出这个问题的原因
我想要这样做的原因有很多;如果内存刚好超过某个限制,我可以选择优化程序中的内存压力;如果这样更具成本效益,我可以选择租用另一个实例;我可以决定使用更多实例,等等。如果没有适当的信息,我发现不可能实现这些商业案例。
我正在寻找的信息示例
开销有多种形式:
- 工作角色 VM 的开销。内存 / CPU 方面的成本?
- 启用远程桌面/远程调试器。内存/CPU 方面的成本是多少?
- 物理机上虚拟机的过度分配。例如,如果我在 1 台物理机上有 14 个 XS 实例,这些实例使用了 768 MB,而该物理机有 8 GB 内存,则意味着将交换出 2 GB。我可以有效依靠多少内存(%)?
- 其他影响记忆的东西?
基本上,我对任何可以归结为配置设置、功能或常量的[effective memory] = [program memory cost] * a + b;
东西都感到满意。b
答案1
很难找到这种信息,因为微软从未公开宣布过,而且很多因素都会决定操作系统将使用多少 RAM,但我会尽力根据 Azure 内部虚拟机的使用情况来回答,因为基本上虚拟机和角色实例使用相同的操作系统,它们之间的区别在于谁负责维护、如何配置可用性、自动扩展……等等。
微软表示,要安装 Windows 2012 R2 Server,您至少需要 800 MB 的 RAM。安装完成后,您可以低至512 MB RAM操作系统仍可运行,你可以将此数字用作根据了解 Windows Server 运行时需要多少 RAM。您可以通过删除 GUI 并缩减到服务器核心安装
您可以通过启动几台不同大小的测试机器来测量内存开销,通过 RDP 连接到机器并查看 Windows 在内存前端的位置,我之前做过类似的练习,下表总结了我的发现,请注意,所有虚拟机都安装了 GUI。
带 RAM 的 VM 层 - 操作系统消耗的 RAM
A0 768 MB – 500/600 MB
A1 1.75 GB - 750/900 MB
A2 3.5 GB - 850/1000 MB
在此阶段之后,您使用的任何内容,操作系统都会在 1.5 GB 的限制范围内保持稳定。由于您使用的是角色实例,因此我会为每个实例投入少量的 RAM,然后从那里开始计算。