On Mon, Nov 5, 2018 at 9:37 PM Austin S. Hemmelgarn <ahferroin7@gmail.com> wrote:
On 11/5/2018 10:58 AM, Adam Borowski wrote:
On Mon, Nov 05, 2018 at 08:31:46PM +0530, Pintu Agarwal wrote:
Hi,
I have one requirement: I wanted to have a swapfile (64MB to 256MB) on my system. But I wanted the data to be compressed and stored on the disk in my swapfile. [Similar to zram, but compressed data should be moved to disk, instead of RAM].
Note: I wanted to optimize RAM space, so performance is not important right now for our requirement.
So, what are the options available, to perform this in 4.x kernel version. My Kernel: 4.9.x Board: any - (arm64 mostly).
As I know, following are the choices: 1) ZRAM: But it compresses and store data in RAM itself 2) frontswap + zswap : Didn't explore much on this, not sure if this is helpful for our case. 3) Manually creating swapfile: but how to compress it ? 4) Any other options ?
Loop device on any filesystem that can compress (such as btrfs)? The performance would suck, though -- besides the indirection of loop, btrfs compresses in blocks of 128KB while swap wants 4KB writes. Other similar option is qemu-nbd -- it can use compressed disk images and expose them to a (local) nbd client.
Swap on any type of a networked storage device (NBD, iSCSI, ATAoE, etc) served from the local system is _really_ risky. The moment the local server process for the storage device gets forced out to swap, you deadlock.
Performance isn't _too_ bad for the BTRFS case though (I've actually tested this before), just make sure you disable direct I/O mode on the loop device, otherwise you run the risk of data corruption.
Sorry, btrfs is not an option for us. We want something more lighter weight as our requirement is just < 200 MBs.