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


8

우리는 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

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


createrepo 시간이 중요한 이유는 무엇입니까?
ewwhite

1
개발자들은 코드가 공개되기를 기다리고 있습니다. 우리는 "rsync to live boxes"모델에서 rpm 모델로 갔고 이제는 몇 초가 걸리는 데 몇 분이 걸린다고 불평하고 있습니다. 나는 그들의 곤경에 다소 동정심입니다. 그러나
약간만

설명 주셔서 감사합니다. 이것이 일회성 지연인지 여부를 알 수 없었습니다.
ewwhite

최적화가 얼마나 많은 시간을 절약했는지 알 수 있도록 "최적화 후"결과를 게시하십시오 :)
Joshua Miller

"--cachedir = cache --update --workers 4"옵션을 사용하면 시간이 50 초에서 15 초로 단축되어 큰 승리를 거두었습니다! 매우 유용한 제안에 감사드립니다.
jsd

답변:


9

--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도움이되지 않는 경우이 패키지에 대해 별도의 저장소를 만드는 것이 좋습니다.


6

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를 살펴보십시오 .


4

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


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.