O que posso fazer para acelerar o createrepo?


8

Estamos usando um repositório yum para distribuir nosso software para nossas instâncias de produção. Infelizmente, o createrepo está se tornando um gargalo e só temos 469 pacotes no repositório.

$ time createrepo /opt/tm-yum-repo
Spawning worker 0 with 469 pkgs
Workers Finished
Gathering worker results

Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete

real    0m43.188s
user    0m37.798s
sys 0m1.296s

O que posso fazer para torná-lo mais rápido?


Por que o tempo do createrepo é importante?
ewwhite

1
Os desenvolvedores estão aguardando o código entrar no ar. Passamos de um modelo "rsync para viver caixas" para um modelo de rpm e eles estão reclamando que agora leva alguns minutos onde costumava levar alguns segundos. Sou um pouco solidário com a situação deles. Mas só um pouco :)
JSD

Obrigada pelo esclarecimento. Eu não sabia dizer se isso foi um atraso único ou não.
precisa saber é o seguinte

Por favor envie as suas "após otimização" resultados para que possamos ver quanto tempo as otimizações salvos :)
Joshua Miller

Usar as opções "--cachedir = cache --update --workers 4" reduziu o tempo de 50 segundos para 15 segundos, uma vitória enorme! Obrigado pelas sugestões muito úteis, pessoal!
JSD

Respostas:


9

A --cachediropção dada por dmourati em sua resposta o ajudará, mas você também deve usá-lo --update, especialmente se você não estiver substituindo todos os 469 pacotes de uma só vez.

       --update
              If metadata already exists  in  the  outputdir  and  an  rpm  is
              unchanged  (based on file size and mtime) since the metadata was
              generated, reuse the existing metadata rather than recalculating
              it.  In  the  case  of a large repository with only a few new or
              modified rpms this can significantly reduce I/O  and  processing
              time.

Além disso, considere criar um repositório separado para este pacote se a implantação dessa maneira for realmente sensível ao tempo e --updatenão ajudar o suficiente.


6

Na página de manual do createrepo, você verá uma opção para um cache.

-c --cachedir <path>
              Specify a directory to use as a cachedir. This allows createrepo
              to create a cache of checksums of packages in the repository. In
              consecutive runs of createrepo over the same repository of files
              that  do  not  have  a  complete change out of all packages this
              decreases the processing time dramatically.

Eu começaria por aí.

Se isso não acelera o processo de criação, você deve olhar para SSD ou tmpfs .


4

Você já tentou usar --workers para CPU multi-core? Normalmente eu uso --workers 4 para gerar 4 threads de createrepo


2

Use createrepo_c , implementação C do createrepo


1
Bem-vindo ao SE. adicione algumas informações ou links para fontes para tornar sua resposta mais útil.
rubo77
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.