[devel] robots VS sisyphus

Alexey Tourbin at на altlinux.ru
Вт Дек 27 22:29:49 MSK 2011


On Sun, Dec 25, 2011 at 06:53:04PM +0400, Денис Смирнов wrote:
> On Sun, Dec 25, 2011 at 08:47:36AM +0400, Алексей Турбин wrote:
> AT> Apt масштабируется как O(n), где n - количество пакетов.
> 
> На какой операции?
> И n -- количество пакетов, а не зависимостей?

Амортизированное время разрешения зависимостей при установке пакетов.
Например, это операция "apt-cache unmet" или более сложная операция
"apt-shell <<<unmet", которая включает в себя пересборку кеша зависимостей.

> AT> Кроме того, константа масштабирования очень хорошая: на сервере с 24G RAM
> AT> все операции апта выполняются менее чем за секунду.  То есть нет такого,
> AT> что сожрали CPU user time и никакого ответа не дали - дескать подождите ещё.
> 
> Увы, не у всех пока есть ноутбуки с характеристиками "сервера с 24G RAM",
> например. А apt используется отнюдь не только при сборке пакетов.
> 
> А когда я при apt-cache вижу вот такое:
> 4.85s user 3.06s system 22% cpu 34.723 total
> 
> мне становится сразу понятно что apt недостаточно быстрый с точки зрения
> пользователя.

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

> apt-cache search должен выполняться за менее чем 1s на среднем железе.
> Среднее сейчас это что-то вроде 2G RAM, 2GHz core 2 duo.

Ты не понимешь, как работает apt.  "Apt-cache search" практически
построчно сканирует те файлы, которые он скачал.  Это никогда не будет
слишком быстро работать, by design.  А обработка зависимостей
происходит на порядок быстрее за счет создания промежуточной структуры
данных - /var/cache/apt/pkgcache.bin.


Подробная информация о списке рассылки Devel