可以将容器限制为512MB RAM和4GB交换。 但是,如果容器频繁地使用了已经被换出的内存,它将不支配包含交换文件的存储设备的IO资源? 我想避免的是一个容器从100%的利用率固定存储设备,并挨饿其他容器,而这些容器对交换的要求不高。 理想情况下,每个集装箱都应该在负载下得到公平的份额,并且在负载允许的情况下能够突破这个限度。
现在我知道有blkio的限制,而且限制这些限制似乎是非常简单的,但是从技术上来说,内核正在进行交换,所以我不知道它是否遵守这些限制或者将页面错误计入这些限制。
有谁知道这是可能的,或者如何configuration它?
编辑: OpenVZ有一个叫做vswap的东西,它会调整一个交换的容器,即使系统实际上有足够的松弛,“交换”页面在RAM中,它并不真正到磁盘上。 这似乎是我所追求的。 有没有办法做到这一点与“香草”的Linux容器?
如果你的虚拟机pipe理程序中经常使用IO,那么你做错了。 这一直是战斗。 页面错误不是可以限制的东西,因为它们是资源缺乏的结果。 减less/消除页面错误的唯一方法是添加更多物理RAM或减less/移除交换空间。 页面错误(尽pipe名称)并不总是意味着发生了“错误”。 这仅仅意味着当应用程序试图从RAM访问虚拟内存段时,它不再可用,并且必须从磁盘重新读取它。
这听起来更像是你的实例没有足够的内存…而你试图用交换文件解决这个问题。 交换文件不应该依赖。 它们仅在偶尔需要短时间超出有限物理RAM的情况下才有用。
减lessIO延迟的唯一方法是提供更多的IO …或减less/限制IO上的使用。 减less/限制会导致执行非常糟糕的实例…并可能在CPU上创build额外的瓶颈,试图在IO上实现配额。