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

其它类软件,非上述版软件
回复
科学之子
帖子: 2271
注册时间: 2013-05-26 6:58
系统: Debian 9
送出感谢: 846 次
接收感谢: 30 次

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

#1

帖子 科学之子 » 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的读取顺序跟镜像中文件的排列顺序一致.
科学之子
帖子: 2271
注册时间: 2013-05-26 6:58
系统: Debian 9
送出感谢: 846 次
接收感谢: 30 次

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

#2

帖子 科学之子 » 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
头像
astolia
论坛版主
帖子: 3400
注册时间: 2008-09-18 13:11
送出感谢: 1 次
接收感谢: 570 次

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

#3

帖子 astolia » 2018-10-06 23:49

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

回到 “其它类软件”