优化在大型Git仓库中的Git命令执行速度

最近由于一些原因,我阅读了一些浏览器源代码。然而,由于文件数量太多,导致在终端上执行每个操作都非常缓慢,给我带来了很大的压力。看起来磁盘的输入/输出是瓶颈,通过增加文件系统的vnode数可以进行调优。这个设置对应的是内核参数kern.maxvnode。

$ sudo sysctl kern.maxvnodes=$((512*1024))

更改maxvode并比较执行时间

amendments to maxvode, and comparing execution time of $ git status. Note that the current value of kern.maxvode is

$ sysctl -a | egrep kern.maxvnodes

可以通过检查来确认。我使用的是macOS,但在BSD系统中,kern.maxvnode的默认值似乎是263168。

在之前

kern.maxvnodes的值为263168。

    • 0.86s user 4.71s system 222% cpu 2.504 total

 

    • 0.88s user 3.91s system 208% cpu 2.305 total

 

    0.85s user 5.35s system 241% cpu 2.569 total

平均时间:2.45秒

之后

kern.maxvnodes = 524288 可以变成:最大节点数为524288。

    • 0.87s user 2.92s system 184% cpu 2.053 total

 

    • 0.84s user 1.39s system 152% cpu 1.463 total

 

    0.87s user 1.37s system 155% cpu 1.435 total

平均值:1.64秒

平均而言,速度快了大约1秒。第一个运行较慢的原因可能是,实际上改变了磁盘I/O类的内核参数需要一些时间才能体现出效果。顺便说一句,即使将kern.maxvnodes增加到更高,也没有特别明显的变化。此外,在其他命令中也能看到改善,但$ git status特别显著。

请参阅

    • Tuning Kernel Limits

 

    • Tuning maxvnodes for better system peformance

 

    Improving performance of git status
广告
将在 10 秒后关闭
bannerAds