Hi Arnd, 2017-06-01 23:57 GMT+09:00 Arnd Bergmann <arnd@xxxxxxxx>: > checksyscalls.sh is run at every "make" run while building the kernel, > even if no files have changed. I looked at where we spend time in > a trivial empty rebuild and found checksyscalls.sh to be a source > of noticeable overhead, as it spawns a lot of child processes just > to call 'cat' copying from stdin to stdout, once for each of the > over 400 x86 syscalls. > > Using a shell-builtin (echo) instead of the external command gives > us a 13x speedup: > > Before After > real 0m1.018s real 0m0.077s > user 0m0.068s user 0m0.048s > sys 0m0.156s sys 0m0.024s > > The time it took to rebuild a single file on my machine dropped > from 5.5 seconds to 4.5 seconds. > I will apply this patch. On my PC, I did not see such a big difference as you saw, though. Big or small, it is speed-up anyway. My test result. Three times for each. Without this patch: masahiro@grover:~/workspace/linux$ time make prepare0 CHK include/config/kernel.release CHK include/generated/uapi/linux/version.h CHK include/generated/utsrelease.h CHK include/generated/bounds.h CHK include/generated/timeconst.h CHK include/generated/asm-offsets.h CALL scripts/checksyscalls.sh real 0m0.556s user 0m0.048s sys 0m0.028s masahiro@grover:~/workspace/linux$ time make prepare0 CHK include/config/kernel.release CHK include/generated/uapi/linux/version.h CHK include/generated/utsrelease.h CHK include/generated/bounds.h CHK include/generated/timeconst.h CHK include/generated/asm-offsets.h CALL scripts/checksyscalls.sh real 0m0.531s user 0m0.052s sys 0m0.012s masahiro@grover:~/workspace/linux$ time make prepare0 CHK include/config/kernel.release CHK include/generated/uapi/linux/version.h CHK include/generated/utsrelease.h CHK include/generated/bounds.h CHK include/generated/timeconst.h CHK include/generated/asm-offsets.h CALL scripts/checksyscalls.sh real 0m0.530s user 0m0.040s sys 0m0.020s With this patch: masahiro@grover:~/workspace/linux$ git log -1 --oneline b7a9f79 kbuild: speed up checksyscalls.sh masahiro@grover:~/workspace/linux$ time make prepare0 CHK include/config/kernel.release CHK include/generated/uapi/linux/version.h CHK include/generated/utsrelease.h CHK include/generated/bounds.h CHK include/generated/timeconst.h CHK include/generated/asm-offsets.h CALL scripts/checksyscalls.sh real 0m0.384s user 0m0.040s sys 0m0.008s masahiro@grover:~/workspace/linux$ time make prepare0 CHK include/config/kernel.release CHK include/generated/uapi/linux/version.h CHK include/generated/utsrelease.h CHK include/generated/bounds.h CHK include/generated/timeconst.h CHK include/generated/asm-offsets.h CALL scripts/checksyscalls.sh real 0m0.386s user 0m0.048s sys 0m0.000s masahiro@grover:~/workspace/linux$ time make prepare0 CHK include/config/kernel.release CHK include/generated/uapi/linux/version.h CHK include/generated/utsrelease.h CHK include/generated/bounds.h CHK include/generated/timeconst.h CHK include/generated/asm-offsets.h CALL scripts/checksyscalls.sh real 0m0.384s user 0m0.024s sys 0m0.024s -- Best Regards Masahiro Yamada -- To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html