diff options
author | Sergey Senozhatsky <sergey.senozhatsky@gmail.com> | 2014-04-07 18:38:18 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2014-04-07 19:36:01 -0400 |
commit | 6e76668e415adf799839f0ab205142ad7002d260 (patch) | |
tree | 28daf444a4b268352a5c18b333a1204576a2ed9f /drivers/block/zram/zcomp.c | |
parent | e46b8a030d76d3c94156c545c3f4c3676d813435 (diff) |
zram: add lz4 algorithm backend
Introduce LZ4 compression backend and make it available for selection.
LZ4 support is optional and requires user to set ZRAM_LZ4_COMPRESS config
option. The default compression backend is LZO.
TEST
(x86_64, core i5, 2 cores + 2 hyperthreading, zram disk size 1G,
ext4 file system, 3 compression streams)
iozone -t 3 -R -r 16K -s 60M -I +Z
Test LZO LZ4
----------------------------------------------
Initial write 1642744.62 1317005.09
Rewrite 2498980.88 1800645.16
Read 3957026.38 5877043.75
Re-read 3950997.38 5861847.00
Reverse Read 2937114.56 5047384.00
Stride read 2948163.19 4929587.38
Random read 3292692.69 4880793.62
Mixed workload 1545602.62 3502940.38
Random write 2448039.75 1758786.25
Pwrite 1670051.03 1338329.69
Pread 2530682.00 5097177.62
Fwrite 3232085.62 3275942.56
Fread 6306880.25 6645271.12
So on my system LZ4 is slower in write-only tests, while it performs
better in read-only and mixed (reads + writes) tests.
Official LZ4 benchmarks available here http://code.google.com/p/lz4/
(linux kernel uses revision r90).
Signed-off-by: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
Acked-by: Minchan Kim <minchan@kernel.org>
Cc: Jerome Marchand <jmarchan@redhat.com>
Cc: Nitin Gupta <ngupta@vflare.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers/block/zram/zcomp.c')
-rw-r--r-- | drivers/block/zram/zcomp.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/block/zram/zcomp.c b/drivers/block/zram/zcomp.c index aad533a8bc55..d5919031ca8b 100644 --- a/drivers/block/zram/zcomp.c +++ b/drivers/block/zram/zcomp.c | |||
@@ -15,6 +15,9 @@ | |||
15 | 15 | ||
16 | #include "zcomp.h" | 16 | #include "zcomp.h" |
17 | #include "zcomp_lzo.h" | 17 | #include "zcomp_lzo.h" |
18 | #ifdef CONFIG_ZRAM_LZ4_COMPRESS | ||
19 | #include "zcomp_lz4.h" | ||
20 | #endif | ||
18 | 21 | ||
19 | /* | 22 | /* |
20 | * single zcomp_strm backend | 23 | * single zcomp_strm backend |
@@ -41,6 +44,9 @@ struct zcomp_strm_multi { | |||
41 | 44 | ||
42 | static struct zcomp_backend *backends[] = { | 45 | static struct zcomp_backend *backends[] = { |
43 | &zcomp_lzo, | 46 | &zcomp_lzo, |
47 | #ifdef CONFIG_ZRAM_LZ4_COMPRESS | ||
48 | &zcomp_lz4, | ||
49 | #endif | ||
44 | NULL | 50 | NULL |
45 | }; | 51 | }; |
46 | 52 | ||