答案1
tmpfs
只要有足够的内存,写入 的数据就会以未压缩的形式保留在内存中。一旦系统面临内存压力,它就会尝试将数据从tmpfs
(以及从任何其他位置,如正常进程内存)移动到它能找到的任何位置swap
(包括swap
) 。您还可以通过执行简单的 来zram
更改 的参数,尤其是文件系统的大小或 inode 的数量。tmpfs
mount -o remount
用作zram
临时文件系统的后备存在缺点,即写入其中的所有数据都需要立即压缩(并在使用时解压缩)。此外,您还需要在顶部放置一个文件系统,即使没有存储实际文件,也需要存储其结构。此外,您还会受到诸如最大 inode 数量、无法轻松更改其大小等限制。
在我看来,最好的解决方案是安装tmpfs
到某个地方并创建zram
交换区。它结合了两者的优点,同时最大限度地减少了缺点。
或者当然购买更多内存 ;)
答案2
由于可以进行压缩,因此使用zram
for可获得更好的性能。swap
你的内核需要启用CONFIG_ZRAM_LZ4_COMPRESS
才能受益lz4
压缩。
我使用zram
for swap
& for /tmp
(zram-init
使用合理的默认挂载选项为了/tmp
):
root@alpine [~]# cat /proc/swaps
Filename Type Size Used Priority
/dev/vda7 partition 1045500 0 -1
/dev/zram0 partition 1048572 0 16383
root@alpine [~]# mount|grep zram
/dev/zram1 on /tmp type ext4 (rw,nosuid,nodev,noexec,discard)
仍有使用的情况tmpfs
。我使用这些将具有安全安装选项的卷绑定到lxc
容器中:
root@http [~]# mount|grep tmpfs
tmpfs on /var/www/domain.com/bin type tmpfs (ro,nosuid,nodev,relatime,size=200k)
tmpfs on /var/www/domain.comm/dev type tmpfs (rw,nosuid,relatime,size=4k,mode=755)