# dd if=/dev/zero of=tst1 bs=1c count=1
1+0 records in
1+0 records out
1 byte (1 B) copied, 0.000141358 s, 7.1 kB/s
# ls -l tst1
-rw-r--r-- 1 root root 1 Mar 10 22:19 tst1
# mkswap tst1
mkswap: error: swap area needs to be at least 40 KiB
所以我们至少需要 40k(至少在 x86_64 上的 RedHat 7 上)
# dd if=/dev/zero of=tst1 bs=1c count=40960
40960+0 records in
40960+0 records out
40960 bytes (41 kB) copied, 0.183741 s, 223 kB/s
# mkswap tst1
Setting up swapspace version 1, size = 36 KiB
no label, UUID=4d559295-45c6-4952-8c14-f8eb55f3c201
# swapon tst1
swapon: /home/sweh/tst1: insecure permissions 0644, 0600 suggested.
# cat /proc/swaps
Filename Type Size Used Priority
/home/sweh/tst1 file 36 0 -2
因此,由于标头信息和其他内容,交换文件会产生一些开销。
如果您尝试使用太小的文件...在这种情况下为 1 个字节
所以我们至少需要 40k(至少在 x86_64 上的 RedHat 7 上)
这提供了 36K 的交换空间。
您可以通过输入以下内容来获取系统的页面大小
我的系统返回 4096 作为当前页面大小,即 4kB。这也是最小页面大小,在某些系统上,页面可能会大得多。有关更多详细信息,请参阅此答案。
话虽如此,要估计最小功能大小,您应该考虑到交换空间的大小越小,如果正在使用它,就会发生更多的页面错误,这会降低计算机的性能,因为将花费越来越多的时间从内存中检索页面。