我以某种方式碰巧换出了14 GB的内存。杀死了罪魁祸首之后,我又有了大量的可用内存,因此我想我可以再次引入重要数据。因此,使用32 GB中的5 GB和14 GB的交换空间,我跑了swapoff -a
.. 4小时后,大约一半的工作完成了。
这意味着不到1 MB / s,而我可以轻松复制200 MB / s。我的交换已加密,但是所有普通分区也都加密了,使用es-ni不会导致明显的CPU负载(填充交换空间仅花费了几分钟)。我看到没有特别的理由进行优化swapoff
,但是我想知道它怎么会变慢呢?
只需添加更多数据:我的主内存为32 GB,并且4个硬盘中的每一个都有32 GB的交换空间(肯定是个大问题,但是谁在乎呢?)。整个交换空间可以在不到5分钟的时间内被(解密并)读取:
time -p sudo sh -c 'for i in /dev/mapper/cryptswap?; do md5sum $i & done; wait'
014a2b7ef300e11094134785e1d882af /dev/mapper/cryptswap1
a6d8ef09203c1d8d459109ff93b6627c /dev/mapper/cryptswap4
05aff81f8d276ddf07cf26619726a405 /dev/mapper/cryptswap3
e7f606449327b9a016e88d46049c0c9a /dev/mapper/cryptswap2
real 264.27
读取分区的一部分不会比读取全部分区慢。然而,阅读其中的1/10大约需要100倍的时间。
我观察到,在swapoff
这两个期间,CPU大部分都处于空闲状态(可能是一个内核的10%),磁盘也处于空闲状态(由LED进行“测量”)。我还看到交换空间被一个接一个地关闭。
iostat -d 5
在此期间swapoff
,磁盘上的IO 是否显示为低?