Я не уверен, является ли это проблемой Ubuntu или проблемой git...
у меня два компа
- один - это виртуальная машина Ubuntu (назовем ее VM PC)
- другой — ПК с Ubuntu (назовем его Build PC)
Оба работают под управлением Ubuntu 18.04.
Оба работают на одном и том же оборудовании (разные физические машины, но одинаковая сборка аппаратного обеспечения).
У меня очень большая структура репо, но когда я запускаю time git submodule foreach --recursive git status
Я получаю дико разные времена:
- Сборка ПК: ~40 с.
- ВМ ПК: ~9 с
Если я просто сделаю статус git
на верхнем уровне я получаю ~ 2 с на ПК для сборки и ~ 0,5 с на ПК с виртуальной машиной.
Оба работают с одной и той же версией git 2.17.1 — на самом деле две установки Ubuntu используют одни и те же сценарии установки — так что они действительно очень похожи.
Основное отличие состоит в том, что ПК для сборки имеет 3 физических 1 NVmem и 2xSSD:
- 256 ГБ ОС (NVM)
- Репозитории SW объемом 1 ТБ (тестируемый репозиторий находится здесь)
- 1 ТБ других репозиториев
В то время как на виртуальной машине все это находится на одном SSD в образе диска virutal box (около 500 ГБ).
Я не знаю, с чего начать отладку этой проблемы, поэтому я решил начать с этого форума :)
Обновить
Я попробовал это на твердотельном накопителе ОС на ПК для сборки и все равно получил более медленный результат .... так что это не проблема со 2-м / 3-м твердотельным накопителем или тем, как они смонтированы ...
Обновление 2
На двух разных машинах они тестируются на одном и том же репо (клонируются таким же образом с одного и того же пульта). Сборка ПК является более поздним клоном, но я надеюсь, что отладка счетчика будет такой же. Вот результаты: git count-objects -v
:
ВМ ПК
количество: 281
размер: 1184
в упаковке: 1698
упаковок: 2
размер упаковки: 112961
чернослив-упаковка: 0
мусор: 0
размер мусора: 0
Сборка ПК
количество: 0
размер: 0
в упаковке: 1972 г.
упаковок: 1
размер упаковки: 112994
чернослив-упаковка: 0
мусор: 0
размер мусора: 0
очень разные значения... Я не уверен, что это значит. Поэтому я удалил и повторно клонировал репозиторий VM PC, чтобы посмотреть, не изменится ли новый клон. Вот эти значения:
количество: 0
размер: 0
в упаковке: 1972 г.
упаковок: 1
размер упаковки: 112994
чернослив-упаковка: 0
мусор: 0
размер мусора: 0
я перезапустил статус git
тест и получил точно такие же результаты - где VM PC был намного быстрее
Обновление 3
Действительно странно работает: время GIT_TRACE_PERFORMANCE=1 git st
на Build PC печатает загрузку отладки, но работает так же быстро, как VM PC (< 1 с). Но если я запускаю что-то еще, это занимает гораздо больше времени:
время GIT_TRACE_PERFORMANCE=1 git st
~ 0,5 с
время GIT_TRACE_PERFORMANCE=1 git st 2> /dev/null
~2 с
время git ул
~2 с