On Thu, Nov 14, 2013 at 05:14:18AM +0000, Phillip Lougher wrote: > This introduces an implementation of squashfs_readpage_block() > that directly decompresses into the page cache. > > This uses the previously added page handler abstraction to push > down the necessary kmap_atomic/kunmap_atomic operations on the > page cache buffers into the decompressors. This enables > direct copying into the page cache without using the slow > kmap/kunmap calls. > > The code detects when multiple threads are racing in > squashfs_readpage() to decompress the same block, and avoids > this regression by falling back to using an intermediate > buffer. > > This patch enhances the performance of Squashfs significantly > when multiple processes are accessing the filesystem simultaneously > because it not only reduces memcopying, but it more importantly > eliminates the lock contention on the intermediate buffer. > > Using single-thread decompression. > > dd if=file1 of=/dev/null bs=4096 & > dd if=file2 of=/dev/null bs=4096 & > dd if=file3 of=/dev/null bs=4096 & > dd if=file4 of=/dev/null bs=4096 > > Before: > > 629145600 bytes (629 MB) copied, 45.8046 s, 13.7 MB/s > > After: > > 629145600 bytes (629 MB) copied, 9.29414 s, 67.7 MB/s > > V3: > * Kconfig: fix mempcpy typo > * squashfs_readpage_block(): Do not zero pages on decompress error > * squashfs_read_cache(): free page in caller not here > * page_actor.c: add comment regarding sleeping > * page_actor.c: optimise code slightly > > Signed-off-by: Phillip Lougher <phil...@squashfs.org.uk> Reviewed-by: Minchan Kim <minc...@kernel.org>
-- Kind regards, Minchan Kim -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/