Май 28 2010
Portage
SQLite
для ускорения процесса расчёта зависимостей можно научить portage работать со SQLite
1. пакет dev-lang/python должен быть собран с USE флагом sqlite
2. создаём файл /etc/portage/modules если он ещё не создан
добавляем в него строку
3. если используете версию portage новее чем 2.1.6.4 то в make.conf к FEATURES= добавляем через пробел metadata-transfer
4. пересоздаём кэш
5. если хотите что бы eix тоже использовал sqlite то его тоже надо пересобрать с USE флагом sqlite
6. для того чтобы eix использовал sqlite и для оверлеев добавляем в /etc/eixrc строки
OVERLAY_CACHE_METHOD='sqlite'
если не пользуетесь
то последнюю строку лучше заменить на
7. пересоздаём кэш eix
lbzip2
lbzip2 это реализация bzip2 с возможностью выполнять компрессию/декомпрессию в несколько потоков.
сравнение на разогнанной до 3.2GHz E7200 (перед каждым запуском кэш обнулялся):
bzip2
real 0m44.510s
user 0m34.399s
sys 0m2.310s
[ megabaks@desktop ] ~/testio $ time bunzip2 chromium-18.0.977.0.tar.bz2
real 0m44.266s
user 0m35.787s
sys 0m2.222s
[ megabaks@desktop ] ~/testio $
lbzip2
real 0m21.298s
user 0m36.332s
sys 0m3.707s
[ megabaks@desktop ] ~/testio $ time lbunzip2 -n2 chromium-18.0.977.0.tar.bz2
real 0m21.339s
user 0m36.378s
sys 0m3.739s
[ megabaks@desktop ] ~/testio $
при сжатии разница примерно такая же:
bzip2
real 2m33.827s
user 1m5.085s
sys 1m24.295s
[ megabaks@desktop ] ~/testio $
lbzip2
real 1m6.772s
user 1m2.581s
sys 1m2.460s
[ megabaks@desktop ] ~/testio $
для использования этого в портаже нужно добавить в make.conf
где X = кол-во ядер
econf (не безопасно)
для ускорения работы скриптов configure можно использовать кэш
для этого в make.conf добавляем
т.к. в некоторых ебилдах используются append/strip для {C,CXX}FLAGS, то эти переменные, естественно, будут отличатся для разных пакетов.
это может привести к следующему (на моих флага)
configure: error: `CFLAGS' has changed since the previous run:
configure: former value: `-O2 -march=core2 -mtune=generic -mfpmath=sse -msse4.1 -fomit-frame-pointer -pipe'
configure: current value: `-O2 -march=core2 -mtune=generic -pipe'
configure: error: `CPPFLAGS' was not set in the previous run
configure: error: in `/var/tmp/portage/x11-libs/gtk+-3.2.3/work/gtk+-3.2.3':
configure: error: changes in the environment can compromise the build
configure: error: run `make distclean' and/or `rm /var/tmp/configure.cache' and start over
чтобы этого не происходило, нужно добавить в /etc/portage/bashrc
sed -e "s|.*FLAGS.*||" -i /var/tmp/configure.cache
профиты:
prepare && configure для tar-а без кэша 48 сек
с кэшем 14 сек
но это если используется один компилятор для всех пакетов, иначе надо добавить следующее
sed -e "s|.*FLAGS.*||" \
-e "s|.*CC.*||" \
-e "s|.*CXX.*||" \
-e "s|.*CPP.*||" \
-i /var/tmp/configure.cache
но это на свой страх и риск, т.к. может вызвать проблемы при сборке!
welinux
Спасибо! Буду пробовать. Правда прирост скорости будет сферический, но в этом вся гента ;)
К тому же теперь при синхронизации приходится ждать, пока он эту свою базу построит.
он и до этого «строил» — только прогресс бара не было
А почему у меня eix теперь не видит оверлеи ни в какую?
Depending on the metadata your local and layman overlays provide, the sqlite option might not work, so if you’re experiencing errors, omit the OVERLAY_CACHE_METHOD variable.
Пришлось сделать именно так, ибо eix-update ругался на невозможность прочитать файл кеша для оверлеев.
читай внимательней!
А что я пропустил?
нужно пересобрать eix с юзом sqlite
не? :)
Дык пересобирал уже.
и старые не-скул базы снёс?
>и старые не-скул базы снёс?
Ась? Как и зачем? Где это написано?
>>и старые не-скул базы снёс?
>Ась? Как и зачем? Где это написано?
А, это сделал, да. Все что написано вроде бы делал.
спасибо, теперь несколько быстрее (~9%, сравнивая по time) расчёт обновок и мгновенное обновление базы данных eix