Restic: コマンドラインオプションでメモリ消費を削減

作成日 2016年02月15日  ·  13コメント  ·  ソース: restic/restic

こんにちは@ fd0! ブログにリンクされている最近の講演のビデオを見終わったばかりで、ツールと開発プロセスの背後にあるレスティックと哲学が本当に好きになりました。

講演のある時点で、resticは現在複数のファイルを読み取るために約300MBのRAMを割り当てているため、RaspberryPiなどでの実行には適していないことが言及されています。 実行時にその数を手動で減らして、メモリの少ないARMデバイスでresticを使用できるようにするために、コマンドラインオプションを追加することを検討するかどうか疑問に思いました。 どこにでもあるRasPiの隣で、AndroidとSailfishデバイスのバックアップを考えていました。

optimization repo v2 need triaging feature enhancement

最も参考になるコメント

これについて何か進展はありますか? Resticが大好きですが、メモリが不足しているため、バックアップが完了しません(1.5TBリポジトリ、最大23G RAM、b2バックエンドを使用)。 Afaik、現在、並行性はソース自体を変更することによってのみ変更できます(https://github.com/restic/restic/issues/979#issuecomment-374359647)が、これは実際には維持できません。

全てのコメント13件

ねえ、resticに興味を持ってくれてありがとう。 講演で言及した約300MiBのRAMの数は、(主に)2つの目的に使用されます。

  • scrypt(password)の計算:scryptの定数は現在ハードコーディングされており、現在のシステムでscryptがどの程度ハードであるかを自動的に判断するコードを追加する#17があります。
  • メモリにバックアップするblob /パックの複数のバッファがある:これは、許可される最大同時実行性と緊密に結合されています。 このために、自動調整コードも必要ですが、コマンドラインオプションもありそうです。

上記の私のポイントを要約すると、それは計画されており、ある時点で実装される予定です。

私にはいいですね。 それでは、この問題を開いたままにして、その機能を追跡したいと思います。

同意しました。

サーバーの観点からもこのトピックに興味があるので、必ずしもメモリが少ないわけではありませんが、「まだ十分ではありません」。 :)たとえば、最大950GBのデータ( scanned 64173 directories, 2147728 files in 2:41 )と2GBのRAMを備えたメールサーバーがあり、restic( ionice -c 3 nice -n 19実行)でOOMに遭遇しました。 Resticのメモリ必要量を計算するための既知の数値はありますか(ファイルごと/ GBごと/ ....)? (私はあらゆる種類の異なるVMでresticを使用してOOMに遭遇しました。これらのニーズを前もって知っていれば、作業が楽になります。メモリ消費を削減する方法があれば、それは素晴らしいことです。)

ありがとう!

私の経験では、1.5TBのリポジトリサイズ(バックアップ用)に対して約4GBのRAMです。 プルーンにはさらに多くの時間がかかります(最大9〜10GBのRAM)。

メモリ使用量は、特定のマシンのデータサイズではなく、リポジトリのサイズに大きく依存します。 したがって、resticリポジトリ自体が約1TBの場合、2GBのRAM(スワップなし)を備えたマシンに100KBのファイルをバックアップすることは不可能です。

ここ:

  • 建てる:
    restic 0.8.3 (v0.8.3-11-gda77f4a2) compiled with go1.9.4 on linux/amd64
  • ディメンション(ただし、実際には、これらのファイルの大部分(多くのリポジトリクローン、メタデータキャッシュ、ビルドディレクトリなど)は実際には除外されており、resticによって報告される数値は合計量を反映していると思います):
    118775 directories 829113 files 129.220 GiB
  • メモリ使用量:1日あたり約3.8G

これについて何か進展はありますか? Resticが大好きですが、メモリが不足しているため、バックアップが完了しません(1.5TBリポジトリ、最大23G RAM、b2バックエンドを使用)。 Afaik、現在、並行性はソース自体を変更することによってのみ変更できます(https://github.com/restic/restic/issues/979#issuecomment-374359647)が、これは実際には維持できません。

メモリ使用量の要件に関して何か変更はありますか?

私もこの問題に直面しています。 2GBシステム250GBレスティックレポ。 ランニング:

ionice -c 3 nice -n 19〜 / local / bin / restic -r / mnt / restic -p rk check --read-data-subset 3/7

(4/14を使用してメモリ使用量を3/7から削減しようとしています)1.7Gかかります。 貧弱なシステムが頭脳を交換しているため、コマンドを完了するのに10時間または12時間かかる場合があります。 また、システムはスワッピングのために他のことにはほとんど役に立たない。

私はレスティックが好きですが、これは持続可能ではありません。

誰かがこの問題の実際の提案が何であるかを明確にすることができますか? つまり、メモリ消費/要件を小さくできるのであれば、なぜそれを行うのではなく、コマンドラインスイッチを使用してより少ないメモリを使用できるようにする必要があるのでしょうか。

可能であれば、より少ないスペースを割り当てることはプロセスが遅くなることを意味すると思います。そのため、デフォルトでこれを行わないことが保証されますか?

すでにメモリ使用量に関して改善があり、他のいくつかはパイプラインにあります。
原則として、私は@rawtazの議論に沿っており、メモリ使用量を減らすことで、resticをはるかに広い分野のデバイスで使用できるようになります。

とは言うものの、もちろん、特に速度と引き換えに、メモリ使用量をさらに調整する可能性はあります。 私は#2794でインデックス関連の可能性に取り組み始めました

これに対する適切な解決策は、ディスク上のリポジトリインデックスを使用するか、#1988で説明されているようにクライアントがインデックスの一部のみをロードできるようにする可能性があります。

このページは役に立ちましたか?
0 / 5 - 0 評価