Rsync --bwitit ไม่ทำงาน


12

ฉันกำลังใช้ rsync เพื่อถ่ายโอนไฟล์ขนาดใหญ่จากโฮสต์ไปยังอีก ฉันต้องการ จำกัด เดบิตสำหรับการโอนนี้ หลังจากอ่าน man page ฉันพบตัวเลือก --bwlimit ซึ่งคาดว่าจะมีค่า KB / s

ฉันต้องการที่จะ จำกัด การถ่ายโอนเพื่อ arround 100Mbit / s ดังนั้นฉันใช้การตั้งค่าต่อไปนี้

rsync --progress -v --bwlimit=10000 --temp-dir=/tmp srv:/tmp/* /tmp/

แต่สิ่งนี้ดูเหมือนจะไม่ได้รับการเคารพตามเอาต์พุตของ rsync:

file.sql.gz
   570851702 100%   33.90MB/s    0:00:16 (xfer#5, to-check=34/39)
file.sql.gz
    11195140 100%    7.45MB/s    0:00:01 (xfer#6, to-check=33/39)
file.sql.gz
    51439169 100%   19.41MB/s    0:00:02 (xfer#7, to-check=32/39)
file.sql.gz
       34022 100%    1.55MB/s    0:00:00 (xfer#8, to-check=31/39)
file.sql.gz
     2305698 100%    6.96MB/s    0:00:00 (xfer#9, to-check=30/39)
file.sql.gz
     2152942 100%    2.73MB/s    0:00:00 (xfer#10, to-check=29/39)
file.sql.gz
    86655633 100%   19.33MB/s    0:00:04 (xfer#11, to-check=28/39)
file.sql.gz
  3614476032  40%   34.82MB/s    0:02:28

ถ้าฉันไม่ผิด: 19.33MB / s ~ = 154Mbit / s

ดังนั้นที่นี่มีอะไรผิดปกติ?

PS: โปรโตคอล rsync เวอร์ชัน 3.0.6 เวอร์ชัน 30

ขอบคุณสำหรับความช่วยเหลือของคุณ !


ที่นี่ใช้งานได้กับ rsync 3.0.4 (Ubuntu), 3.0.6 (openSUSE) และ 3.0.9 (Ubuntu) โดยใช้พารามิเตอร์เดียวกัน คุณต้องให้ข้อมูลเพิ่มเติมเกี่ยวกับระบบของคุณ
สก.

สิ่งนี้ช่วยได้ไหม? stackoverflow.com/questions/10064316/…
mreithub

@mreithub คำตอบในโพสต์นี้น่าสนใจ แต่จริงๆแล้ว Hugo ดูเหมือนว่าจะถ่ายโอนไฟล์ขนาดใหญ่
สก.

rsync bwlimits สำหรับแต่ละไฟล์เพื่อ จำกัด bw คุณควร จำกัด การเชื่อมต่อ (บน linux โดยใช้ iptables + tc atmail.com/kb/2009/throttling-bandwidth ) ดังนั้นจึงไม่มีวิธีที่ง่าย
zb '

สวัสดีฉันกำลังใช้งาน RHEL 6 แต่นี่ไม่ได้สร้างความแตกต่างมากนัก ใช่นี้เป็นไฟล์ขนาดใหญ่ดังนั้นการหักบัญชีควรจะมีเสถียรภาพเกือบ สำหรับข้อมูลคำสั่งที่เทียบเท่ากับ SCP นั้นใช้งานได้ดีมาก ดังนั้นฉันจึงไม่รู้ว่าเกิดอะไรขึ้นกับ rsync
Hugo

คำตอบ:


10

ฉันคิดว่าคุณมีประสบการณ์ "burstiness" ดังที่ได้กล่าวไว้ใน manpage

--bwlimit=RATE
          ... 
          Some "burstiness" may be seen where rsync writes out a block 
          of data and then sleeps to bring the average rate into compliance.

ดังนั้นอย่างที่ฉันถามก่อนอัตราส่วนโดยรวมในตอนท้ายของงานของคุณในที่สุดก็ถูก จำกัด ที่ 10M


4

ดังที่กล่าวไว้ในหน้า rsyncมันจะถ่ายโอนเป็น KByte / วินาที:

--bwlimit=KBPS          limit I/O bandwidth; KBytes per second

2
นั่นคือสิ่งที่ฉันใช้: 10 000 กิโลไบต์ = 78.12500 เมกะบิต
Hugo

2
คุณไม่ได้ใส่ใจกับสิ่งที่ฉันพูด rsync ใช้ไบต์แทนบิตดังนั้นคุณต้องคำนวณแบนด์วิดท์เป็นบิตและแปลงเป็นไบต์
shgnInc

ฉันมีปัญหาเดียวกันเมื่อฉันใส่--bwlimit=100ฉันได้รับ 275kB / s ปกติมากระหว่าง 265-285 kB / s ไม่มีการระเบิด มีอะไรผิดปกติในที่นี่?
Brethlosze

2

ฉันต้องการ จำกัด การถ่ายโอนให้อยู่ที่ 100Mbit / s ดังนั้นฉันจึงใช้การตั้งค่าต่อไปนี้:

rsync --progress -v --bwlimit=10000 --temp-dir=/tmp srv:/tmp/* /tmp/

100 Mbit / s คือ (โดยประมาณ) 10 MByte / s ซึ่งเป็น 10,000 KByte / s หากคุณกดปุ่มrsyncburstiness แล้วบางทีเครื่องมือแยกต่างหากtrickleจะช่วย:

trickle -s -d 10000 -u 10000 -t 10 -l 100 rsync --progress -v --temp-dir=/tmp srv:/tmp/* /tmp/

0

ค่าที่แสดงเป็นอัตราการถ่ายโอนที่มีประสิทธิภาพซึ่งรวมถึงการเพิ่มความเร็วจากการบีบอัดและอัลกอริทึมของเดลต้านี้สามารถสังเกตได้ง่ายโดยการดูจำนวนมากหากมีการขัดจังหวะrsyncเซสชั่นจะเริ่มต้นใหม่กับการโอนบางส่วนเปิดการใช้งาน (อดีต--append-verify)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.