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

Загрузка/установка параллельно

 ,


0

1

Я вот ставлю один оффтопик-продукт на оффтопик и вижу, как он, пока подгружает из интернетов одну часть, устанавливает в фоне другую часть. В итоге загрузка и установка завершатся с небольшой разницей во времени. Это круто!

И тут я понимаю: почему-то над временем загрузки системы весь опенсорсный мир заморочился и начал стряпать системд и апстарты, а над нормальным управлением пакетами мало кто старается.

Почему-то никто не захотел распараллелить установку пакетов. Вот почему-то никто не захотел, чтобы сотня независимых пакетов ставилась одновременно.

Нет, оно сначало проверит зависимости, потом выкачает целиком, потом проверятся чексуммы, потом оно еще почешется над проверкой конфликтов, но даже после этого оно пойдет ставить все последовательно. Двадцатый век, честное слово.

Мне кажется, железо сейчас это позволяет.

Не позволяет технология? Не позволяет голова или ее отсутствие? Об этом даже никто не задумывался? Или я не видел адекватных пакетных менеджеров, и есть такие, которые это умеют?

IPS хотя бы сначала просчитывает цепочку операций (причем иногда до бесконечности долго). pacman делает все строго последовательно: разрешение зависимостей, загрузка, проверка целостности и конфликтов, установка. apt, кажется, тоже все делает строго последовательно. И yum тоже. И zypper.

Может, есть какие-нибудь, умеющие параллелить установку?

Спасибо за ответы заранее. =)

★★★★
Ответ на: комментарий от geekless

Не знаю, у тебя как с пищеварением? У меня всё в порядке.

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

Если так подходить к делу - распределенные вычисления тоже не нужны, куда надежнее считать в столбик.

Ты предлагаешь потратить кучу сил на реализацию бесполезной свистелки. Какая разница, поставится приложение за 15 секунд или за 10?

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

впрочем, можно наверно патчи создавать, которые уже потом как-нибудь совмещать да накладывать

Ставить параллельно только пакеты, которые никак не влияют друг на друга. Т.е. из пакетов получается некая метаинформация о списке файлов, на которые влияет пакет, составляется несколько классов невлияния, различные классы устанавливаются последовательно. В худшем случае получим обыкновенную последовательную установку. Вместе с транзакционной системой весьма вкусно выглядит.

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

Есть скачивание и распаковка пакетов. Всё.

Это далеко не единственный вариант организации пакетной системы. Просто он прижился и приелся. И у него есть очевидные недостатки.

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

Одно маленькое приложение - нет разницы.

Грандиозный набор с кучей зависимостей - разница станет заметной.

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

Это далеко не единственный вариант организации пакетной системы.

Ну да, можно еще устанавливать пакеты при помощи чтения заклинаний или гадания на кофейной гуще. Но зачем?

Просто он прижился

Потому что прост и удобен.

приелся.

Это ничего, сегодня на ЛОРе еды много на любой вкус.

И у него есть очевидные недостатки.

Например.

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

После этого еще boot environments надо в линуксе для совсем полного счастья.

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

Так это элементарно имплементится. Я уже представляю себе FIFO очередь скаченных пакетов (которые скачиваются в порядке установки) из которой они достаются и dpkg -i ...

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

Ну да, можно еще устанавливать пакеты при помощи чтения заклинаний или гадания на кофейной гуще. Но зачем?

Уход в сторону, не аргумент. Есть как минимум IPS, который оперирует с пакетами иначе, чем традиционные ПМ.

Потому что прост и удобен.

Палка-копалка тоже проста и удобна. Но зачем-то стала нужна лопата.

Например.

Для адекватных пофайловых обновлений нужны дельты, чтобы не перезакачивать весь архив заново.

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

Легкость костылизации и (в настоящее время) отсутствие адекватных механизмов верификации - добавил в пакет скрипт, изменяющий хз что хз где, и никакой ПМ тут не поможет разрулить возможные случаи.

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

Нет, оно сначало проверит зависимости, потом выкачает целиком, потом проверятся чексуммы, потом оно еще почешется над проверкой конфликтов, но даже после этого оно пойдет ставить все последовательно. Двадцатый век, честное слово.

А как ты хотел?! Что б при разрыве связи с инетами в процессе апдейта у тебя система не работоспособной становилась?! Нет, не надо.

erfea ★★★★★
()

сто лет как зипере, туда наоборот потом впилили что бы сначала качал все а потом ставил.

##
## Commit download policy to use as default.
##
##  DownloadOnly,	Just download all packages to the local cache.
##			Do not install. Implies a dry-run.
##
##  DownloadInAdvance,	First download all packages to the local cache.
##			Then start to install.
##
##  DownloadInHeaps,	Similar to DownloadInAdvance, but try to split
##			the transaction into heaps, where at the end of
##			each heap a consistent system state is reached.
##
##  DownloadAsNeeded	Alternating download and install. Packages are
##			cached just to avid CD/DVD hopping. This is the
##			traditional behaviour.
##
##  <UNSET>		If a value is not set, empty or unknown, we pick
##			some sane default.
##
## commit.downloadMode =

Novell-ch ★★★★★
()
Ответ на: комментарий от zhuravlik

Есть как минимум IPS, который оперирует с пакетами иначе, чем традиционные ПМ.

А?

Для адекватных пофайловых обновлений нужны дельты, чтобы не перезакачивать весь архив заново.

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

Легкость костылизации и (в настоящее время) отсутствие адекватных механизмов верификации - добавил в пакет скрипт, изменяющий хз что хз где, и никакой ПМ тут не поможет разрулить возможные случаи.

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

Дельты есть в pacman, например.

Загрузка одним архивом не реальна, т.к. создает нагрузку на сервер — перепаковывать пакеты при каждом обращении? — Извините.

Пофайловые чексуммы не знаю, реализованы ли где либо. Никогда не интересовался.

geekless ★★
()

Может, есть какие-нибудь, умеющие параллелить установку?

gentoo portage, как параллельную загрузку, так и параллельную установку.

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

FIFO очередь скаченных пакетов (которые скачиваются в порядке установки) из которой они достаются и dpkg -i

В этом случае как раз можно все легко разломать при сбое.

Задача сводится к (разумно быстрому) разбиению графа зависимостей текущей операции на связные компоненты. Затем в рамках каждой компоненты можно выделить набор независимых файлов и, если они отсутствуют в файловой системе, то их тоже можно ставить параллельно (с возможностью отката). В последнюю очередь обновляются файлы, которые уже есть в файловой системе (с бэкапом и возможностью отката). А скриптам директивами в дескрипторе пакета назначается, на каком из этапов им обязательно выполниться. Скрипты, которые могут быть выполнены в самом конце, должны быть выполнены в самом конце.

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

А вот умение загружать и ставить одновременно - это киллер-фича.

Гента так умеет, но на скорость установки это мало влияет, разве что вы не сидите на диал-апе.

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

Да ладно. Я на канале с пропускной способностью 130кб/с только что латех поставил и не переживал от того сколько он у меня там ставится.

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

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

Novell-ch ★★★★★
()
Ответ на: комментарий от geekless

Дельты есть в pacman, например.

Реализация дельт костыльна в архивоориентированных ПМ.

перепаковывать пакеты при каждом обращении? — Извините.

Любой сервер, поддерживающий наряду с запрашивающим клиентом Content-Encoding, так и поступает, кажется. :)

Думаю, что современный сервер выдержит нагрузку перепаковки не чихнув.

Пофайловые чексуммы не знаю, реализованы ли где либо. Никогда не интересовался.

IPS

zhuravlik ★★★★
() автор топика
Ответ на: комментарий от Novell-ch

Ну как я понял, DownloadInHeaps - это то, что я имел в виду.

А «пакет качался потом устанавливался и только потом качался следующий» вполне похоже на архаизм, верю.

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

В этом случае как раз можно все легко разломать при сбое.

в смысле? Я так и не понял чем твой способ лучше в плане защиты от сбоев. То что апдейт файлов отложен? Чепуха, недоустановленные пакеты можно переустановить. Да и установка новых пакетов 1) достаточно редкое явление 2) снапшот перед установкой спасёт.

true_admin ★★★★★
()

Потому что у меня, допустим, при обновлении дистра пакеты качаются 10 минут, а ставятся более часа. Даже если это идеальным образом распаралелить, то вместо 1 часа 30 минут получается 1 час 20.

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

В генте-то скорость установки, скорее всего, почти равна скорости компиляции. :)

Ну зато она удовлетворяет критерии ТС-а.

ymuv ★★★★
()

В линуксе зависимости есть же
Если отлавливать зависимости, скачивать и ставить в определенном порядке, то больше времени уйдет..

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

Реализация дельт костыльна в архивоориентированных ПМ.

Сам-то понял, что сказал? :)

«Реализация телефона костыльна при ношении его в чехле.»

geekless ★★
()

Компилить из сорцов. Одновременно сколько угодно.

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

http://docs.oracle.com/cd/E23824_01/html/E21802/ips_intro.html https://timsfoster.wordpress.com/2011/11/09/ips-self-assembly-part-1-overlays/

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

p.s.: Интересно, не пытался ли кто портировать IPS на линукс.

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

Установка, установка... Может винды и умеет чуть быстрее ставить что-то сферическое в вакууме. Но когда она регулярно при ребуте говорит «иди ка ты в ж"пу на фигзнаетскока часов, пока я поставлю фигову уйму апдейтов» - убивает все эти плюсы на корню.

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

А вот умение загружать и ставить одновременно - это киллер-фича.

man portage

seed_stil ★★
()

Не знаю какими пакетными менеджерами Вы пользуетесь, но мой умеет и одновременно устанавливать несколько вещей сразу, и одновременно выкачивать с интернетов и что-то устанавливать.

ps: речь про portage.

blackst0ne ★★★★★
()
Последнее исправление: blackst0ne (всего исправлений: 1)
Ответ на: комментарий от DoctorSinus

zypper умел ставить и качать параллельно: эту фичу многие любили отключать, ибо при разрыве соединения с системой начинало твориться ололо и атата.

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

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

Зашёл в тред чтобы написать про генту. Не успел.

ekzotech ★★★★
()

А потом где-нибудь посередине инет сдохнет и у тебя будет частично обновлённая система. Круто!

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

А чем это отличается от пропавшего инета при последовательной установке

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

nu11 ★★★★★
()

был экспериментальный мод на yaourt, но выяснилась куча проблем с зависимыми преинстал/постинсталл-скриптами

stevejobs ★★★★☆
()

В грядущих выпусках Fedora'ы подобное новшество уже планируется к внедрению.

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

Или было два часа (pacman -S kde-meta gnome gnome-extra), а стало меньше часа

Интересно было бы посчитать выигрыш при прозрачной конпеляции source-пакетов. При конпеляции GCC хавает проц монопольно, или имеет смысл запускать несколько GCC разом?

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

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

скорее урожай травы дозрел. Один меряется временем запуска; при том, что нормальный десктоп должен ребутаться хорошо если пару раз в месяц. Другой предлагает сомнительной нужности фичу, которая даст мизерный прирост скорости, но при этом потребует кучу усилий на реализацию и резко повысит вероятность превратить систему в тыкву

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

Экономия на спичках никому не нужна. А вот надежность нужна.

надежно можно сделать и параллельно

когда надежность достигается только убогостью, это называется анацефалия

stevejobs ★★★★☆
()

Вот почему-то никто не захотел, чтобы сотня независимых пакетов ставилась одновременно.

Матчасть: http://ru.wikipedia.org/wiki/Закон_Амдала

Более того, в офтопике инсталл идет абсолютно независимо от остальных прог, засчет неэффективного использования дискового пространства. В линуксе тоже возможно - USE=«static qt-static everything-else-static». А теперь предлагаю рассказать о том, как в винде все удаляется одновременно, хорошая сказка для пятницы.

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

в рамках каждой компоненты можно выделить набор независимых файлов и, если они отсутствуют в файловой системе, то их тоже можно ставить параллельно

Зачем? Я еще понимаю, зачем нужно параллельное скачивание, но какой смысл распараллеливать сам процесс инсталляции? Он всё равно занимает секунды и является IO-bound по определению.

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

был экспериментальный мод на yaourt, но выяснилась куча проблем с зависимыми преинстал/постинсталл-скриптами

Вот что реально бы полезно было сделать, так это распараллелить в pacman скачивание и «загрузку файлов пакета» (ну или как там хрень называется, когда он после скачивания жирных пакетов может тупить пару минут).

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

При конпеляции GCC хавает проц монопольно, или имеет смысл запускать несколько GCC разом?

-j

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

надежно можно сделать и параллельно

когда надежность достигается только убогостью, это называется анацефалия

Я вижу, что в треде много знающих, что сделать МОЖНО, но что-то не видно никого, кто знает КАК.

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

Шел бы те сперва поинтересовался чем надежен MSI и winSxS, и какое удожество пакетная система дистрибутивов в настоящее время

в форточках в силу архитектурных фейлов нормального ПМ еще долго не будет, ввиду отсутствия самих пакетов и зависимостей. То, что евангелисты гордо именуют пакетами, по факту являются дистрибутивами со всеми зависимостями внутри.

nu11 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.