我正在使用Debian sid(用ext4格式化的硬盘),在Linux 3.1上运行
我记得在以前的linux版本(可能在3.0之前)上,如果内存不足,并且未启用swap,程序通常会崩溃。这非常适合我的环境:简单的Web浏览,无任何关键操作。就是说,如果我不小心遇到了一个占用过多内存的不良网站,它只会崩溃而不会导致我的终端无法使用。
但是在我当前的设置中,计算机在后台挂起时具有严重的I / O吞吐量。iotop揭示kswapd0是罪魁祸首,这意味着它是由于交换引起的。在swapon -s
用于确定已启用的swapoff -a
所有交换之后,我曾经禁用了所有交换,然后swapon -s
再次确认所有交换均被禁用。
然后,我尝试再次最大化内存使用率。las,我所期望的行为没有发生。相反,kswapd0会反复尝试换出RAM,并且由于没有交换空间而失败。因为它永远不会放弃,所以我的计算机陷入了永久性的I / O严重冻结,这对磁盘的运行状况不利。
我尝试做错什么了swapoff -a
吗?为什么该行为与以前不同(可能是3.0倍之前)?
fstab
关于交换的内容。尝试是否行为相同。
swapoff -a
应该永久禁用交换,这意味着它应该在下次重新启动后保持禁用状态。我确认了 但是,下一次重新引导后的会话期间仍会发生I / O“风暴”。作为记录,我当时没有发生I / O“风暴”,因为那时swapoff -a
swap为0。
swapoff -a
是不是永久的。
swapoff -a
本身将产生大量的I / O(如果没有足够的实际RAM,可能会导致进程被杀死)。您确定不是swapoff -a
引起I / O“风暴”的原因吗?