रिमोट मशीन पर अच्छा rsync


25

दूरस्थ मशीन तक पहुंचने के लिए rsync + ssh का उपयोग करते समय, क्या दूरस्थ मशीन पर rsync प्रक्रिया को "अच्छा" करने का एक तरीका है (अपनी प्राथमिकता कम करने के लिए)?

प्रश्न को स्पष्ट करने के लिए संपादन:

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...

(rsync लाइन छीन ली गई)

यह एक बैकअप क्रॉन जॉब है जो आम तौर पर सुबह 4 बजे चलता है, लेकिन जब मैं जागता हूं (और उसी मशीन पर होस्ट किए गए बुगज़िला का उपयोग करके), यह सर्वर के प्रदर्शन को मारता है, इसलिए मैं कोशिश करने और ठीक करने के लिए एक त्वरित "हैक" चाहता था। यह एक सा है।

जवाबों:


35

आप --rsync-pathविकल्प का उपयोग कर सकते हैं , जैसे।

rsync --rsync-path="nice rsync" foo remotebox:/tmp/

15
आप आयनिस का उपयोग करने पर विचार कर सकते हैं , उदाहरण के लिए --rsync-path="ionice -c 3 nice rsync", हालांकि आधुनिक लिनक्स स्वचालित रूप से अच्छाई प्रक्रियाओं के लिए IO प्राथमिकता को कम कर देते हैं (मैन पेज लिंक देखें)।
जो लिस

मैंने पहले ही कोशिश की, लेकिन मेरा sshd अभी भी चल रहा हैnice 0
फेलिप अल्वारेज़

FreeBSD जैसे सिस्टम पर जहाँ आपके पास नहीं है ionice, --bwlimitविकल्प सेट करना एक अच्छे rsync के लिए अच्छा है।
de002392

1
मुझे इस विकल्प से भी कोई समस्या नहीं थी। यह पता चला कि जिस सर्वर से मैं कनेक्ट हो रहा था, उसे केवल एक विशिष्ट rsync कमांड को स्वीकार करने के लिए अधिकृत_कीप्स में कॉन्फ़िगर किया गया था, जो कि --rsync-pathमेरे द्वारा निर्दिष्ट विकल्प को ओवरराइड कर रहा था।
एंडी बेवरली 10

7
  • ले रहा है --rsync-pathविकल्प आपके पासrsync --rsync-path="ionice -c 3 nice -n 12 rsync" localDirectory remoteHost:/tmp/
  • ले रहा है विन्यास फाइल विकल्प आप बदल सकते हैं या फ़ाइल में टिप्पणी हटाएं मूल्य और मूल्य/etc/default/rsyncRSYNC_NICE='17'RSYNC_IONICE='-c3'

दोनों के लिए आयनिस मान हार्ड डिस्क प्राथमिकता के लिए होगा

  • 1 -> वास्तविक समय
  • 2 -> सर्वश्रेष्ठ प्रयास
  • 3 -> आइडल (जब कोई अन्य प्रक्रिया एचडी का उपयोग नहीं कर रही है)

ध्यान दें कि लिनक्स के लिए केवल cfqशेड्यूलर वास्तव में IO वर्गों और प्राथमिकताओं को लागू करता है। यदि दूरस्थ सिस्टम व्यवस्थापक ने IO अनुसूचक noop, deadlineया कुछ और विदेशी संस्करण का विकल्प चुना है , तो आप पा सकते हैं कि ioniceवास्तव में कुछ भी नहीं है। एक को उच्च प्रदर्शन प्राप्त करने में सक्षम होना चाहिए cfqऔर अभी भी cfq को सही ढंग से ट्यूनिंग करके IO वर्गों और प्राथमिकताओं का उपयोग करने में सक्षम होना चाहिए ।

प्रोसेसर प्राथमिकता के लिए अच्छे मूल्य के लिए

  • -20 (प्रक्रिया के लिए सबसे अनुकूल)
  • (डिफ़ॉल्ट 10) यदि कोई निर्दिष्ट नहीं है
  • 19 (कम से कम प्रक्रिया के अनुकूल)

कौन है जिम्मेदार /etc/default/rsync? क्या rsync स्वयं इस फ़ाइल को पढ़ रहा है, या यह linux-flavor / वितरण द्वारा किया जाता है?
गुएटली

... मुझे लगता है कि मैंने पाया कि समाधान /etc/default/rsyncrsync डेमॉन मोड के लिए डिफॉल्ट फाइल है। मुझे लगता है कि यह केवल तभी लागू होता है जब आप rsync डेटा के माध्यम से rsync डेमॉन से कनेक्ट होते हैं। मुझे लगता है कि यह लागू नहीं होता है यदि आप इसे ssh के माध्यम से कहते हैं।
गुएटली

2

त्वरित और गंदा समाधान 'rsync' नामक एक छोटी आवरण स्क्रिप्ट बनाने के लिए होगा जो वास्तविक rsync बाइनरी से पहले $ PATH को छाया देता है:

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

या अधिकृत_की फ़ाइल को सेटअप करें ताकि वह rsync का एनआईलिंग करे। (मान लें कि आप ssh कुंजियों का उपयोग कर रहे हैं)।

उदाहरण:

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

अब आपके /home/user/bin/nice-rsync.sh में

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

HTH


2

आप नेटवर्क के साथ संपीड़न को अक्षम कर सकते हैं, इस -zतर्क को शामिल नहीं करके , जो दोनों तरफ कुछ सीपीयू समय बचा सकता है। या rsync चेकसम का उपयोग कैसे करता है, इसे देखें--checksum


मैंने हस्त्कर्ण का उत्तर स्वीकार कर लिया (क्योंकि इसने मेरे प्रश्न का उत्तर दिया), लेकिन आप एक अच्छा बिंदु लाए: मैंने संपीड़न के बिना संपीड़न के साथ बेंचमार्क किया, और इसने केवल 2 मिनट नौकरी में जोड़े। मुझे बस अपने झंडे के रूप में -avz का उपयोग करने की इतनी आदत हो गई कि मैंने कभी भी ड्राप -z के बारे में नहीं सोचा।
सुबह

मेरी आदत है -aPh का उपयोग करने के लिए, मैं शायद ही कभी -z का उपयोग करता हूं
Rory

0

Rsync ज्यादा CPU का उपयोग नहीं करना चाहिए। मुझे संदेह है कि आप दूसरे छोर से एक निश्चित अच्छाई के लिए मजबूर कर सकते हैं, लेकिन आप जो कर सकते हैं वह उस सीमा को सीमित करता है जो rsync एक फ़ायरवॉल के साथ उपयोग कर रहा है, जो अंततः X की समय की मात्रा में कितना प्रसंस्करण कर सकता है।


'Ps aux' से कुछ आउटपुट जोड़ा गया है यह दिखाने के लिए कि यह CPU क्या कर रहा है। मैं एक धीमी लिंक पर जा रहा हूं, इसलिए मेरे पास --compress विकल्प चालू है, लेकिन यह डिस्क एक्सेस की एक अच्छी मात्रा भी पैदा कर रहा है, जिसे मैं अच्छा (अनपेक्षित साइड इफेक्ट) का उपयोग करके
खटकने की

एक अच्छा मूल्य निर्धारित करना आमतौर पर I / O की सुंदरता को प्रभावित करता है, जो कि आमतौर पर कोई व्यक्ति चाहता है।
ब्रैम शोनीमेकर्स

rsyncअधिक CPU की आवश्यकता नहीं है, लेकिन यह तब topभी निर्भर करता है जब वर्तमान कर्नेल I / O प्रतीक्षा को व्यस्त मानता है। इसके अलावा, अगर किसी अन्य प्रक्रिया को भंडारण तक पहुंचने की आवश्यकता है और rsyncपूरी गति से चलाने की अनुमति है, तो अन्य सभी प्रक्रियाओं को धीमा कर दिया जाएगा।
मिक्को रेंटालीनें

-7

मुझे ऐसा नहीं लगता, आपको इसके लिए एक कस्टम समाधान की आवश्यकता है .. ftp का उपयोग करें


6
आप जानते हैं, यह एक अच्छा विचार है। जो दूरस्थ रूप से मशीन पर चलने वाले डेमॉन (और ssh के निहित एन्क्रिप्शन) की आवश्यकता के साथ ss पर रन करने में सक्षम होने की तरह rsync की सभी विशेषताओं की आवश्यकता होती है, संपीड़न को स्थानांतरित करना, डाउनलोड को फिर से शुरू करना, केवल अंतर को स्थानांतरित करना ... कई विशेषताएं हैं ब्लोट। मैं अभी घर चलाने जा रहा हूँ और मेरे PS / 2 सिस्टम 60 का उपयोग कर एफ़टीपी कुछ एनीमे कर रहा हूँ!
mwalling

कृपया इस उत्तर को हटा दें क्योंकि यह प्रश्न का उत्तर देने में विफल रहता है और प्रश्न में उदाहरण की तुलना में वैकल्पिक रूप से बदतर प्रदान करता है।
user1133275
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.