swap tmpfs (明らかに悪い考えですが可能ですか?)

swap tmpfs (明らかに悪い考えですが可能ですか?)

この質問は、スワップファイルをtmpfsに移動するとパフォーマンスが向上するという同僚の冗談から来ました。もちろん、これが可能であっても良い考えではありません。ただ知りたいのですが、これは可能でしょうか?

私は現在Ubuntu 14.04を使用していますが、ほとんどのLinux / Unixシステムでもプロセスが似ていると思います。これが私がすることです:

> mkdir /mnt/tmp
> mount -t tmpfs -o size=10m tmpfs /mnt/tmp
> dd if=/dev/zero of=/mnt/tmp/swapfile bs=1024 count=10240
> chmod 600 /mnt/tmp/swapfile
> mkswap /mnt/tmp/swapfile
# So far, so good!

> swapon /mnt/tmp/swapfile
swapon: /mnt/tmp/swapfile: swapon failed: Invalid argument

もしそうなら、LinuxまたはUnixのどちらでもRAMのファイル/パーティションにスワップを設定できますか?Invalid argument上記で発生したエラーを解決する方法はありますか?

もう一度言いますが、これが実際の問題を解決するとは期待していません。ただ楽しい実験だと思います。

ベストアンサー1

これは不可能です。swaponシステムコールには、readpageファイルシステムbmapによって実装された(間接)呼び出しが必要です。

http://lxr.free-electrons.com/source/mm/swapfile.c?v=4.0#L2412

if (!mapping->a_ops->readpage) {
    error = -EINVAL;
    goto bad_swap;
}   

しかし、それらのどれも実装されていません。一時ファイルシステム、対応する項目がありませんaddress_space_operationshttp://lxr.free-electrons.com/source/mm/shmem.c?v=4.0#L3104

同じ理由で、tmpfsはループマウントを保存できず、ramfsも機能しません(bmap呼び出さない)

おすすめ記事