在 AWS 上,我注意到他们的 CloudWatch 工具无法查看 EC2 实例的内存利用率。另一方面,我可以查看 CPU 利用率、网络指标等。
为什么管理程序可以看到 CPU 而看不到实例的 RAM 利用率?
在 AWS 上,我注意到他们的 CloudWatch 工具无法查看 EC2 实例的内存利用率。另一方面,我可以查看 CPU 利用率、网络指标等。
为什么管理程序可以看到 CPU 而看不到实例的 RAM 利用率?
当 ram 分配给 VM(Guest)时,VM 正在使用它。主机不知道存储在 ram 中的值是否相关。
在 VM 中运行的操作系统会跟踪分配的 Ram,但它不必向主机询问 ram。
主机很容易跟踪进入或离开 VM 的事物的统计信息,例如网络数据包或磁盘读取和写入。
ram 的问题在于,对于时间片,VM 拥有可以读取/修改/写入分配给它的 ram 的 CPU,而主机没有任何可见性。
这也是动态更改 RAM 不是一个选项的原因。解决这个问题的一种方法是在 Guest 中加载一个 baloon 驱动程序,然后它可以与 Host 的反向通道聊天,向 Guest 请求运行它的 ram,然后通知 Host 它已锁定并且可以删除。
当用户决定添加更多的 ram 时,气球驱动器会通知客人它不需要它持有的 ram。