Я пытаюсь повысить производительность репозитория git, который почти исключительно используется мной для создания версий проекта научных вычислений. Программное обеспечение для моделирования проекта загружает небольшие (менее 100 КБ) текстовые файлы в довольно глубокие каталоги, представляя отдельные, относительно экономичные результаты моделирования. Я указываю, что они экономичны, чтобы показать, что я могу создать многие тысячи в течение короткого промежутка времени, а это означает, что ситуация будет только ухудшаться. Эти симуляции запускаются в виде пакетов, что может означать, что отдельные коммиты могут включать несколько сотен МБ данных, и все в форме этих глубоких поддеревьев, заполненных крошечными текстовыми файлами. Институциональный вычислительный кластер, на котором я это запускаю, использует массив жестких дисков RAID6 емкостью 33 ТБ для хранения всех данных моей группы (если это имеет значение, на данный момент этот диск не имеет огромного запаса в процентах — около 1,6 ТБ).
Я разумно уверен, что это плохая производительность со стороны массива RAID6, потому что когда я запускаю git add .
верхнего уровня, это может занять десятки минут, даже если изменилось всего несколько файлов. Совершать так же плохо. Отправка после того, как что-то зафиксировано, обычно все еще занимает минуты, но немного быстрее (и медленная часть отправки — это не та часть, где данные отправляются по сети). Выполнение всего этого в интерактивном сеансе, когда я запросил дополнительные ядра, также ускоряет процесс, но добавление новых результатов моделирования может занять несколько минут. Когда я делаю то же самое на своем ноутбуке, в котором установлен современный твердотельный накопитель NVME-PCIE, эти операции занимают секунды.
Итак, какой-нибудь совет? Я посмотрел на git lfs, но не уверен, что это поможет мне тонну, потому что указатели, которые он будет создавать, не в миллион раз меньше, чем файлы, на которые они будут указывать, что является нормальным вариантом использования. Если люди все еще думают, что это поможет, я думаю, я могу попробовать. Кроме того, если это имеет значение, Linux кластера старый (конечно), поэтому: git version 1.8.3.1
...
С удовольствием добавим больше контекста, если это необходимо. РЕДАКТИРОВАТЬ git count-objects -vH
возвращает:
count: 1
size: 4.00 KiB
in-pack: 229216
packs: 1
size-pack: 1.25 GiB
prune-packable: 0
garbage: 0
size-garbage: 0 bytes
P.S. Я добавил тег large-data
, несмотря на то, что мои данные легко помещаются на носителе данных одного устройства. Я добавил его, потому что данные стали достаточно большими/сложными, чтобы стать громоздкими, как объясняется в сообщении. Если люди считают, что это действительно неуместно, я могу удалить это.
git lfs
. Как вы думаете, производительность в моей ситуации была бы существенно лучше, если бы у меня был более свежий мерзавец? - person LGS   schedule 29.03.2021git version 2.25.1
. Я считаю, что это родная версия последней версии Ubuntu 20.04, которой является мой ноутбук. Интересно, смогу ли я безболезненно откатиться к старому мерзавцу... - person LGS   schedule 29.03.2021--aggressive
) должны быть быстрее. - person torek   schedule 30.03.2021