Rsync bagus di mesin jarak jauh

25

Saat menggunakan rsync + ssh untuk mengakses mesin jarak jauh, apakah ada cara untuk "membuat" proses rsync pada mesin jarak jauh (menurunkan prioritasnya)?

Mengedit pertanyaan untuk menjelaskan:

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
backups  16651 86.2  0.1   3576  1636 ?        Rs   11:06   0:06 rsync --ser...

(garis rsync terpotong)

Ini adalah tugas cron cadangan yang biasanya berjalan pada jam 4 pagi, tetapi ketika saya kebetulan bangun (dan melakukan, atau menggunakan Bugzilla yang dihosting di mesin yang sama), itu membunuh kinerja server, jadi saya ingin "hack" cepat untuk mencoba dan memperbaiki sedikit.

mwalling
sumber

Jawaban:

35

Anda dapat menggunakan --rsync-pathopsi, mis.

rsync --rsync-path="nice rsync" foo remotebox:/tmp/
Hasturkun
sumber
15
Anda mungkin mempertimbangkan untuk menggunakan ionice juga, misalnya --rsync-path="ionice -c 3 nice rsync", meskipun Linux modern secara otomatis mengurangi prioritas IO untuk proses yang lebih baik (lihat halaman manual yang saya tautkan).
Jo Liss
Saya sudah mencobanya, tetapi sshd saya masih berjalan dinice 0
Felipe Alvarez
pada sistem seperti FreeBSD di mana Anda tidak memiliki ionice, pengaturan --bwlimitopsi baik untuk rsync yang lebih bagus.
deed02392
1
Saya juga punya masalah dengan opsi ini tidak ada bedanya. Ternyata server yang saya sambungkan telah dikonfigurasi dalam otor_keys untuk hanya menerima perintah rsync tertentu, yang mengesampingkan --rsync-pathopsi yang saya tentukan.
Andy Beverley
7
  • Mengambil --rsync-pathopsi yang Anda milikirsync --rsync-path="ionice -c 3 nice -n 12 rsync" localDirectory remoteHost:/tmp/
  • Mengambil pilihan file konfigurasi Anda dapat mengubah atau tanda komentar pada file /etc/default/rsyncyang RSYNC_NICE='17'nilai dan RSYNC_IONICE='-c3'nilai

Untuk kedua nilai ionice akan menjadi prioritas hard disk

  • 1 -> waktu nyata
  • 2 -> Upaya terbaik
  • 3 -> Ildle (ketika proses lain tidak menggunakan HD)

Perhatikan bahwa untuk Linux, hanya cfqscheduler yang benar-benar mengimplementasikan kelas dan prioritas IO. Jika administrator sistem jarak jauh telah memilih penjadwal IO noop, deadlineatau beberapa varian yang lebih eksotis, Anda mungkin menemukan itu ionicebenar - benar tidak melakukan apa-apa. Seseorang harus bisa mendapatkan kinerja tinggi dari cfqdan masih dapat menggunakan kelas dan prioritas IO dengan menyetel cfq dengan benar .

untuk nilai bagus untuk prioritas prosesor

  • -20 (paling menguntungkan untuk proses)
  • (standar 10) jika -n tidak ditentukan
  • 19 (paling tidak menguntungkan untuk proses)
Philippe Gachoud
sumber
Siapa yang bertanggung jawab /etc/default/rsync? Apakah rsync sendiri membaca file ini, atau apakah ini dilakukan oleh linux-flavor / distribution?
guettli
... Saya rasa saya menemukan solusinya /etc/default/rsyncadalah file default untuk mode daemon rsync. Saya kira itu hanya berlaku jika Anda terhubung ke daemon rsync melalui protokol rsync. Saya kira itu tidak berlaku jika Anda menyebutnya melalui ssh.
guettli
2

Solusi cepat dan kotor akan membuat skrip pembungkus kecil yang disebut 'rsync' yang membayangi $ PATH sebelum biner rsync nyata seperti:

#!/bin/sh
nice -10 /path/to/proper/rsync $*

Atau atur file otor_keys agar kinerjanya rsync. (Dengan asumsi Anda menggunakan kunci ssh).

contoh:

command=”/home/user/bin/nice-rsync.sh" ssh-dss asdf....

Sekarang di /home/user/bin/nice-rsync.sh Anda

#!/bin/sh
case $SSH_ORIGINAL_COMMAND in
  rsync\ --server*)
    nice -10 $SSH_ORIGINAL_COMMAND
    ;;
  *)
    $SSH_ORIGINAL_COMMAND
    ;;
esac

HTH

pyhimys
sumber
2

Anda dapat menonaktifkan kompresi di sepanjang jaringan, dengan tidak menyertakan -zargumen, yang mungkin menghemat waktu CPU di kedua sisi. Atau ubah cara rsync menggunakan checksum, lihat--checksum

Rory
sumber
Saya menerima jawaban Hasturkun (karena menjawab pertanyaan saya), tetapi Anda mengemukakan poin yang bagus: Saya membandingkan dengan kompresi vs tanpa kompresi, dan itu hanya menambah 2 menit pada pekerjaan. Saya baru saja terbiasa menggunakan -avz sebagai flag saya sehingga saya tidak pernah berpikir untuk menjatuhkan -z.
mwalling
Kebiasaan saya adalah menggunakan -aPh, saya jarang menggunakan -z
Rory
0

Rsync seharusnya tidak menggunakan banyak CPU. Saya ragu bahwa Anda dapat memaksakan kebaikan tertentu dari ujung yang lain, tetapi yang dapat Anda lakukan adalah membatasi bandwidth yang digunakan rsync dengan firewall, yang pada akhirnya akan mengurangi berapa banyak pemrosesan yang dapat dilakukan dalam jumlah waktu X.

Zimmy-DUB-Zongy-Zong-DUBBY
sumber
Menambahkan beberapa output dari 'ps aux' untuk menunjukkan apa yang dilakukannya sejauh CPU. Saya akan menggunakan tautan lambat, jadi saya memiliki opsi --compress dihidupkan, tetapi itu juga menyebabkan sejumlah besar akses disk, yang saya harapkan untuk dirobohkan dengan menggunakan yang bagus (efek samping yang tidak diinginkan)
mwalling
Menetapkan nilai bagus biasanya juga memengaruhi kebaikan I / O, yang biasanya diinginkan seseorang.
Bram Schoenmakers
rsynctidak memerlukan banyak CPU tetapi mungkin muncul di toptergantung pada apakah kernel saat ini menganggap I / O menunggu sebagai sibuk. Selain itu, jika ada proses lain yang perlu mengakses penyimpanan dan rsyncdiizinkan untuk berjalan dengan kecepatan penuh semua proses lainnya akan melambat sebagai hasilnya.
Mikko Rantalainen
-7

Saya rasa tidak, Anda memerlukan solusi khusus untuk itu .. gunakan ftp

ultraman
sumber
6
Anda tahu, itu ide yang bagus. Siapa yang butuh semua fitur rsync seperti bisa menjalankan ssh tanpa perlu daemon yang berjalan di mesin jarak jauh (dan enkripsi ssh yang melekat), transfer kompresi, melanjutkan unduhan, hanya mentransfer perbedaan ... itu semua fitur mengasapi. Aku akan berlari pulang sekarang dan menggunakan Sistem 60 / PS saya untuk FTP beberapa anime!
mwalling
Hapus jawaban ini karena gagal menjawab pertanyaan dan menawarkan alternatif yang jauh lebih buruk daripada contoh dalam pertanyaan.
user1133275