问题描述
我正在Jupyter(实验室)的一个运行在Kubernetes上的JupyterHub创建的容器中运行进程。
这些过程过于占用内存,以至于有时由于OOM而导致容器被逐出。
在不修改我的代码/算法等的情况下,通常如何在达到预定义的RAM限制时告诉Jupyter(Lab)使用交换空间/虚拟内存?
PS该问题没有提及交换空间的答案-Jupyter Lab freezes the computer when out of RAM - how to prevent it?
解决方法
您不能主动控制交换空间。
特别是在Kubernetes中,您只是不为Kubernetes容器提供内存限制。 至少不会因为OOM(内存不足)而杀死它。但是,我怀疑它是否会起作用,因为这将使整个节点脱离RAM,然后交换并变得非常缓慢,从而在某个时候被Kubernetes主服务器声明为已死。依次导致Pod在其他地方运行并重新开始。
一种更可扩展的方法是使用核外算法,该算法可以直接在磁盘上运行(因此只需将PV / PVC附加到您的Pod),但这取决于您所使用的算法或过程使用。