分页: 1 / 1

利用squashfs让机械硬盘"grep -r"源代码目录的速度提升9倍

发表于 : 2018-10-01 17:53
科学之子
利用squashfs让机械硬盘"grep -r"源代码目录的速度提升9倍
方法很简单,就是把需要经常grep -r源代码目录(比如内核源代码目录)创建成squashfs镜像.

代码: 全选

mksquashfs ./linux-4.14.13 ./linux-4.14.13.lz4.squashfs -b 1M -comp lz4 -Xhc -no-exports -noappend
sync
普通ext4分区目录:

代码: 全选

$ time grep -r CONFIG_HAVE_KERNEL
arch/sh/boot/compressed/misc.c:#ifdef CONFIG_HAVE_KERNEL_BZIP2
arch/s390/boot/compressed/misc.c:#ifdef CONFIG_HAVE_KERNEL_BZIP2

real	0m57.310s
user	0m0.359s
sys	0m4.710s
squashfs挂载点:

代码: 全选

$ time grep -r CONFIG_HAVE_KERNEL
arch/s390/boot/compressed/misc.c:#ifdef CONFIG_HAVE_KERNEL_BZIP2
arch/sh/boot/compressed/misc.c:#ifdef CONFIG_HAVE_KERNEL_BZIP2

real	0m5.497s
user	0m0.309s
sys	0m3.793s
注:grep -r出来的顺序不一样,猜测是文件系统实现的关系.
不知道为什么,整个系统搬进squashfs提速大约只有33%,猜测是因为grep -r的读取顺序跟镜像中文件的排列顺序一致.

Re: 利用squashfs让机械硬盘"grep -r"源代码目录的速度提升9倍

发表于 : 2018-10-02 20:42
科学之子
补充一下小型(2G)ext4的测试结果

代码: 全选

$ time grep -r CONFIG_HAVE_KERNEL
arch/sh/boot/compressed/misc.c:#ifdef CONFIG_HAVE_KERNEL_BZIP2
arch/s390/boot/compressed/misc.c:#ifdef CONFIG_HAVE_KERNEL_BZIP2
grep: lost+found: Permission denied

real	0m39.418s
user	0m0.440s
sys	0m1.564s
小尺寸的ext4进行"grep -r"有明显改善,但相比squashfs依然相差接近7倍

代码: 全选

>>> 38.5/5.7
6.754385964912281

Re: 利用squashfs让机械硬盘"grep -r"源代码目录的速度提升9倍

发表于 : 2018-10-06 23:49
astolia
挂载时试过加noatime和nodiratime没?debian应该默认是开了relatime的,多测几次就能排除其影响,但你这个只测一次看不出来
还有用fgrep速度还能提升几倍