LINUX.ORG.RU
решено ФорумTalks

Portage тормоза уже неторт!

 , ,


2

1

По мотивам всего вот этого ТЫЦ, ТЫЦ, ТЫЦ, ТЫЦ, ТЫЦ и ТЫЦ и многих других топиков на эту же тему.

Я просто оставлю это здесь Оценка влияния количества ebuild-ов в дереве на скорость выполнения emerge.

И да для Ъ не будет.

★★★★★

Последнее исправление: init_6 (всего исправлений: 1)

Как нетрудно заметить в 31 сек/8 сек=3,875 раза т.е. в 3,875 раза ускоряется процесс

emerge --update --newuse --deep @world @system -epv

от уменьшения объёма дерева portage от официального до минимально необходимого количества ebuild-ов в дереве и при прочих неизменных.

P.S.Ещё раз увижу от тебя такое неуважение к Ъ и я тебе сделаю что-то плохое. Фу таким быть.

Stahl ★★☆
()

У меня за то же время, что портаж рассчитывает зависимости, успевает скомпилироваться несколько пакетов.

tides
()

А оценка где? Где, я тебя спрашиваю, красивые графики зависимости времени выполнения операций от количества пакетов? Как я узнаю экспоненциальный там рост или всего лишь порядка квадратного корня?

kim-roader ★★
()
Ответ на: комментарий от kim-roader

То есть оценки нет и не будет?

То есть у тебя повылазило? Или ты читать/считать не умеешь?

А графики строить это уж ты дружочек сам.

init_6 ★★★★★
() автор топика
Ответ на: комментарий от init_6

То есть по твоему

Как нетрудно заметить в 31 сек/8 сек=3,875 раза

это оценка зависимости скорости от размера? Две точки это не оценка зависимости, а просто две точки.

Или ты читать/считать не умеешь?

И это говорит человек не уважающий Ъ? Стыдно должно быть.

kim-roader ★★
()
Ответ на: комментарий от kim-roader

Две точки это не оценка зависимости, а просто две точки.

А ты сделал хотя-бы эти две точки? Нет? Ну тогда давайпокадосвидания.

И это говорит человек не уважающий Ъ?

Gentoo-шники всех твоих Ъ дом труба шатали а потому-что не читать документацию есть зло.

init_6 ★★★★★
() автор топика
Ответ на: комментарий от init_6

Gentoo-шники всех твоих Ъ дом труба шатали а потому-что не читать документацию есть зло.

Повтори это как только гентушники во всех своих дефолтных профилях по умолчанию добавят use флаг -doc, чтобы читать документацию на внешних ресурсах, а не на localhost'е.

kim-roader ★★
()
Ответ на: комментарий от leg0las

Еще мой тред добавь про тормоза portage

Сделано.

Кстати некисло времени накидывает опция "--with-bdeps=y"

А ещё есть забавные --ignore-built-slot-operator-deps=y и --rebuild-if-new-slot=n которые тоже нехило так влияют.

init_6 ★★★★★
() автор топика
Ответ на: комментарий от init_6

А ещё есть забавные

Что значит забавные? эта опция пересобирает ломающиеся пакеты при обновлении, насколько я помню.

leg0las ★★★★★
()
Ответ на: комментарий от leg0las

Ну sqlite для хранения дерева и не подходит. Я тоже когда-то пробовал прикручивать. Тут нужна какая-то БД, которая с графами зависимостей работает и оптимизирует запросы вида «выдай мне все зависимости, исключая уже установленные».

vurdalak ★★★★★
()
Ответ на: комментарий от leg0las

Хотя, если на каждый пакет наделать вьюх со всеми его зависимостями, то работать будет достаточно быстро. Но кэш будет строиться очень долго, фактически ты делаешь по одному emerge на каждый пакет в дереве :3

vurdalak ★★★★★
()
Ответ на: комментарий от vurdalak

Тогда портаж будет сильно жирным. там скорее всего говнокод, во что я охотно поверю.

leg0las ★★★★★
()
Ответ на: комментарий от vurdalak

На самом деле можно однажды сгенерить кэш зависимостей, а потом просто в него вносить diff при каждом emerge --sync, это все вполне реализуемо. Можно даже напедалить какую-нибудь свою внутреннюю БД со своим форматом, дабы не тянуть кучу зависимостей в stage3, просто этим никто не занимается. А я это не сделаю, т.к. не программер.

leg0las ★★★★★
()
Ответ на: комментарий от leg0las

можно однажды сгенерить кэш зависимостей, а потом просто в него вносить diff при каждом emerge --sync, это все вполне реализуемо

Не только. Нужно ещё при каждом ручном измении ебилдов как-то отлавливать, что изменилось. Или перегенеривать весь кэш с нуля.

vurdalak ★★★★★
()

Как нетрудно заметить в 31 сек/8 сек=3,875 раза т.е. в 3,875 раза ускоряется процесс

ускоряется процесс разбора доступных пакетов.

То есть, грубо говоря, при установке пакета на голую систему ты выигрываешь восемь секунд, что обычно является статистически незначимой погрешностью. Вот не пофиг ли, установится geeqie за минуту или за минуту и восемь секунд? Не пофиг ли, накатятся апдейты из сотни пакетов за час или час и восемь секунд? (Ради политкорректности временем сборки софта в генте было решено пренебречь)

sin
()
Ответ на: комментарий от vurdalak

У портежа нет никакой БД, и он каждый раз бегает по всему дереву?

Там кеш с кучей мелких файлов.

Deleted
()
Ответ на: комментарий от sin

То есть, точно говоря, и как уже успели заметить выше, я получил две точки зависимости. А дальше 3,875 это то во сколько раз быстрее portage посчитает объём пакетов из stage3 с дефолтными USE флагами на минимальном дереве потрежей (в котором исключительно только то что в самом stage3 и ничего более) относительно официальной свалки портежей и при прочих равных условиях.

init_6 ★★★★★
() автор топика

А что, надо быстро? Честно? Ну подтормаживает, всё равно раз в неделю запускаешь. Не понимаю я этого плача. Макось быстрее обновляется. Перейдём?

riki ★★★★
()
Ответ на: комментарий от Deleted

Там походу просто пострипаные ебилды. Добавить бы в них по полному дереву зависимостей, и будет норм.

vurdalak ★★★★★
()

сегодня эксперементировал с запихиванием всех кешев и портежей в озу при помощи tmpfs. Туда поместил /usr/portage, /var/db/pkg, /var/cache

от этого никакого радикального ускорения просчёта зависимостей не происходит, время ускоряется процентов на 30, а используется при этом примерно 1 ядро из 4.

Правда у меня paludis, но думаю что результат будет примерно такой же и для emerge

argin ★★★★★
()
Последнее исправление: argin (всего исправлений: 2)
Ответ на: комментарий от vurdalak

Тут нужна какая-то БД, которая с графами зависимостей работает и оптимизирует запросы вида «выдай мне все зависимости, исключая уже установленные».

А как реализован дебиановский кеш зависимостей? Наверняка есть какая-то хитрость.

Deleted
()
Ответ на: комментарий от vurdalak

Достаточно затолкать их в одну базу. Большая часть времени (по крайней мере, в паладисе) уходит на работу с фс и разбор таких файлов.

А однозначно дерево не построить: зависимости могут быть плавающими (пакет A зависит либо от пакета B, либо от C). Не говоря уже о юзфлагах.

NeXTSTEP ★★
()
Ответ на: комментарий от haku

поставь paludis, если тебе скорость не нужна

пофикшено

NeXTSTEP ★★
()
Ответ на: комментарий от leg0las

> при каждом ручном измении ебилдов
...тебе ругнется портеж на несовпадение контрольных сумм.

А вообще сейчас в portage есть такая фича как thin-manifests и в результате в манифестах исключительно исходники софта а суммы ebuild-ов и прочее вообще по барабану. Так что portage вполне может и не ругнутся.

init_6 ★★★★★
() автор топика
Ответ на: комментарий от Deleted

Хитрость в том, что у дебиана зависимости проще. Никаких флагов, слотов, сабслотов и прочего.

vurdalak ★★★★★
()
Ответ на: комментарий от NeXTSTEP

А однозначно дерево не построить: зависимости могут быть плавающими (пакет A зависит либо от пакета B, либо от C). Не говоря уже о юзфлагах.

А кто говорит про однозначность? В depends и так есть свой синтаксис с флагами и or/and, достаточно в кэш-файлах вписать туда не только прямые «соседние» зависимости, а все, в том же формате. Считать и парсить список будет так же долго, но хотя бы по многим файлам бегать не надо будет.

vurdalak ★★★★★
()
Ответ на: комментарий от init_6

И вот тут он его посчитает быстро или очень быстро, или, даже, может, быть медленно. Допустим, он его будет считать целую минуту!

А потом он начнет собирать твой stage3. За сколько минут он его соберет? Не окажется ли время работы любого алгоритма подсчета в пределах статистической погрешности относительно времени выполнения остальных операций?

sin
()
Ответ на: комментарий от sin

Допустим, он его будет считать целую минуту!

А это и всё остальное Капитан я и без тебя прекрасно знаю.

init_6 ★★★★★
() автор топика
Ответ на: комментарий от leg0las

Тогда ССЗБ, и при указании этих опций не должен использоваться кеш.

Как это не должен? Да при thin-manifests изменение ebuild-а никак не отобразится на контрольной сумме в манифесте потому-что в этом случае она там тупо вовсе не учитывается. Однако при всем при этом зависимости строить и в случае thin-manifests никто не мешает.

init_6 ★★★★★
() автор топика
Ответ на: комментарий от vurdalak

Ну нет, парсить придётся больше, т.к. многие зависимости будут повторяться для разных пакетов.

NeXTSTEP ★★
()
Ответ на: комментарий от NeXTSTEP

нет, у меня portage, и его тормоза весьма печалят меня.

leg0las ★★★★★
()
Ответ на: комментарий от leg0las

У меня кеш лежит в базе sqlite, и у меня ssd, так что i/o как-то до лампочки - не помогло.

На макбуке использую gentoo prefix. Дохлый i5, ssd и дефольтно-настроенный портаж - emerge работает шустро.

На лэптопе с дохлым i7 и базой в sqlite на sata 7200rpm тормоза жестокие.

andreyu ★★★★★
()

Угу, а еще он считает контрольные суммы _всех_ ебилдов при любом обсчете зависимостей. Внезапно обнаружил это после того, как начал писать кастомный ебилд в /usr/local/portage и забросил, не сгенерировав Manifest после последней правки.

shatsky ★★
()
Ответ на: комментарий от shatsky

Угу, а еще он считает контрольные суммы _всех_ ебилдов при любом обсчете зависимостей.

Ну да… или не считает но кому какое дело не правда ли?

init_6 ★★★★★
() автор топика
Ответ на: комментарий от andreyu

Дохлый i5
Дохлый i7

Извините, а где вы такое дохлое железо берете? :)

Сравнение ssd и hdd вообще неуместно. Они совершенно разные, да и преимущество в плане скорости будет в любом случае за ssd.

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.