Состояние Git медленно на гостевой VMWare, но не на хосте - PullRequest
8 голосов
/ 05 октября 2010

Я использую гостевую систему Ubuntu Lucid в VMWare Player на компьютере с Windows XP, используя общую папку.git status медленно в ВМ (24 секунды), но быстро на хост-компьютере (0,06 секунды) Есть идеи почему?

Подробнее:

  • Мой репо составляет около 620 МБ (получено путем выполнения du -hs . в гостевой ОС)
  • Я попытался запустить git gc, как описано здесь, но это не имело никакого значения:

Подсчет объектов: 3604, сделано.

Сжатие объектов: 100% (1069/1069),

сделано.Написание объектов: 100%

(3604/3604), выполнено.Всего 3604 (дельта 2143), повторно использовано 3604 (дельта 2143)

Удаление дубликатов объектов: 100%

(256/256), выполнено.

  • В моем репозитории много файлов CSV, а также код - это плохая идея?
  • На хосте Windows я использую PortableGit-1.7.2.3-preview20100911
  • На гостевом компьютере Ubuntu я использую Git версии 1.7.0.4установлен из aptitude
  • В гостевой системе Ubuntu я делю папку с хоста Windows с помощью общей папки VMWare
  • В гостевой системе Windows у меня нет выбора, кроме как запустить Sophos, но я временно включилотключите «сканирование при доступе», и это не имеет значения.
  • У меня изначально были проблемы с медленными часами гостя, но это было исправлено с опциями grub nosmp noapic nolapic, как описано здесь .

Ответы [ 2 ]

3 голосов
/ 05 октября 2010

Общие папки имеют значительные накладные расходы, поскольку вы пересекаете гостевую границу <> хоста. Я не очень знаком с внутренностями git, но я предполагаю, что он выполняет lot довольно небольших операций, связанных с относительно большим количеством накладных расходов на каждую операцию. Вы можете попробовать сделать git repack, чтобы уменьшить количество отдельных объектов (файлов), это может немного помочь.

Обязательно ли вы разделяете хранилище между гостем и хостом?

1 голос
/ 05 октября 2010

1 / Доступ на чтение, как правило, медленнее через виртуальную машину, чем в собственной ОС

2 / git status медленнее , когда в репо есть подмодули : у вас есть?
С git1.7.2 + вы можете игнорировать те, у которых опция --ignore-submodules .

...