git fsck: out of memory

IDE, VCS и прочее

Модератор: Модераторы разделов

Ответить
seevi
Сообщения: 1
ОС: Debian GNU/Linux

git fsck: out of memory

Сообщение seevi »

Добрый день.
Имеется репозиторий git (примерно 16000 объектов, каталог .git весит 1.2 Гб, хранятся исходники + бинарники 100 Мб и больше). Если выполнить любую из команд

Код:

git fsck git gc --aggressive git fast-export master > /dev/null git verify-pack -v .git/objects/pack/pack-<blablabla>.idx git unpack-objects < pack-<blablabla>.pack
,
то git всегда валится с ошибкой

Код:

fatal: Out of memory, malloc failed (tried to allocate 3251404722 bytes).

Я пробовал запускать эти команды на cygwin под Windows XP x86 (2 Гб оперативки, git 1.7.9 из cygwin) и на Debian 7 x86 (2 Гб оперативки, 5 Гб свопа, git 1.7.10.4) - результат одинаковый. Какая-то нелепая ситуация, гит умудряется падать при попытке распаковать репозиторий, который сам создал на той же самой машине. При этом git log и чекаут любого коммита отлично работает. Следующий скрипт последовательно выгружает все коммиты с самого начала, и он работает без ошибок (в репозитории только ветка master):

Код:

for rev in $(git log --format=%h master | tac); do echo Checking out $rev git checkout $rev || exit 1 done

Видно, что git fsck пытается выделить блок больше 3 Гб, а в 32-разрядных что в линуксе, что в винде процесс, по-моему, не в состоянии выделить больше 3 Гб памяти, так что я поставил Debian 7 amd64 на виртуалку (770 Мб оперативки, своп 30 Гб) и попробовал запустить на нем, но теперь git убивается OOM-киллером. Выключаю ООМ-киллер:

Код:

sysctl -w vm.overcommit_memory=2 sysctl -w vm.overcommit_ratio=100

Но это тоже не дает эффекта: гит сжирает всю память, только-только начинает лезть в своп, и ООМ-киллер убивает его. Понимаю, что со свопом гит будет работать *очень* долго, но уж хочется довести дело до конца и убедиться, что с репозиторием порядок, а дальше подумаю, как быть.
Есть у кого-нибудь идеи, что тут можно сделать? В первую очередь хотелось бы запустить гит на виртуалке и завершить fsck, ну и другим идеям тоже буду рад.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20794
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: git fsck: out of memory

Сообщение Bizdelnick »

ИМХО надо вычищать бинарники, git на их хранение просто не рассчитан.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Ответить