From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on sa.local.altlinux.org X-Spam-Level: X-Spam-Status: No, score=-3.4 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,RP_MATCHES_RCVD autolearn=ham autolearn_force=no version=3.4.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=imath.kiev.ua; s=hydra; t=1599523852; bh=i+jnMAy8ORJMHfBjmN0ba/FSX7RjIDv8PrNglwxDnXI=; h=Date:From:To:Subject; b=eHvhTVns5XBjpERNbcWqVYYaJu/+xygFrh+fkchA+ngnIZbiBoaDpY1nOXDmtR7hD s6wetOsnq58mNcPZfFqpPTkTAT+6HzqWriwXQjzHdC72i16fJDKuqBYeM9vWqBxwp3 6jBFMkSUc+Id689F9BBYSpOK24J12uN5ma8akUns= Date: Tue, 8 Sep 2020 03:10:51 +0300 From: Igor Vlasenko To: devel@lists.altlinux.org Message-ID: <20200908001051.GA17932@dad.imath.kiev.ua> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit User-Agent: Mutt/1.9.1 (2017-09-22) Subject: [devel] =?utf-8?b?0J7Qv9GC0LjQvNC40LfQuNGA0YPQtdC8IGhhc2hlciA=?= =?utf-8?b?0LTQu9GPINGA0LDQsdC+0YLRiyDRgSDRhNC40LrRgdC40YDQvtCy0LDQvdC9?= =?utf-8?b?0YvQvCDRgNC10L/QvtC30LjRgtC+0YDQuNC10LwuIEku?= X-BeenThere: devel@lists.altlinux.org X-Mailman-Version: 2.1.12 Precedence: list Reply-To: ALT Linux Team development discussions List-Id: ALT Linux Team development discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 08 Sep 2020 00:10:55 -0000 Archived-At: List-Archive: List-Post: Оптимизируем hasher для работы с фиксированным репозиторием. I. _______________________________________________________________ Господа, хочу поделиться своими оптимизациями для ускорения работы с hasher. Эти оптимизации были заскриптованы в autoimports, полтора года как в работе. Первая оптимизация специфическая, пригодится тем, кто одновременно работает с несколькими процессами hasher' для одного и того же репозитория. Вторая оптимизация пригодится практически всем майнтайнерам, идейно очень проста, но техническая реализация сложнее. К сожалению, со временем я начал забывать, как оно работает. За неделю занятий промышленной археологией удалось заново разобраться. Документирую, чтобы не пропало, в рассылке. По условиям задачи у нас фиксированный репозиторий. Это означает, что репозиторий не меняется без нашего ведома -- к примеру, локальное зеркало ежедневного релиза Сизифа. Первая оптимизация позволяет сэкономить дисковое пространство при работе с несколькими процессами hasher для одного и того же репозитория. Зачем это нужно? Самые первые версии autoimports были последовательными и работали на моей домашней машине. Это было очень долго, сборки шли сутками. Я перешел на параллельную сборку сначала на машине basalt в 4 потока, а потом на машине altair. На машине altair было 2cpu, 16ядер, 32 потока выполнения. Но возникла другая проблема - видит око, да зуб неймет. Сборка все еще была не так быстрой, как хотелось бы, так как не получалось загрузить все потоки выполнения. После 8, ближе к 16 параллельным hsh занимаемый объем tmpfs не вмещался в оперативку и скорость резко падала из-за своппинга (Сейчас на altair 64Gb, 2Gb/поток). И тут я заметил, что рабочие каталоги hasher'ов сами по себе настолько тяжелые, что сравнимы по размеру со сборочным chroot, а все тяжелые файлы из hasher/aptbox и hasher/cache - идентичны, ведь сборка осуществляется относительно одного и того же репозитория. Пришла идея хардлинковать эти общие тяжелые файлы в рабочих каталогах hasher/aptbox и hasher/cache. Соответствующий скрипт hsh-clone-workdir можно взять у меня из hsh-clone-workdir.git. Это позволило сэкономить в tmpfs в то время 640M на 1 копию hasher. При запуске в 24 потока это дало 16G экономии, все влезло в оперативку, и сборка полетела. Сейчас, так как и autoimports, и Сизиф подросли, это 723М экономии на 1 копию hasher при сборке для autoimports. На чистом Сизифе сейчас это 570M экономии tmpfs на 1 копию hasher. При работе с двумя hasher экономится 570M tmpfs, c 4 -- 1.7G tmpfs, c 8 -- 3.9G tmpfs, c 16 -- 8.4G tmpfs. Возможно, такой трюк пригодится и для arm. Уголок статистики. du -sh hasher 1,2G hasher du -sh hasher/* 482M hasher/aptbox (330M pure Sisyphus) 241M hasher/cache 491M hasher/chroot 241M+491M=723М 723М du -sh hasher/aptbox/var/lib/* 277M hasher/aptbox/var/lib/apt 6,0M hasher/aptbox/var/lib/rpm 200M hasher/aptbox/var/cache/apt ls -lh hasher/cache/chroot/chroot.cpio 235M -- I V