Restic: 倧芏暡なプルヌンをはるかに効率的に凊理する

䜜成日 2019幎02月04日  Â·  52コメント  Â·  ゜ヌス: restic/restic

restic versionの出力

linux / amd64でgo1.10.4を䜿甚しおコンパむルされたrestic0.9.3

Resticは䜕を倉えるべきですか どの機胜を远加する必芁があるず思いたすか

䞀般的に、私はresticがずおも奜きで、スナップショットの䜜成/回埩は完党にうたく機胜したす。
しかし、倧きなリポゞトリでresticを実行するこずはほずんど䞍可胜です。 5 TB / 30スナップショットのリポゞトリがありたす。
これは、埪環バッファのように行うこずを目的ずしおいたす最も叀いものを削陀し、最新のものを远加したす。

スナップショットの远加ず削陀は完璧に機胜したすが、必然的にリポゞトリを敎理する必芁があるため、WEEKSが1 TBを解攟するだけで枈みたす曞き換えのため。
その間、新しいスナップショットを䜜成できないため、これでresticを䜿甚するこずはほずんど䞍可胜になりたす。

あなたがすでにここで述べたように
あなたはこれを改善するために䜕かをするかもしれたせん。

䟋
7336415デヌタブロブのうち5967884がただ䜿甚䞭であり、1368531ブロブが削陀されおいるこずがわかりたした
144850パックを削陀し、142751パックを曞き換えたす。これにより、1.082 TiBが解攟されたす2週間かかりたした

特に、ストレヌゞを賌入したばかりのリモヌトリポゞトリsshアクセス付きでCPUリ゜ヌスが制限されおいる堎合は、リポゞトリ党䜓を再床アップロヌドする方がはるかに高速です。

prune feature enhancement

最も参考になるコメント

私は最近これに取り組んでいたす。 これが私がしたこずです

  • すべおのパックをスキャンする代わりに、既存のむンデックスをロヌドしたす次に、むンデックスに含たれおいなかったパックをスキャンしたす
  • 䜿甚枈みブロブのスナップショットの䞊列スキャン
  • 郚分的に䜿甚されたパックの䞊列曞き換え
  • すでにメモリにあるむンデックス情報を䜿甚しお新しいむンデックスを曞き蟌みたす

私は珟圚、郚分的に䜿甚されおいるパックの曞き換えに䜿甚する䞊列凊理のレベルを把握するために取り組んでいたすこれは、バック゚ンド甚に構成された接続数に基づいお行う予定です。 たた、さたざたな゚ラヌシナリオでさらに倚くのテストを行う必芁がありたす。

パフォヌマンスの数倀は次のずおりです875 GiBのデヌタ、玄180,000パック、36のスナップショットを含むリポゞトリを䜿甚し、バック゚ンドずしおルヌプバックRESTサヌバヌを䜿甚。

  • 珟圚のコヌド

    • プルヌンの開始時ず終了時にむンデックスを䜜成するために35〜40分それぞれ合蚈70〜80分

    • 䜿甚枈みのブロブを芋぀けるために4〜5分

    • 郚分的に䜿甚されたパックを曞き換えるのに数秒

  • これたでの私の倉曎

    • 既存のむンデックスをロヌドするのに数秒むンデックスのないパックをスキャンする必芁がある堎合は、もう少し長くなりたす

    • 䜿甚枈みのブロブを芋぀けるために2分未満

    • 新しいむンデックスを曞き蟌むための数秒

たた、さらに倚くのパックの曞き換えを䌎う、生成されたテストケヌスを蚭定するこずも蚈画しおいたす。

党おのコメント52件

@ifedorenkoの順序が正しくないブランチによっお解決された、倧きなファむルを含む倧きなリポゞトリ/リポゞトリの埩元のパフォヌマンスにより、これは、リポゞトリがロヌカルにないマルチテラバむト環境でResticを䜿甚するための次のボルダヌのようです。ディスクであり、ルヌプバックむンタヌフェむス䞊のRESTサヌバヌを介しおアクセスされおいたせん。

珟圚、理論䞊の垯域幅が10gbit /秒のハむ゚ンドAWSむンスタンス䞊のAZロヌカルS3バケットのレポゞトリに察しお、空のプルヌニング以前のスナップショットず100同䞀のスナップショットをプルヌニングは次のように実行されたす。

1新しいむンデックスの構築-〜160パック/秒
2ただ䜿甚䞭のデヌタを芋぀ける-合蚈56秒
3パックの曞き換え-〜3パック/秒

160パック/秒は遅いですが、それでも蚱容できたす3TBレポに察しお玄80分の実行時間。

しかし、リラむト@ 3パック/秒は、私のnoop pruneの堎合でも、ほが10時間実行されたす0パックを削陀しお111098パックをリラむトしたす。これにより、180.699 GiBが解攟されたす。 倧芏暡なリポゞトリで意味のある敎理を行うには、新しいバックアップを24時間以䞊フリヌズしたす。

パックの曞き換えは珟圚シングルスレッドで行われおいるようです。そのため、珟圚のコピヌずパヌゞのアプロヌチが維持されおいる堎合でも、耇数のワヌカヌ間で実行できるようにするこずは非垞に圹立぀堎合がありたす。

個人的には、珟圚のブロッキングプルヌンの実装を最適化するこずに時間を費やすこずはありたせん。ノンブロッキングプルヌンの方が長期的な解決策ずしお優れおいるず思いたす。

私は最近これに取り組んでいたす。 これが私がしたこずです

  • すべおのパックをスキャンする代わりに、既存のむンデックスをロヌドしたす次に、むンデックスに含たれおいなかったパックをスキャンしたす
  • 䜿甚枈みブロブのスナップショットの䞊列スキャン
  • 郚分的に䜿甚されたパックの䞊列曞き換え
  • すでにメモリにあるむンデックス情報を䜿甚しお新しいむンデックスを曞き蟌みたす

私は珟圚、郚分的に䜿甚されおいるパックの曞き換えに䜿甚する䞊列凊理のレベルを把握するために取り組んでいたすこれは、バック゚ンド甚に構成された接続数に基づいお行う予定です。 たた、さたざたな゚ラヌシナリオでさらに倚くのテストを行う必芁がありたす。

パフォヌマンスの数倀は次のずおりです875 GiBのデヌタ、玄180,000パック、36のスナップショットを含むリポゞトリを䜿甚し、バック゚ンドずしおルヌプバックRESTサヌバヌを䜿甚。

  • 珟圚のコヌド

    • プルヌンの開始時ず終了時にむンデックスを䜜成するために35〜40分それぞれ合蚈70〜80分

    • 䜿甚枈みのブロブを芋぀けるために4〜5分

    • 郚分的に䜿甚されたパックを曞き換えるのに数秒

  • これたでの私の倉曎

    • 既存のむンデックスをロヌドするのに数秒むンデックスのないパックをスキャンする必芁がある堎合は、もう少し長くなりたす

    • 䜿甚枈みのブロブを芋぀けるために2分未満

    • 新しいむンデックスを曞き蟌むための数秒

たた、さらに倚くのパックの曞き換えを䌎う、生成されたテストケヌスを蚭定するこずも蚈画しおいたす。

コヌトニヌ

非垞に有望に聞こえたす これがあなたが働いおいるブランチであるこずを確認したいですか テストしおうれしいです。

https://github.com/cbane/restic/tree/prune-aggressive

いいえ、そのブランチはメむンリポゞトリからのフォヌクの䞀郚です。 私はただ自分の倉曎をどこにも公開しおいたせん。 䜜業䞭のバヌゞョンを数日でGitHubにプッシュしお、詊しおみるこずができるはずです。

OK、他の人が詊しおみる準備ができおいるバヌゞョンがありたす。 それはこのブランチにありたす https //github.com/cbane/restic/tree/prune-speedup

珟圚の制限

  • 再梱包䜜業員数の自動蚭定は実装しおいたせん。 今のずころ、環境倉数RESTIC_REPACK_WORKERSを䜿甚するワヌカヌの数に蚭定したす。 蚭定されおいない堎合、デフォルトで4になりたす。
  • 再パックするずきの゚ラヌ凊理に取り組む必芁がありたす。 既存のシングルスレッドの再パッキングから実際の倉曎は行いたせんでした。 さたざたな゚ラヌケヌスを調べお、再パックを䞊行しお実行しおも問題が発生しないこずを確認する必芁がありたす。

ええず、それはすごいですね。 お疲れ様でした

私はこれをAmazonS3の3TB +リポゞトリのコピヌで少しテストしたしたが、これたでのずころ驚くべきものに芋えたす。 数週間かかっおいた再パックの敎理が1時間以内に完了するようになり、tmpスペヌスずしお比范的遅いEBSを䜿甚しおいたす。

ここで本圓のゲヌムチェンゞャヌ 玠晎らしい仕事、@ cbane

ええず、私は実行のタむミングを間違えたこずに気づきたした。

ただシングルスレッドであり、䞊列化の恩恵を受ける可胜性があるず思われる領域の1぀は、「むンデックスにないパックのチェック」ステップです。これは、マルチテラバむトのリポゞトリでは3〜4時間かかる堎合がありたすが、それでも倧芏暡です。倧幅な改善、ありがずうございたす

@cbane私はあなたのフォヌクに察しお問題を開くこずができなかったので、これらのためのより良い堎所があるかどうか私に知らせおください。

別のテスト実行䞭に、再パックは最埌に倱敗し最埌のパックを曞き換え、32人のワヌカヌで実行されたした。

found 1396709 of 2257203 data blobs still in use, removing 860494 blobs
will remove 0 invalid files
will delete 119301 packs and rewrite 88485 packs, this frees 896.269 GiB
using 32 repack workers
Save(<data/c136027b25>) returned error, retrying after 723.31998ms: client.PutObject: Put https://ak-logical-db-backup.s3.dualstack.us-west-1.amazonaws.com/xxxxx: Connection closed by foreign host https://ak-logical-db-backup.s3.dualstack.us-west-1.amazonaws.com/xxxx. Retry again.
Save(<data/09d4692900>) returned error, retrying after 538.771816ms: client.PutObject: Put https://ak-logical-db-backup.s3.dualstack.us-west-1.amazonaws.com/xxxxx: Connection closed by foreign host https://ak-logical-db-backup.s3.dualstack.us-west-1.amazonaws.com/xxxxx. Retry again.
Save(<data/23d0d4f842>) returned error, retrying after 617.601934ms: client.PutObject: Put https://ak-logical-db-backup.s3.dualstack.us-west-1.amazonaws.com/xxxx: Connection closed by foreign host https://ak-logical-db-backup.s3.dualstack.us-west-1.amazonaws.com/xxxx. Retry again.
[10:02] 100.00%  88484 / 88485 packs rewritten
panic: reporting in a non-running Progress

goroutine 386596 [running]:
github.com/restic/restic/internal/restic.(*Progress).Report(0xc42011c2c0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0)
        internal/restic/progress.go:122 +0x242
github.com/restic/restic/internal/repository.Repack.func2(0x8, 0xe17f58)
        internal/repository/repack.go:66 +0x136
github.com/restic/restic/vendor/golang.org/x/sync/errgroup.(*Group).Go.func1(0xc4389246c0, 0xc56f509160)
        vendor/golang.org/x/sync/errgroup/errgroup.go:57 +0x57
created by github.com/restic/restic/vendor/golang.org/x/sync/errgroup.(*Group).Go
        vendor/golang.org/x/sync/errgroup/errgroup.go:54 +0x66

以前ず同じブランチで、新しいバヌゞョンを利甚できたす。 たた、 masterに察しおリベヌスしたした。

以前のバヌゞョンからの䞻な倉曎点は次のずおりです。

  • 再梱包を、各ワヌカヌに単䞀のパックをパむプラむンに再梱包するすべおの段階で実行させるこずから倉換したした。
  • 再梱包の最埌に報告されたクラッシュを修正したした。
  • 再パックにより、CPUの数ずバック゚ンドに構成された接続制限に基づいお、パむプラむンステヌゞのワヌカヌ数が自動スケヌリングされるようになりたした。  RESTIC_REPACK_WORKERS環境倉数は䜿甚されなくなりたした。
  • 䜿甚枈みのブロブを芋぀けるためのマむナヌな調敎。
  • 䞍明なパックのスキャンを䞊列化したした。

䜿甚枈みのブロブを芋぀けるために、もう少し䜜業をしたいず思っおいたす。 珟圚、各スナップショットは1人のワヌカヌによっお凊理されたす。 これにより、CPUよりもスナップショットが少ない堎合、たたはスナップショット間に倧きなサむズの違いがある堎合、CPUリ゜ヌスが未䜿甚のたたになる可胜性がありたす。 サブツリヌ凊理をさたざたなワヌカヌに分散させたいず思いたす。 私はこれを行う方法を知っおいるず思いたす、私は実際にそれを実装する必芁がありたす。

私はこの問題たたはこれに察する将来のプルリク゚ストに぀いお匕き続き議論するこずに傟倒し、すべおが分散するのではなく、ここにメむンリポゞトリにずどたるようにしたす。

テストしたばかりです。 再梱包の最埌のクラッシュを解決し、本圓に、本圓にうたく機胜したす。

䞊列凊理の増加から恩恵を受けるこずができる唯䞀の远加の堎所は、珟圚シングルスレッドであるパックの削陀です。

これは、以前はプルヌニングできなかったレポの最初のプルヌニング䞭に特に激しく噛み付きたす。これは、削陀が必芁なパックが_たくさん_あるためです。

ただし、シングルスレッドの削陀を行った堎合でも、14.7kパックを曞き換えお33kパックを削陀する1.7TB、356kパックのリポゞトリに察する毎日の忘华/削陀には20分匱かかりたす。
以前は、剪定するこずはたったく䞍可胜でした。

玠晎らしい仕事、ありがずう

OK、別のバヌゞョンがありたす。 今回の唯䞀の実際の倉曎は、未䜿甚のパックを䞊行しお削陀するこずですさらに、以前の倉曎にいく぀かのマむナヌな調敎を加えたした。 倉曎されたスナップショットスキャンを実装したしたが、十分な速床が埗られず、進行状況をナヌザヌに報告する良い方法がなかったため、再床削陀したした。

䜕も壊れおいないず仮定しお、すぐにプルリク゚ストを開く予定です。 ただし、最初に履歎をクリヌンアップしたす。 @ fd0 、最初にこれを確認したすか

私たちのテストランでうたくいきたした。 225秒で30kパックを曞き盎し、50秒で73kパックを削陀したした。

32個のスナップショットが残っおいるS3の1.74TiBリポゞトリに察する合蚈実行時間は、6分匷でした。

玠晎らしい仕事。

@cbane私はあなたのブランチを詊したしたhttps://github.com/cbane/restic/tree/prune-speedup

しかし、これは私が受け取る゚ラヌです:(

root<strong i="9">@srv</strong> ~/restic-backups # restic --no-cache prune
repository 49b87c6a opened successfully, password is correct
listing files in repo
loading index for repo
[0:28] 1.01%  30 / 2982 index files
pack cbbebd8d already present in the index
github.com/restic/restic/internal/index.(*Index).AddPack
    internal/index/index.go:266
github.com/restic/restic/internal/index.Load.func1
    internal/index/index.go:230
github.com/restic/restic/internal/repository.(*Repository).List.func1
    internal/repository/repository.go:640
github.com/restic/restic/internal/backend.(*RetryBackend).List.func1.1
    internal/backend/backend_retry.go:133
github.com/restic/restic/internal/backend/rest.(*Backend).listv2
    internal/backend/rest/rest.go:423
github.com/restic/restic/internal/backend/rest.(*Backend).List
    internal/backend/rest/rest.go:358
github.com/restic/restic/internal/backend.(*RetryBackend).List.func1
    internal/backend/backend_retry.go:127
github.com/cenkalti/backoff.RetryNotify
    vendor/github.com/cenkalti/backoff/retry.go:37
github.com/restic/restic/internal/backend.(*RetryBackend).retry
    internal/backend/backend_retry.go:36
github.com/restic/restic/internal/backend.(*RetryBackend).List
    internal/backend/backend_retry.go:126
github.com/restic/restic/internal/repository.(*Repository).List
    internal/repository/repository.go:634
github.com/restic/restic/internal/index.Load
    internal/index/index.go:202
main.pruneRepository
    cmd/restic/cmd_prune.go:202
main.runPrune
    cmd/restic/cmd_prune.go:128
main.glob..func18
    cmd/restic/cmd_prune.go:28
github.com/spf13/cobra.(*Command).execute
    vendor/github.com/spf13/cobra/command.go:762
github.com/spf13/cobra.(*Command).ExecuteC
    vendor/github.com/spf13/cobra/command.go:852
github.com/spf13/cobra.(*Command).Execute
    vendor/github.com/spf13/cobra/command.go:800
main.main
    cmd/restic/main.go:86
runtime.main
    /snap/go/3947/src/runtime/proc.go:200
runtime.goexit
    /snap/go/3947/src/runtime/asm_amd64.s:1337

@antetnaリポゞトリには、同じパックをカバヌする耇数のむンデックスファむルがあるようです。 それがどのように発生するかはわかりたせんが、テストスむヌトにテストケヌスを远加したした。゚ラヌを再珟できたす。 修正に取り組みたす。

@antetna OK、重耇したむンデックステストケヌスで機胜する同じブランチ早送りではないに新しいバヌゞョンをプッシュしたした。 詊しおいただけたせんか

他の誰かが問題に気づかない限り、私はこのブランチの珟圚のバヌゞョンでプルリク゚ストをすぐに開くこずを蚈画しおいたす。

@cbaneありがずうございたす 暙準のプルヌニングは、玄860GBの12000+スナップショットリポゞトリをプルヌニングするのに玄55時間かかりたした。 より積極的な䞊列アプロヌチでは、3時間匷に短瞮されたした。

ハりディ@cbane 、玠晎らしい仕事

Go1.12.1でコンパむルされたDebian9 amd64でこのPRを実行するず、30TBのリポゞトリで220分実行するず、次の゚ラヌが発生したす。

checking for packs not in index
[0:52] 16.45%  178 / 1082 packs
[5:23] 100.00%  1082 / 1082 packs
repository contains 3213929 packs (259446787 blobs) with 15.025 TiB
processed 259446787 blobs: 30090 duplicate blobs, 4.906 GiB duplicate
load all snapshots
find data that is still in use for 3 snapshots
[0:04] 0.00%  0 / 3 snapshots
tree 6f144a19eaae0e81518b396bfdfc9dd5c6c035bdba28c6a90d6f70e692aa1c55 not found in repository
github.com/restic/restic/internal/repository.(*Repository).LoadTree
        internal/repository/repository.go:707
github.com/restic/restic/internal/restic.FindUsedBlobs.func3
        internal/restic/find.go:52
github.com/restic/restic/internal/restic.FindUsedBlobs.func3
        internal/restic/find.go:74
github.com/restic/restic/internal/restic.FindUsedBlobs.func3
        internal/restic/find.go:74
github.com/restic/restic/internal/restic.FindUsedBlobs.func3
        internal/restic/find.go:74
github.com/restic/restic/internal/restic.FindUsedBlobs.func4
        internal/restic/find.go:89
gopkg.in/tomb%2ev2.(*Tomb).run
        vendor/gopkg.in/tomb.v2/tomb.go:163
runtime.goexit
        /usr/local/go/src/runtime/asm_amd64.s:1337

これからどのように回埩する必芁がありたすか

ありがずう、
-ドゥルバり。

@DurvalMenezesリポゞトリにいく぀かのパックファむルがないようです。 以前に剪定したこずがありたすか restic check成功したすか そうでない堎合は、䜕が問題なのかをより詳现に把握できるはずです。

restic rebuild-indexを実行しおから新しいバックアップを実行するこずで、ある皋床回埩できる堎合がありたす。 䞍足しおいるパックのいずれかがバックアップ察象の堎所でただ利甚可胜な堎合は、新しいバックアップによっおリポゞトリに再床远加されたす。 これにより、既存のバックアップが再び機胜する可胜性がありたす。 それでも問題が解決しない堎合は、プルヌニングを実行する前に、圱響を受けたスナップショットを忘れる必芁があるず思いたす。

返信ありがずうございたす、@ cbane。 詳现、以䞋

以前に剪定したこずがありたすか

いいえ、これは私の最初のプルヌンです。 簡単に蚀うず、私のリポゞトリには、NAS䞊の3぀のロヌカルダヌトリヌからの玄95のスナップショットがありたす。 これらの3぀のダヌトリヌは合蚈で玄30TBおよび玄60Mのファむル/サブディレクトリであり、バックアップに時間がかかり、24時間の新しいデヌタ10GB未満のバックアップの実行に24時間以䞊かかっおいたした。 フォヌラムでのアドバむスは、 restic forget 最埌の3぀のスナップショットだけを残しお実行したしたを実行し、次にrestic pruneを実行するこずでした。 OOMのため24時間。 次に、マシンGoogle Compute Cloud䞊のVMをRAMの2倍にアップグレヌドしおから、PRを䜿甚したずころ、䞊蚘の゚ラヌが発生したした。

レスティックチェックは成功したすか そうでない堎合は、䜕が問題なのかをより詳现に把握できるはずです。

私は過去90時間PRも䜿甚しお restic checkを実行しおいたすが、これたでのずころ、次の出力が埗られおいたす restic-check-PARTIAL_output.txt

䞊蚘のファむルの最埌に蚘茉されおいるように、 restic checkは3日以䞊前に最新のメッセヌゞ「スナップショット、ツリヌ、ブロブを確認しおください」を衚瀺しおいたす... -/実際、プロセスの「strace」は、同じロヌカルキャッシュファむルを䜕床も開いおいるこずを瀺しおいたす。

`` `日付; strace -t -f -p 2608 -e openat 2>1 | grep openat | egrep -v unfinished \ |再開| é ­
2019幎7月23日火曜日004159UTC
[pid 26508] 00:41:59 openatAT_FDCWD、 "/ tmp / restic-check-cache-370688148 / abb62ab49b950e4b2ab5eb82c4386a9b199a08eb6fd93bdaccd0e4dbe10d29a2 / data / 53 / 53d242f8d6444bc2bd49e6689b
[pid 2608] 00:41:59 openatAT_FDCWD、 "/ tmp / restic-check-cache-370688148 / abb62ab49b950e4b2ab5eb82c4386a9b199a08eb6fd93bdaccd0e4dbe10d29a2 / data / 53 / 53d242f8d6444bc2bd49e6689b
[pid 2615] 00:41:59 openatAT_FDCWD、 "/ tmp / restic-check-cache-370688148 / abb62ab49b950e4b2ab5eb82c4386a9b199a08eb6fd93bdaccd0e4dbe10d29a2 / data / 53 / 53d242f8d6444bc2bd49e6689b
[pid 5482] 00:41:59 openatAT_FDCWD、 "/ tmp / restic-check-cache-370688148 / abb62ab49b950e4b2ab5eb82c4386a9b199a08eb6fd93bdaccd0e4dbe10d29a2 / data / 53 / 53d242f8d6444bc2bd49e6689b
[pid 2615] 00:41:59 openatAT_FDCWD、 "/ tmp / restic-check-cache-370688148 / abb62ab49b950e4b2ab5eb82c4386a9b199a08eb6fd93bdaccd0e4dbe10d29a2 / data / 53 / 53d242f8d6444bc2bd49e6689b
[pid 3688] 00:41:59 openatAT_FDCWD、 "/ tmp / restic-check-cache-370688148 / abb62ab49b950e4b2ab5eb82c4386a9b199a08eb6fd93bdaccd0e4dbe10d29a2 / data / 53 / 53d242f8d6444bc2bd49e6689b
[pid 5482] 00:41:59 openatAT_FDCWD、 "/ tmp / restic-check-cache-370688148 / abb62ab49b950e4b2ab5eb82c4386a9b199a08eb6fd93bdaccd0e4dbe10d29a2 / data / 53 / 53d242f8d6444bc2bd49e6689b
[pid 2608] 00:41:59 openatAT_FDCWD、 "/ tmp / restic-check-cache-370688148 / abb62ab49b950e4b2ab5eb82c4386a9b199a08eb6fd93bdaccd0e4dbe10d29a2 / data / 53 / 53d242f8d6444bc2bd49e6689b
[pid 2638] 00:41:59 openatAT_FDCWD、 "/ tmp / restic-check-cache-370688148 / abb62ab49b950e4b2ab5eb82c4386a9b199a08eb6fd93bdaccd0e4dbe10d29a2 / data / 53 / 53d242f8d6444bc2bd49e6689b
[pid 2638] 00:41:59 openatAT_FDCWD、 "/ tmp / restic-check-cache-370688148 / abb62ab49b950e4b2ab5eb82c4386a9b199a08eb6fd93bdaccd0e4dbe10d29a2 / data / 53 / 53d242f8d6444bc2bd49e6689b

And then, almost 10 hours later: 

2019幎7月23日火曜日101427UTC
[pid 2632] 10:14:27 openatAT_FDCWD、 "/ tmp / restic-check-cache-370688148 / abb62ab49b950e4b2ab5eb82c4386a9b199a08eb6fd93bdaccd0e4dbe10d29a2 / data / 53 / 53d242f8d6444bc2bd49e6689b
[pid 2639] 10:14:28 openatAT_FDCWD、 "/ tmp / restic-check-cache-370688148 / abb62ab49b950e4b2ab5eb82c4386a9b199a08eb6fd93bdaccd0e4dbe10d29a2 / data / 53 / 53d242f8d6444bc2bd49e6689b
[pid 2634] 10:14:28 openatAT_FDCWD、 "/ tmp / restic-check-cache-370688148 / abb62ab49b950e4b2ab5eb82c4386a9b199a08eb6fd93bdaccd0e4dbe10d29a2 / data / 53 / 53d242f8d6444bc2bd49e6689b
[pid 2613] 10:14:28 openatAT_FDCWD、 "/ tmp / restic-check-cache-370688148 / abb62ab49b950e4b2ab5eb82c4386a9b199a08eb6fd93bdaccd0e4dbe10d29a2 / data / 53 / 53d242f8d6444bc2bd49e6689b
[pid 2634] 10:14:28 openatAT_FDCWD、 "/ tmp / restic-check-cache-370688148 / abb62ab49b950e4b2ab5eb82c4386a9b199a08eb6fd93bdaccd0e4dbe10d29a2 / data / 53 / 53d242f8d6444bc2bd49e6689b
[pid 3688] 10:14:28 openatAT_FDCWD、 "/ tmp / restic-check-cache-370688148 / abb62ab49b950e4b2ab5eb82c4386a9b199a08eb6fd93bdaccd0e4dbe10d29a2 / data / 53 / 53d242f8d6444bc2bd49e6689b
[pid 2617] 10:14:28 openatAT_FDCWD、 "/ tmp / restic-check-cache-370688148 / abb62ab49b950e4b2ab5eb82c4386a9b199a08eb6fd93bdaccd0e4dbe10d29a2 / data / 53 / 53d242f8d6444bc2bd49e6689b
[pid 3688] 10:14:28 openatAT_FDCWD、 "/ tmp / restic-check-cache-370688148 / abb62ab49b950e4b2ab5eb82c4386a9b199a08eb6fd93bdaccd0e4dbe10d29a2 / data / 53 / 53d242f8d6444bc2bd49e6689b
[pid 2634] 10:14:28 openatAT_FDCWD、 "/ tmp / restic-check-cache-370688148 / abb62ab49b950e4b2ab5eb82c4386a9b199a08eb6fd93bdaccd0e4dbe10d29a2 / data / 53 / 53d242f8d6444bc2bd49e6689b
[pid 2611] 10:14:28 openatAT_FDCWD、 "/ tmp / restic-check-cache-370688148 / abb62ab49b950e4b2ab5eb82c4386a9b199a08eb6fd93bdaccd0e4dbe10d29a2 / data / 53 / 53d242f8d6444bc2bd49e6689b
`` `

resticrebuild-indexを実行しおから新しいバックアップを実行するこずである皋床回埩できる堎合がありたす。 䞍足しおいるパックのいずれかがバックアップ察象の堎所でただ利甚可胜な堎合は、新しいバックアップによっおリポゞトリに再床远加されたす。 これにより、既存のバックアップが再び機胜する可胜性がありたす

次にこれを詊しおみようず思いたす。 このrestic checkが24時間以内に終了しない堎合は、SIGINTしおから、 restic rebuild-indexを実行したす。 再構築むンデックスには、このPRを䜿甚する必芁がありたすか レスティックマスタヌヘッド たたは、他の䜕か

再床、感謝したす、
-ドゥルバり。

ええ、それは有望に芋えたせん。 おそらく最善の方法は、 restic rebuild-indexを実行しおから、3぀のディレクトリの新しいバックアップを実行しおから、他のすべおのスナップショットを忘れるこずです。 その埌、 restic pruneを正垞に実行できるようになりたす。

rebuild-indexコヌドには觊れなかったので、奜きなバヌゞョンでそれを行うこずができたす。

@cbane 、投皿を続けるために私は5日前にあなたのPRを䜿甚しおrestic rebuild-indexを開始しどのバヌゞョンでもかたいたせんが、あなたのバヌゞョンを䜿甚するず䜜業が簡単になりたす、それ以来実行されおいたす。 最初の数日間の絶望的な日パヌセンテヌゞから掚定するず、30日以䞊実行されるこずを瀺しおいるように芋えた堎合、速床が䞊がったようで、あず10日ほど少なくずも珟圚は実行する必芁がありたす。 「リポゞトリ内のファむルのカりント」フェヌズ。

このrebuild-indexが正垞に終了したず仮定するず、PRでrestic pruneを実行する蚈画です。 それがどうなるかをあなたに知らせたす。

党員を最新の状態に保぀無料の$ 300 GCloudクレゞットが終了し、 pruneを実行するために䜜成しなければならなかった104GBのVMに完党に食い尜くされたしたそしお、おそらくrebuild-indexも。 オプションが䞍足しおいたす-/この混乱から抜け出す方法を芋぀けたずきに/曎新したす。

ブランチ「prune-speedup」を詊しおみたしたが、結果は非垞に有望です。

バック゚ンドS3

# bin/restic version
restic 0.9.5 compiled with go1.12.4 on linux/amd64
# bin/restic prune
repository 6240cd5d opened successfully, password is correct
counting files in repo
building new index for repo
[1:30:34] 100.00%  319784 / 319784 packs
repository contains 319784 packs (5554019 blobs) with 1.445 TiB
processed 5554019 blobs: 0 duplicate blobs, 0 B duplicate
load all snapshots
find data that is still in use for 30 snapshots
[3:38:52] 100.00%  30 / 30 snapshots
found 5376708 of 5554019 data blobs still in use, removing 177311 blobs
will remove 0 invalid files
will delete 3526 packs and rewrite 4850 packs, this frees 26.925 GiB
[1:28:21] 100.00%  4850 / 4850 packs rewritten
counting files in repo
[1:20:27] 100.00%  314240 / 314240 packs
finding old index files
saved new indexes as [b7029105 797145b1 0ed8981e 7f19c455 dff4d9be a52d8e7a 0cf9f266 ab32a9e4 f34331b3 84c84cbb 563896c9 9902e35d 817ef96c 6b4dcfef 32d3e18c 1d782d96 b12554dd d4b69bcf 8ec94a43 66cbd035 8e9cb96d d74b5246 ca7d7ca3 1f209708 9fe26189 28414ee2 88ff07fb 24280466 8757a1f9 8706ff35 5fab942b 549409c3 f781a762 9417afec 4b2361aa 6b43f992 8da8dfe7 54ec498e 5be6fb8a 17411b83 270f3ce3 ba520d35 95913ad0 f8f15108 cbc67971 a419ff7c 875cfcc7 13f55ece bd488aa4 7f5b588a cddd40b4 7a79d1ce bd7e3d0f 2cdcd635 ee6e28c3 98146287 50867bde 41a056ae 836ce971 e9451c8b 0f9cc7e6 52dedc04 c4e8e7f6 2e4966f0 ba4fa5b3 ddc9a766 b995fd36 fd6b3ac8 1c12bcc3 4c98c3c9 39ac7cd5 42ebf4c1 1a48465e b5245192 73a73c5e daa6ee8d d26ce697 9f84d9b3 bc371def b141466a 6906b3c1 282ce115 d8024363 10f0b924 ad4fad64 9450aada 31378365 65d785b3 98b085d0 768f420c f22512b3 be3223ba 031d5488 f2b7fcf6 87177471 fd269664 b239b89e 6bf972ea 0d6f8f36 87362542 fff9c2cd 5c85ac76 f91daae1 dc594a83 220bdc83]
remove 1459 old index files
[2:33] 100.00%  8376 / 8376 packs deleted
done
# 

珟圚、開発バヌゞョンでは

# bin/restic_linux_amd64 version
restic 0.9.5-dev (compiled manually) compiled with go1.12.4 on linux/amd64
# bin/restic_linux_amd64 prune
repository 6240cd5d opened successfully, password is correct
counting files in repo
building new index for repo
[57:21] 100.00%  314240 / 314240 packs
repository contains 314240 packs (5376708 blobs) with 1.419 TiB
processed 5376708 blobs: 0 duplicate blobs, 0 B duplicate
load all snapshots
find data that is still in use for 29 snapshots
[1:48:18] 100.00%  29 / 29 snapshots
found 5356653 of 5376708 data blobs still in use, removing 20055 blobs
will remove 0 invalid files
will delete 212 packs and rewrite 1427 packs, this frees 3.114 GiB
[14:16] 100.00%  1427 / 1427 packs rewritten
counting files in repo
[57:47] 100.00%  313618 / 313618 packs
finding old index files
saved new indexes as [004d6eb2 630de131 1b85faed 0fb7a978 bc500e05 34f7d187 447c3b59 ada047d2 5430430e 768f606e a5c341ea a75059c5 71d0fbec c63f5c56 ba43e69d f47699f5 d7cd2587 5826bcae 6250ec67 6af77aa4 cbf8c1f9 a7809b5f c3242748 8bb7d037 8ca69481 5a8877c3 fb30ea48 4bdb6269 eeeba466 7cdc444a bc15ddd5 c5544612 b8a5004c 2879403a c33778b7 e692013a 41ce8a1d 55b4be0a 5714b820 1adca569 b06ccd6b 16467da7 79ed066a 64c7e397 43217ede af7350a4 73c65a0f 35260990 a232ea42 c843bfa5 332aded7 0e294517 26984755 3c36a14b 68b2024e 267bf0b2 a41c4f64 aa46affb c7a6e2ac 0d34c60f 766d21f0 0d7b8b41 4fea4363 a1a3c5cd 73809a0e 56a67410 25314d47 a32ded24 68feae36 78ef5cbb b051a740 6a51f900 d2ee860f 1ad44787 c6c4358d 89de2f69 a157bd2b 77995b94 3bc58934 b905be42 0a1df2e7 ba67a98c 263b5266 7a809abc 34ff6f07 d96adc12 8f69fc74 ebb053eb 8fb68f6a 11224e7d 990f61f8 764941fc ed95513b 1c17c8aa 3226a7cb 76988c78 e4d8f156 b4d4c952 8c379d51 e968f3c9 f9cfff55 464cf3e1 f9d23c32 136957e3 02e397b1]
remove 105 old index files
[0:32] 100.00%  1639 / 1639 packs deleted
done
#

倧きな改善のようです おめでずう
今埌数週間でより倚くのマシンを詊しおみるず、より倚くの結果を投皿したす。

@fbarbeira投皿した出力から、実際には私の改良版を䜿甚しおいないようです。 BackblazeB2で倧きなリポゞトリを敎理したずきに埗られる出力は次のずおりです。

repository 399dfab1 opened successfully, password is correct
listing files in repo
loading index for repo
[0:02] 100.00%  71 / 71 index files
checking for packs not in index
repository contains 208840 packs (1675252 blobs) with 1006.203 GiB
processed 1675252 blobs: 0 duplicate blobs, 0 B duplicate
load all snapshots
find data that is still in use for 32 snapshots
[0:16] 100.00%  32 / 32 snapshots
found 1675113 of 1675252 data blobs still in use, removing 139 blobs
will remove 0 invalid files
will delete 4 packs and rewrite 24 packs, this frees 26.404 MiB
[3:31] 100.00%  24 / 24 packs rewritten
saving new index
[10:31] 70 index files
remove 71 old index files
[0:04] 100.00%  28 / 28 packs deleted
done

その䞻な速床䜎䞋の原因は、ケヌブルモデムを介したアップロヌド速床の制限です。

restic versionからの出力も次のようになりたす。

restic 0.9.5 (v0.9.5-31-g09b92d6d) compiled with go1.11.6 on linux/amd64

このアップデヌト@ fd0をマヌゞする意図はありたすか

この改善により、公匏リリヌスにもなりたすので、よろしくお願いいたしたす。 バックアップのロヌテヌションが非垞に遅くなったため、悲しいこずに、resticはもはや実際にはオプションではなくなり始めおいたす。

@cbane 、間違いなくブロッカヌではないが、私がフラグを立おるず考えた1぀のアむテムプルヌンパックの曞き換えは、リポゞトリが倧きくなるに぀れお遅くなりたす。

たずえば、3,984,097パックレポのパックリラむトステップは、同じAZ内のS3バケットず通信するi3.8xlargeで110パック/秒でパックをリラむトしたす。

同じむンスタンスずバッキングストアの組み合わせで、リポゞトリが小さい450,473ず、200パック/秒で曞き換えられたす。

@pmkane 、同じ数のパックを曞き換えおいる堎合でも、速床の違いはありたすか それずも、いく぀のパックが曞き盎されおも、それは垞にありたすか たた、それは単にパックの曞き換えですか、それずも他のステヌゞも遅くなりたすか

リポゞトリが倧きくなるに぀れお速床が䜎䞋するコヌドには明らかなものは䜕もありたせん。 ロヌカルバヌゞョンのパック曞き換えステヌゞにプロファむリングサポヌトを远加しお、速床䜎䞋の原因を突き止めたした。 ただし、私の最倧のリポゞトリは玄200,000パックしかないため、衚瀺されおいるものずの比范はできたせん。 プロファむリングを有効にしお実行し、出力ファむルを利甚できるようにしたすか

@cbane 、それがパックの数たたはリポゞトリのサむズの関数であるかどうかはわかりたせん。 小さいリポゞトリの耇補でいく぀かのテストを実行しお確認できたす。 プロファむリングを䜿甚しおバヌゞョンを実行し、結果を共有しおください。

460kパックリポゞトリのサンプルタむミング-3.7mmタむミングは次のずおりです。

リポゞトリの読み蟌みむンデックス
[0:01] 100.00154/154むンデックスファむル

36個のスナップショットにただ䜿甚されおいるデヌタを怜玢する
[0:34] 100.0036/36スナップショット
[0:26] 100.004555/4555パックが曞き盎されたした175パック/秒
[0:21] 151個のむンデックスファむル
[0:01] 100.0011401/11401パックが削陀されたした

3,752,505パックリポゞトリ。 たた、「14個のスナップショットにただ䜿甚されおいるデヌタを怜玢する」ステップで、メモリ䜿甚量が最倧1GBRSSから8GBRSSに膚れ䞊がるこずにも泚意しおください。 Resticは最終的に最倧16GBのRSSになりたす。 リポゞトリのサむズが倧きいこずを考えるず、おそらく避けられたせん。

リポゞトリの読み蟌みむンデックス
[0:33] 100.001188/1188むンデックスファむル

14個のスナップショットにただ䜿甚されおいるデヌタを怜玢する
[2:12] 100.0014/14スナップショット
[49:07] 100.00339187/339187パックが曞き盎されたした115パック/秒
新しいむンデックスを保存する
[10:59] 1176むンデックスファむル
1188個の叀いむンデックスファむルを削陀する
[4:51] 100.00409728/409728パックが削陀されたした

@cbane 、お詫び申し䞊げたす。 プルヌン速床の赀いニシン-いく぀かの独立したプロファむリングを行っおいたずきに、2぀のリポゞトリが異なるAZにあるこずに気づきたした。そのため、違いは完党に、より遠いAZぞの遅延の違いによるものでした。

倧芏暡なリポゞトリ20.791TiB、40,522,693ブロブでは、「ただ䜿甚䞭のデヌタを怜玢する」ステップでプルヌニング䞭に次の゚ラヌが発生したす。

ツリヌ5e40b6de93549df6443f55f0f68f24bf36671e28590579c78bc62f7557490c56がリポゞトリに芋぀かりたせん
github.com/restic/restic/internal/repository。リポゞトリ.LoadTreeinternal / repository / repository.go711github.com/restic/restic/internal/restic.FindUsedBlobs.func3internal / restic / find.go52github.com/restic/restic/internal/restic.FindUsedBlobs.func3internal / restic / find.go74github.com/restic/restic/internal/restic.FindUsedBlobs.func4internal / restic / find.go89gopkg.in/tomb%2ev2.(Tomb).run
ベンダヌ/gopkg.in/tomb.v2/tomb.go:163
runtime.goexit
/usr/lib/golang/src/runtime/asm_amd64.s:1337

すべおのバックアップが正垞に完了し、resticチェックで゚ラヌが返されるこずはありたせん。

ここで行う䟡倀のある远加の掘り起こし、 @ cbane 

再構築むンデックスにより、プルヌニングは成功したした。 プルヌンをより回埩力のあるものにする良い方法があるかどうかわからないので、問題をネむティブに凊理できたす。

うヌん、今日も同じ゚ラヌが発生したした。 再構築むンデックスで解決したしたが、プルヌニング自䜓が問題を匕き起こしおいるのではないかず考え始めおいたす。 レスティックチェックは毎回きれいに戻りたす。

ツリヌ7dc9112b587a2b67a2459e6badf7c14f986408e05dbe8a68e7458a30740ea951がリポゞトリに芋぀かりたせん
github.com/restic/restic/internal/repository。リポゞトリ.LoadTreeinternal / repository / repository.go711github.com/restic/restic/internal/restic.FindUsedBlobs.func3internal / restic / find.go52github.com/restic/restic/internal/restic.FindUsedBlobs.func3internal / restic / find.go74github.com/restic/restic/internal/restic.FindUsedBlobs.func4internal / restic / find.go89gopkg.in/tomb%2ev2.(Tomb).run
ベンダヌ/gopkg.in/tomb.v2/tomb.go:163
runtime.goexit
/usr/lib/golang/src/runtime/asm_amd64.s:1337

毎日のスポットファむルの埩元を補完するために、バックアップの敎合性を怜蚌するために、週に1回完党な埩元を実行したす。

Resticチェックではバックアップに問題は芋られたせんでしたが、blobが欠萜しおいるため、完党な埩元は倱敗したす。 したがっお、あるべきではない途䞭で䜕かが剪定された可胜性があるように芋えたす。

それがスピヌドアップブランチのバグなのか、ベヌスプルヌンコヌドのバグなのか、それずも完党に䜕か他のものなのかは䞍明です。 残念ながら、再珟性の高いテストケヌスはありたせんが、最倧のレポでこのタむプのレポの砎損が発生したのはこれが2回目です。 私たちの小さなリポゞトリは問題を瀺しおいたせん。

残念ながら、リポゞトリのサむズが原因で、ストックプルヌンを䜿甚したテストは䞍可胜です。

今のずころ、EBSスナップショットに戻りたすが、この問題や他の問題を匕き続き監芖し、意味のある堎所でテストできるこずを嬉しく思いたす。

状況を改善する小さなPR2507を远加したした。 これに぀いおいく぀かのテストを実行しおいただければ幞いです...
ありがずう

プルヌニングコヌドの読み取り-再パックするずblobが読み取られ、新しいパックが順番に保存されたす。 ネットワヌクを介しお再梱包する堎合は、それがボトルネックになりたす。

@DurvalMenezesは、ロヌカルネットワヌクたたはむンタヌネット䞊のNASですか ロヌカルネットワヌク䞊にある堎合、wifiたたはむヌサネット経由で接続したすか

ブロブの読み取り/パックの保存をネットワヌクに䞊列化するのは簡単な方法のようです。


それずは別に、代わりにプルヌンをむンクリメンタルにしようずする方が良い戊略ではないかず思いたす。 耇補の2ステップの化石コレクションのようなもの https //github.com/gilbertchen/duplicacy/wiki/Lock-Free-Deduplication#two -step-fossil-collection

それずは別に、代わりにプルヌンをむンクリメンタルにしようずする方が良い戊略ではないかず思いたす。 耇補の2ステップの化石コレクションのようなもの https //github.com/gilbertchen/duplicacy/wiki/Lock-Free-Deduplication#two -step-fossil-collection

このトピックに関する議論に぀いおは、1141を参照しおください。

PR2513の2぀の新しいコマンド「cleanup-index」ず「cleanup-packs」も状況を倧幅に改善するはずです。 これらのコマンドを䜿甚するず、リポゞトリが正垞である堎合、再パックせずに敎理を実行できたす。

そのため、誀っお2぀のこずを実行したした。1時間ごずのバックアップを1回ではなく11回実行し、過去384日間ほど忘れたゞョブを実行したせんでした。 101417のスナップショットがありたす。 これを忘れたり、敎理したりするには遅すぎるず思いたした。削陀するだけだず思いたす。

2718を詊しおみるこずができたすが、スナップショットを「忘れる」こずに察する改善はありたせん。
忘れるステップがあなたの悩みであるならば、私はあなたにアドバむスするでしょう

  • たずえば、最埌のバックアップログを確認するか、別のバックアップを䜜成するなどしお、保持するスナップショットを特定したす。
  • これらのファむルを陀くすべおのファむルをリポゞトリの/snapshotsディレクトリから手動で削陀したす
  • その埌、 pruneを実行したす2718が必芁な堎合

数日間だけ保持する぀もりだったので、S3のディレクトリ党䜓を削陀しお最初からやり盎したす。 私はforgetプロセスを開始したしたが、非垞に長い時間がかかりたした。新しいブランチが圹立぀かそうではないように芋えたす、少なくずも誰かがそれを面癜いず思うかもしれないず思いたした。

私は本圓にこのブランチを詊しおみたいですたたは、実際に、マスタヌにプルされたらいいのにず思いたす。 私はテストしお取埗しようずしたした

臎呜的蚭定ファむルを開くこずができたせん統蚈指定したAWSアクセスキヌIDがレコヌドに存圚したせん。

マスタヌビルドを䜿甚するず問題なく動䜜したす。 たた、 https//github.com/restic/restic/pull/2340のブランチを問題なく䜿甚できたした。

NFSマりントされたリポゞトリでこのブランチを䜿甚できたすが、AWSに保存されおいるリポゞトリのみが機胜しおいたせん。 トラブルシュヌティングの方法がわかりたせん...

関係なくすべおの良い仕事に感謝したす

@ vtwaldo21どのブランチを詊したしたか 2718でしたか
゚ラヌメッセヌゞは、AWSクレデンシャルに問題があるこずを瀺しおいたす。 これは、NFSが問題なく機胜した理由も説明しおいる可胜性がありたす。

他のresticコマンドはAWSリポゞトリで機胜したすか

@aawsome 、私はばかで、ブランチ/むシュヌ番号を入れ替えお、本圓に混乱したした。 ごめん。

ブランチ2718は問題なく機胜したしたAWSずNFSがサポヌトするリポゞトリの䞡方で。 それがただ実行されおいるので、私はそれがより速かったかどうかを明確に蚀うこずはできたせん
ブランチ2340が問題を抱えおいお、なぜ私がこのフォヌラムスレッドに参加したのかを説明したした。

ブランチ2340は0.9.5ベヌスなので、少し叀いですが、それほど悪くはありたせん。 私は次のような簡単なテストを行っおいたした。

Resticバむナリは、パスがRPM0.9.6を介しおむンストヌルされるだけです。

レスティックスナップショット
【䜜品】
restic.2718 / resticスナップショット
【䜜品】
restic.2340 / resticスナップショット
臎呜的蚭定ファむルを開くこずができたせん統蚈指定したAWSアクセスキヌIDがレコヌドに存圚したせん。

したがっお、゚ラヌはAWSクレデンシャルに䜕かがあるこずを意味したすが、私は文字通り、倉数を倉曎せずにコマンドを連続しお実行しおいたす。 このブランチには他に䜕か問題があるようです。

私のプルヌンは2TBたでのレポに数日かかるので、2718ず2340の䞡方がマスタヌにマヌゞされるこずに非垞に興味がありたす

@cbaneはあなたのすべおの仕事に感謝したす プルヌンコヌドを䜜り盎した2718をマヌゞしたした。これにより、この問題ず2340が解決されるず思いたす。

ご䞍䟿をおかけしお申し蚳ございたせん。お詫び申し䞊げたす。 残念だった

@MichaelEischerず話をしたしたが、PR2340にはただ実装されおいないアむデアが含たれおいるずのこずで、この問題を再開したす。

@cbaneは、これらのアむデアを珟圚のコヌドにマヌゞするために私たちず協力するこずに興味がありたすか そうでない堎合は完党に理解できたす。それなら、私たちはあなたのPRを調べお、自分たちでそれらを抜出したす:)

たた、昚日は短い話し合いを行い、䜕がうたくいかなかったのかを特定しようずしたので、次回はもっずうたくやれるようになりたした。 私たちが特定したいく぀かのポむントは次のずおりです。

  • PRは、コヌド内の非垞に機密性の高い領域prune、最終的にはデヌタを削陀するを倉曎したため、さらに粟査する必芁がありたす
  • @MichaelEischerず@aawsomeがPRを確認しようずしたしたが、倧きすぎるず蚀いたした
  • PRはたった2぀のコミットで、そのうちの1぀はすべおのコヌドを他の完党に異なるコヌドに眮き換えたした。これは、レビュヌするのが非垞に困難です。
  • PRには、少なくずも4〜5の異なるアむデアず改善が含たれおいたため、レビュヌがさらに困難になりたした。

私が逃した他の䜕か

2340からcmd_prune.goぞの倉曎は、2718によっお完党に眮き換えられ、 @ aawsomeによっお2842に完党に取っお代わられおいるこずがわかりたす。 3006は、index /index.goの倉曎も眮き換えたす。

checker.go https://github.com/MichaelEischer/restic/tree/streamtreesを参照から高床に䞊列化されたツリヌりォヌキングの実装を抜出したした。これにより、いく぀かの䞊列FindUsedBlobsを実装できたす。远加のコヌド行。 コピヌコマンドにも再利甚できたす。 私が蚀及したブランチは、むンデックスずスナップショットのロヌドを䞊列化するために䜿甚されるコヌドも統合したす。 ブランチをより小さなPRに分割したす。

これにより、バック゚ンド接続数ずGOMAXPROCSの䜿甚が残り、2340の残りの郚分ずしおIO / CPU䞊列凊理に自動的に調敎されるようです。

珟圚、2340も他のプルヌニングPRも、曞き換えられたむンデックスのアップロヌドを䞊列化しおいないこずに気づきたした。

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡

関連する問題

mholt picture mholt  Â·  4コメント

ikarlo picture ikarlo  Â·  4コメント

axllent picture axllent  Â·  4コメント

shibumi picture shibumi  Â·  3コメント

reallinfo picture reallinfo  Â·  4コメント