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 2013年

1
開発者はコードが公開されるのを待っています。「rsyncからlive box」モデルからrpmモデルに移行したところ、以前は数秒かかっていたところが数分かかると不満を漏らしています。私は彼らの窮状にいくらか同情しています。しかし、多少だけ:)
jsd 2013年

説明ありがとう。これが1回限りの遅延かどうかはわかりませんでした。
ewwhite 2013年

「最適化後」の結果を投稿して、最適化によって節約された時間を確認してください:)
Joshua Miller

オプション「--cachedir = cache --update --workers 4」を使用すると、時間が50秒から15秒に短縮され、大成功を収めました。皆さん、非常に役立つ提案をありがとう!
jsd 2013年

回答:


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.

そこから始めます。

それでもcreaterepoの速度が十分でない場合は、SSDまたはtmpfsを調べます。


4

マルチコアCPUの--workersを利用してみましたか?通常、私は--workers 4を使用して4つのスレッドのcreaterepoを生成します


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.