createrepo의 속도를 높이려면 어떻게해야합니까? time createrepo

우리는 yum 리포지토리를 사용하여 소프트웨어를 프로덕션 인스턴스에 배포합니다. 불행하게도 createrepo는 병목 현상이 발생하고 있으며 저장소에는 469 개의 ​​패키지 만 있습니다.

$ 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

더 빨라지게하려면 어떻게해야합니까?



답변

--cachedir그의 대답에 dmourati에 의해 주어진 옵션을 사용하면 도움이 될 것입니다,하지만 당신은 사용해야 --update한 번에 모든 469 개 패키지를 교체하지 특히,.

       --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.

또한이 방식으로 배포하는 것이 시간에 민감하고 --update도움이되지 않는 경우이 패키지에 대해 별도의 저장소를 만드는 것이 좋습니다.


답변

createrepo 맨 페이지에서 cachedir에 대한 옵션이 표시됩니다.

-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.

나는 거기에서 시작할 것이다.

그 속도가 충분하지 않다면 SSD 또는 tmpfs를 살펴보십시오 .


답변

멀티 코어 CPU에 –workers를 사용해 보셨습니까? 일반적으로 –workers 4를 사용하여 4 스레드의 createrepo를 생성합니다.