一台电脑上的 Git 状态非常慢

一台电脑上的 Git 状态非常慢

我不确定这是 ubuntu 问题还是 git 问题......

我有两台电脑

  • 一个是 ubuntu VM(称为 VM PC)
  • 另一台是 Ubuntu PC(称为 Build PC)

两者都运行 Ubuntu 18.04。

两者都在相同的硬件上运行(不同的物理机器 - 但相同的硬件构建)。

我有一个非常大的 repo 结构,但是当我运行时,time git submodule foreach --recursive git status我得到的时间却大不相同:

  • 构建 PC:~40 秒
  • VM PC:~9 秒

如果我只是git status在顶层执行此操作,那么在 Build PC 上我会得到~2 秒,在 VM PC 上我会得到~0.5 秒。

两者都运行相同的 git 版本 2.17.1 - 事实上,这两个 Ubuntu 使用相同的安装脚本进行设置 - 所以它们实际上非常相似。

主要区别在于 Build PC 有 3 个物理 1 NVmem 和 2xSSD:

  1. 256GB 操作系统 (NVM)
  2. 1TB sw 存储库(正在测试的存储库在此处)
  3. 1TB 其他存储库

而在虚拟机上,所有内容都位于虚拟机盒磁盘映像中的一个 SSD 上(大约 500GB)

我不确定从哪里开始调试这个问题所以我想我会从这个论坛开始:)

更新

我在 Build PC 上的 OS SSD 上尝试过这个,但速度仍然比较慢......所以这不是第 2/3 个 SSD 的问题,也不是它们的安装方式的问题......

更新 2

在两台不同的机器上 - 它们针对完全相同的 repo 进行测试(以相同的方式从同一个远程克隆)。Build PC 是一个较新的克隆 - 但我希望计数调试是相同的。以下是结果git count-objects -v::

虚拟机

count: 281
size: 1184
in-pack: 1698
packs: 2
size-pack: 112961
prune-packable: 0
garbage: 0
size-garbage: 0

构建 PC

count: 0
size: 0
in-pack: 1972
packs: 1
size-pack: 112994
prune-packable: 0
garbage: 0
size-garbage: 0

值非常不同...我不确定那是什么意思。所以我删除并重新克隆了 VM PC 存储库,以查看新克隆是否会产生不同的结果。这些值如下:

count: 0
size: 0
in-pack: 1972
packs: 1
size-pack: 112994
prune-packable: 0
garbage: 0
size-garbage: 0

我重新进行了git status测试,得到了完全相同的结果 - VM PC 的速度要快得多

更新 3

运行起来真的很奇怪:time GIT_TRACE_PERFORMANCE=1 git st在 Build PC 上打印了大量调试信息 - 但运行速度与 VM PC 一样快(< 1s)。但如果我运行其他任何东西,则需要更长时间:

  • time GIT_TRACE_PERFORMANCE=1 git st~0.5秒
  • time GIT_TRACE_PERFORMANCE=1 git st 2> /dev/null~2秒
  • time git st~2秒

相关内容