Restic: Kurangi konsumsi memori dengan opsi baris perintah

Dibuat pada 15 Feb 2016  ·  13Komentar  ·  Sumber: restic/restic

Hai @fd0! Baru saja selesai menonton video dari pembicaraan terakhir Anda yang ditautkan di blog dan benar-benar menyukai restic dan filosofi di balik alat dan proses pengembangan.

Pada satu titik dalam pembicaraan disebutkan bahwa restic saat ini mengalokasikan sekitar 300MB RAM untuk membaca banyak file dan oleh karena itu tidak cocok untuk dijalankan, misalnya Raspberry Pi. Saya bertanya-tanya apakah Anda akan mempertimbangkan untuk menambahkan opsi baris perintah untuk secara manual mengurangi jumlah itu saat runtime untuk memungkinkan restic digunakan pada perangkat ARM dengan memori rendah. Di samping RasPi yang ada di mana-mana, saya berpikir untuk mencadangkan perangkat Android dan Sailfish.

optimization repo v2 need triaging feature enhancement

Komentar yang paling membantu

Apakah ada kemajuan dalam hal ini? Suka istirahat, tetapi pencadangan saya tidak selesai lagi karena kehabisan memori (repositori 1,5TB, menggunakan ~23G RAM, b2 backend). Afaik, saat ini konkurensi hanya dapat dimodifikasi dengan memodifikasi sumber itu sendiri (https://github.com/restic/restic/issues/979#issuecomment-374359647), tetapi ini tidak benar-benar dapat dipertahankan.

Semua 13 komentar

Hei, terima kasih atas minatmu pada restic. Jumlah ram sekitar 300MiB yang saya sebutkan dalam pembicaraan digunakan untuk dua hal (terutama):

  • menghitung scrypt(password): konstanta untuk scrypt di-hard-code sekarang, dan ada #17 untuk menambahkan kode yang secara otomatis mengetahui seberapa keras scrypt seharusnya untuk sistem saat ini
  • memiliki banyak buffer gumpalan/paket untuk dicadangkan di memori: Ini digabungkan erat dengan konkurensi maksimum yang diizinkan. Untuk ini saya juga ingin memiliki kode penyetelan otomatis, tetapi opsi baris perintah juga mungkin.

Untuk meringkas poin saya di atas: Ini direncanakan dan akan dilaksanakan di beberapa titik waktu.

Terdengar bagus untukku. Saya ingin agar masalah ini tetap terbuka untuk melacak fitur itu.

Sepakat.

Saya tertarik dengan topik ini juga dari perspektif server, jadi belum tentu memori rendah tetapi "masih belum cukup". :) Misalnya saya punya server email dengan ~950GB data ( scanned 64173 directories, 2147728 files in 2:41 ) dan dengan 2GB RAM saya mengalami OOM dengan restic (berjalan di bawah ionice -c 3 nice -n 19 ). Apakah ada angka yang diketahui untuk menghitung kebutuhan memori untuk restic (per file/per GB/....)? (Saya mengalami OOM dengan restic di semua jenis VM yang berbeda, diketahui bahwa kebutuhan tersebut di muka akan membuat hidup lebih mudah, dan jika ada cara untuk mengurangi konsumsi memori, itu akan bagus.)

Terima kasih!

Pengalaman saya sekitar 4GB RAM untuk ukuran repo 1,5TB (untuk cadangan). prune membutuhkan lebih banyak lagi (~9-10GB RAM).

Penggunaan memori sebagian besar tidak bergantung pada ukuran data pada mesin tertentu, tetapi sebagian besar pada ukuran repositori. Jadi tidak mungkin untuk mencadangkan file 100KB pada mesin dengan RAM 2GB (tanpa swap) jika repositori restic itu sendiri ~1TB.

Di Sini:

  • Membangun:
    restic 0.8.3 (v0.8.3-11-gda77f4a2) compiled with go1.9.4 on linux/amd64
  • Dimensi (tapi saya benar-benar percaya bahwa sebagian besar file itu - banyak klon repositori, cache metadata, direktori build, dll. - sebenarnya dikecualikan dan angka-angka yang dilaporkan oleh restic mencerminkan jumlah total):
    118775 directories 829113 files 129.220 GiB
  • Penggunaan memori: sekitar 3,8G per lari harian

Apakah ada kemajuan dalam hal ini? Suka istirahat, tetapi pencadangan saya tidak selesai lagi karena kehabisan memori (repositori 1,5TB, menggunakan ~23G RAM, b2 backend). Afaik, saat ini konkurensi hanya dapat dimodifikasi dengan memodifikasi sumber itu sendiri (https://github.com/restic/restic/issues/979#issuecomment-374359647), tetapi ini tidak benar-benar dapat dipertahankan.

Apakah ada yang berubah dalam hal persyaratan penggunaan memori?

Saya juga mengalami masalah ini. Sistem 2GB repo restic 250GB. Berlari:

ionice -c 3 bagus -n 19 ~/local/bin/restic -r /mnt/restic -p rk periksa --read-data-subset 3/7

(juga menggunakan 4/14 untuk mencoba mengurangi penggunaan memori dari 3/7) membutuhkan 1.7G. Diperlukan waktu 10 atau 12 jam untuk menyelesaikan perintah karena sistem yang buruk sedang menukar otaknya. Juga sistem ini hampir tidak berguna untuk hal lain karena swapping.

Saya suka istirahat tapi ini tidak berkelanjutan.

Adakah yang bisa menjelaskan apa saran sebenarnya dalam masalah ini? Maksud saya, jika konsumsi/persyaratan memori dapat dibuat lebih kecil, mengapa kita tidak melakukannya saja dan alih-alih memiliki sakelar baris perintah untuk mengaktifkan menggunakan lebih sedikit memori?

Saya berasumsi bahwa mengalokasikan lebih sedikit ruang, jika mungkin, berarti prosesnya lebih lambat, sehingga menjamin tidak melakukan ini secara default?

Sudah ada peningkatan sehubungan dengan penggunaan memori dan beberapa lainnya sedang dalam proses.
Pada prinsipnya, saya setuju dengan argumentasi

Yang mengatakan, tentu saja ada kemungkinan untuk lebih mengurangi penggunaan memori, terutama perdagangan untuk kecepatan. Saya mulai mengerjakan kemungkinan terkait indeks di #2794

Solusi yang tepat untuk ini kemungkinan besar akan menggunakan indeks repositori pada disk atau mengizinkan klien untuk hanya memuat bagian dari indeks seperti yang dibahas di # 1988.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat