मेरा rsync इतना धीमा क्यों है?


42

मेरा लैपटॉप और मेरा कार्य केंद्र दोनों एक गीगाबिट स्विच से जुड़े हैं। दोनों लिनक्स चला रहे हैं। लेकिन जब मैं फाइलों को कॉपी करता हूं rsync, तो यह बहुत खराब होता है।

मुझे लगभग 22 एमबी / एस मिलता है। क्या मुझे सैद्धांतिक रूप से लगभग 125 एमबी / एस नहीं मिलना चाहिए? यहाँ सीमित कारक क्या है?

संपादित करें: मैंने कुछ प्रयोग किए।

लैपटॉप पर प्रदर्शन लिखें

लैपटॉप में फुल डिस्क एन्क्रिप्शन के साथ एक एक्सएफएस फाइलसिस्टम है। यह aes-cbc-essiv:sha256256 बिट्स की लंबाई के साथ साइफर मोड का उपयोग करता है। डिस्क लेखन प्रदर्शन 58.8 एमबी / एस है

iblue@nerdpol:~$ LANG=C dd if=/dev/zero of=test.img bs=1M count=1024
1073741824 Bytes (1.1 GB) copied, 18.2735 s, 58.8 MB/s

कार्य केंद्र पर प्रदर्शन पढ़ें

मैंने जिन फ़ाइलों की प्रतिलिपि बनाई है वे एक सॉफ्टवेयर RAID-5 से अधिक 5 HDDs हैं। छापे के ऊपर एक lvm है। वॉल्यूम को उसी सिफर के साथ एन्क्रिप्ट किया गया है। वर्कस्टेशन में एक FX-8150 सीपीयू है जिसमें एक देशी एईएस-एनआई निर्देश सेट है जो एन्क्रिप्शन को गति देता है। डिस्क रीड का प्रदर्शन 256 एमबी / एस (कैश ठंडा था)।

iblue@raven:/mnt/bytemachine/imgs$ dd if=backup-1333796266.tar.bz2 of=/dev/null bs=1M
10213172008 bytes (10 GB) copied, 39.8882 s, 256 MB/s

नेटवर्क प्रदर्शन

मैं दोनों ग्राहकों के बीच iperf भागा। नेटवर्क का प्रदर्शन 939 Mbit / s है

iblue@raven $ iperf -c 94.135.XXX
------------------------------------------------------------
Client connecting to 94.135.XXX, TCP port 5001
TCP window size: 23.2 KByte (default)
------------------------------------------------------------
[  3] local 94.135.XXX port 59385 connected with 94.135.YYY port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec  1.09 GBytes   939 Mbits/sec

3
SSH पर प्रोटोकॉल या टनलिंग? वहाँ बाद में बहुत निश्चित प्रदर्शन सीमाओं है ¹
एपेमिएंट

जवाबों:


18

उच्च CPU उपयोग को कम करने का एक और तरीका है, लेकिन फिर भी rsync की कार्यक्षमता बनाए रखना है, rsync / SSH से rsync / NFS में ले जाकर है। आप उन रास्तों को निर्यात कर सकते हैं, जिन्हें आप एनएफएस के माध्यम से कॉपी करना चाहते हैं और फिर एनएफएस माउंट से स्थानीय स्तर पर अपने गंतव्य स्थान के लिए rsync का उपयोग करें।

WD MyBook लाइव नेटवर्क डिस्क से एक परीक्षण में, एक गीगाबिट नेटवर्क पर NAS से एक या एक से अधिक rsyncs, 2 स्थानीय USB डिस्क की प्रतिलिपि 10MB / सेकंड (CPU: 80% usr, 20% sys) से अधिक नहीं होगी, निर्यात करने के बाद NFS और स्थानीय रूप से NFS के शेयर से लेकर दोनों डिस्कों तक कुल मिला कर मुझे कुल 45 एमबी / सेकेंड (USB2 डिस्क दोनों को अधिकतम) और थोड़ा CPU उपयोग मिला। Rsync / SSH का उपयोग करते समय डिस्क उपयोग लगभग 6% था और rsync / NFS का उपयोग 24% के करीब था, जबकि दोनों USB2 डिस्क जहां 100% के करीब थे।

इसलिए हमने प्रभावी ढंग से NAS CPU से दोनों USB2 डिस्क पर अड़चन डाली।


4
हालांकि, चेतावनी दी जाती है कि NFS कोई सुरक्षा प्रदान नहीं करता है (यानी: एन्क्रिप्शन)।
WhyNotHugo

यह महान काम किया! अब लगभग पूर्ण गीगाबाइट की गति प्राप्त कर रहा था जब मैं केवल ~ 100 एमबी / एस पहले प्राप्त कर रहा था।
PHLAK

1
क्या आप बता सकते हैं कि rsync / NFS का उपयोग कैसे करें? मैं 2 MyCloud ड्राइव के बीच 8Tb को स्थानांतरित करने की कोशिश कर रहा हूं और यह
ss

26

कारण शामिल हो सकते हैं: संपीड़न, एन्क्रिप्शन, कॉपी की जा रही फ़ाइलों की संख्या और आकार, आपके स्रोत और गंतव्य सिस्टम की डिस्क I / O क्षमताएं, TCP ओवरहेड ... ये सभी कारक हैं जो आपके द्वारा किए जा रहे स्थानांतरण के प्रकार को प्रभावित कर सकते हैं।

कृपया अपने द्वारा उपयोग किए जा रहे rsync आदेश को पोस्ट करें और दोनों कंप्यूटरों के विनिर्देशों पर विवरण प्रदान करें।


संपादित करें: एन्क्रिप्शन अक्सर rsync गति में एक सीमित कारक है। आप ssh और लाइटर-वेट एन्क्रिप्शन एन्क्रिप्शन के साथ चला सकते हैंarcfour

कुछ इस तरह: rsync -e "ssh -c arcfour"

या आप संशोधित rsync / ssh का उपयोग कर सकते हैं जो एन्क्रिप्शन को अक्षम कर सकता है। Hpn-ssh देखें: http://psc.edu/networking/projects/hpn-ssh

लेकिन फिर से, आपके लैपटॉप में आपके वर्कस्टेशन की तुलना में एक धीमी ड्राइव है। राइट्स को ब्लॉक किया जा सकता है और I / O आपके लैपटॉप पर जाने का इंतजार कर रहा है। आपकी वास्तविक प्रदर्शन अपेक्षाएं क्या हैं?


1
लैपटॉप में अक्सर धीमी (7200 आरपीएम - 5400 आरपीएम) डिस्क होती है क्योंकि वे कम बिजली का उपयोग करते हैं। यह आसानी से rsync क्या कर रहा है पर निर्भर करता है अपने सीमित कारक हो सकता है।
लादादादा '

1
धन्यवाद। के लिए rsyncningएक से dm-तहखाने एक करने के लिए एक परमाणु processer से जुड़ी एन्क्रिप्टेड डिस्क ecryptfs / s एआरएम NAS बॉक्स, इस 4MiB से मेरा स्थानांतरण गति बदल / 6MiB लिए है। rsync --protocol=29 -auh --progress /mnt/esata/pics/ -e "ssh -c arcfour" diskstation:/volume1/picsकुछ नहीं से बेहतर।
सेबेस्टियन

यह उत्तर। Rsync -azP से rsync -aPe "ssh -c arcfour" पर जाने से दो MyCloud मिरर ड्राइव के बीच 4MB / Sec से 25MB / सेक तक ट्रांसफर की गति बढ़ जाती है। प्राप्त करने वाली इकाई सीपीयू अब अधिकतम हो गई है। (यह सोचें कि मेरा मतलब है कि यूनिट जितनी तेजी से डेटा ट्रांसफर कर सकती है)
FMaz008

10

कुछ और परीक्षण के बाद, मुझे आखिरकार खुद ही जवाब मिल गया। rsyncडिफ़ॉल्ट रूप से ssh पर टनलिंग का उपयोग करता है। क्रिप्टो इसे धीमा बनाता है। इसलिए मुझे उस क्रिप्टो सामान को प्राप्त करने की आवश्यकता थी।

समाधान 1: rsync सर्वर सेट करना

rsyncप्रोटोकॉल के माध्यम से इसका उपयोग करने के लिए , आपको एक rsyncd सर्वर सेट करना होगा। /etc/init.d/rsyncमेरे लैपटॉप पर एक स्क्रिप्ट थी , इसलिए मैंने अनुमान लगाया, rsyncd चल रहा था। मैं गलत था। /etc/init.d/rsync startचुपचाप मौजूद है, जब rsync में सक्षम नहीं है /etc/default/rsync। फिर आपको इसे भी कॉन्फ़िगर करना होगा /etc/rsyncd.conf, जो एक दर्द है।

यदि आप यह सब करते हैं, तो आपको उपयोग करना होगा rsync file.foo user@machine::directory। कृपया ध्यान दें, कि दो कॉलोन हैं

समाधान 2: पुराने स्कूल rsh- सर्वर

हालाँकि, कॉन्फ़िगरेशन मेरे लिए बहुत जटिल था। तो मैं सिर्फ rsh-serverअपने लैपटॉप पर स्थापित है । कार्यस्थान पर rsync को -e rexecतब ssh के बजाय rsh का उपयोग करता है। जिसके बाद प्रदर्शन लगभग 44.6 एमबी / एस हो गया , जो अभी भी धीमा है। गति 58 एमबी / एस और 33 एमबी / एस के बीच उछलती है , जो इंगित करती है कि कुछ बफर या भीड़ नियंत्रण समस्याएं हो सकती हैं। लेकिन यह इस सवाल के दायरे से बाहर है।


2
हम यहां rsync का बड़े पैमाने पर उपयोग करते हैं और आमतौर पर पूर्ण इंटरफ़ेस गति प्राप्त करते हैं जब तक कि लाखों 4K फाइलें ट्रैवर्स न हो जाएं। मुझे नहीं लगता कि क्रिप्टो समस्या तब तक है जब तक आप कुछ गंभीरता से डिक्रिप्ट हार्डवेयर का उपयोग नहीं कर रहे हैं।
मैगलन

थिंकपैड R61 में Intel Core2 Duo T8100 को गंभीर हार्डवेयर के रूप में गिना जाता है? यदि नहीं, तो rsh पर rsync की तुलना में ssh से अधिक rsync क्यों है?
१५:१५ पर '

5
एन्क्रिप्शन अक्सर rsync गति में एक सीमित कारक है, फ़ाइलों की संख्या के साथ। इसे सुधारने के लिए मानक दृष्टिकोण या तो लाइटर एन्क्रिप्शन सिफर के साथ rsync चलाने के लिए हैं या rsync -e "ssh -c arcfour"संशोधित rsync / ssh आज़मा रहे हैं जो एन्क्रिप्शन को अक्षम कर सकता है। देखें hpn-ssh: psc.edu/networking/projects/hpn-ssh
ewwhite

2

ये बहुत पुराने प्रश्न और उत्तर हैं, लेकिन एक महत्वपूर्ण बात याद आ रही है: यदि आप पहले से संपीड़ित या एन्क्रिप्टेड डेटा की प्रतिलिपि बना रहे हैं, तो संपीड़न बंद करें।

यदि आपका डेटा न तो संपीड़ित है और न ही एन्क्रिप्ट किया गया है, तो भी आप इसे केवल एक बार संपीड़ित करना चाहते हैं! Rsync, -S के साथ सेक को -C के साथ सेक करता है (डिफ़ॉल्ट रूप से हो सकता है)। मैंने परीक्षण नहीं किया है जो मेरे डेटा के संपीड़ित होने के बाद से बेहतर है।

जब मैं इस पर होता हूं, तो आप X अग्रेषण और TTY आवंटन बंद कर सकते हैं, जिसके परिणामस्वरूप:

rsync -avh -e "ssh -x -T -c arcfour -o Compression=no" $src $dst

अंत में, सुनिश्चित करें कि (उदाहरण के लिए उपयोग कर iptraf) आप वास्तव में नेटवर्क इंटरफ़ेस का उपयोग कर रहे हैं जो आपको लगता है कि आप उपयोग कर रहे हैं। मुझे अपने महान आश्चर्य पर ध्यान देना चाहिए कि मेरे OSX पर आउटगोइंग ssh IP पर डिफ़ॉल्ट आउटगोइंग इंटरफ़ेस पर IP के बजाय बाइंडिंग इंटरफ़ेस पर पैकेट को रूट किए जाने वाले थे। वाईफाई द्वारा जुड़े दो लैपटॉप के बीच मेरा सीधा जीबी क्रॉस-कनेक्ट भी इस्तेमाल नहीं किया जा रहा था। जांच के बाद, यह 169.254 / 16 का उपयोग करने के कारण था, जिसे मैक सभी इंटरफेस पर डालता है, और एआरपी अनुरोधों का जवाब देने वाले गंतव्य कंप्यूटर भले ही एक अलग इंटरफ़ेस पर आया हो।


वैध विकल्प, लेकिन मुझे लगता है कि -x -T और -o कम्प्रेशन = न केवल स्थानांतरण की गति पर बहुत कम प्रभाव था।
FMaz008

4
यह भी ध्यान देने योग्य है कि ओपनएसएसएच 6.7 आर्कफॉर को निष्क्रिय करता है।
bparker

यह एक दया @bparker की तरह है! क्या हम जानते हैं कि शेष उपलब्ध सिफर में से कौन सा CPU पर सबसे हल्का है?
Law29
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.