rsync คัดลอกช้าจากดิสก์หนึ่งไปยังอีก


4

ฉันมีไดรฟ์สองรุ่นที่เชื่อมต่อกันโดยใช้ SATA

เมื่อเปรียบเทียบความเร็วในการอ่านด้วยการใช้hdparm -t /dev/sdXความเร็วประมาณ160MB/sจะถูกส่งคืน เมื่อทำการเปรียบเทียบความเร็วในการเขียนโดยใช้dd if=/dev/zero of=testfile bs=1M count=500 conv=fdatasyncความเร็วประมาณ140MB/sจะถูกส่งคืน

แต่เมื่อคัดลอก 10GB ไฟล์เดียวโดยใช้rsync --progress /mnt/hd1/file /mnt/hd2/file, writespeed 35MB/sเป็นเพียงเกี่ยวกับ

ทำไมช้าจัง ฉันจะทำให้เร็วขึ้นได้อย่างไร


รูปแบบอะไร พวกเขาเป็น SSD หรือไม่ เป็นเรื่องปกติของ SSD ที่ความเร็วในการเขียนจะต่ำกว่าความเร็วในการอ่าน
Dan D.

พวกเขาเป็น HDD ปกติ เมื่อทำการเปรียบเทียบความเร็วในการเขียนก็เป็น140mb/s+เช่นกัน ดูเหมือนว่าจะมีปัญหากับ rsync
Zulakis

ดังนั้นจึงเป็นไปได้ว่าไฟล์มีการแยกส่วน และการค้นหาที่ไม่ได้ครอบคลุมอยู่ในเกณฑ์มาตรฐานของคุณคือสิ่งที่ จำกัด ความเร็วในการถ่ายโอน สิ่งที่filefrag /mnt/hd1/file พูดเมื่อวิ่งเป็นราก?
Dan D.

"พบส่วนขยาย 6 รายการ" นี่เป็นสิ่งที่ดีหรือคุ้มค่าหรือไม่?
Zulakis

นั่นคือค่าต่ำที่ดีและไม่กำจัดการค้นหาเป็นสาเหตุ
Dan D.

คำตอบ:


7

จากเว็บไซต์หลายแห่งที่ฉันพบขณะค้นคว้าปัญหานี้ (ตัวอย่างเช่นไซต์นี้ ) นี่เป็นเรื่องปกติเนื่องจากคอขวดของ rsync มักเป็น CPU-power

ผลลัพธ์ที่มี dd และ cp ใกล้เคียงกับความเร็วที่ฉันได้ทำการเปรียบเทียบเป็นครั้งแรก ดูเหมือนว่า Dual Core 2,2Ghz นั้นไม่เพียงพอสำหรับ rsync hdd-speed

ในระหว่างการวิจัยเพิ่มเติมฉันยังพบเกี่ยวกับเรื่องนี้ :

ถูกต้อง rsync ไม่มีตัวเลือกในการปิดใช้งานการตรวจสอบหลังการถ่ายโอนอย่างสมบูรณ์ ฉันนำ patch มาใช้เพื่อ rsync 2.6.9 ซึ่งเพิ่มตัวเลือก --trust-append ที่ จำกัด การตรวจสอบหลังการถ่ายโอนไปยังส่วนที่เพิ่มไม่ใช่ไฟล์ทั้งหมด แพทช์ที่แนบมา นั่นควรจะดีพอ แต่ถ้าคุณต้องการปิดการใช้งานการตรวจสอบอย่างสมบูรณ์เพียงแค่แสดงความคิดเห็นการโทร sum_update ที่เหลืออยู่ใน match.c และ receiver.c

Rsync จะตรวจสอบไฟล์ทั้งหมดซึ่งใช้เวลานาน การใช้โปรแกรมแก้ไขดังกล่าวข้างต้นฉันจัดการเพื่อเพิ่มความเร็วการซิงค์เป็นประมาณ 90MB / s ยังไม่ดี แต่ก็ดีกว่าเมื่อก่อน น่าเศร้าที่ patch ไม่ได้ทำให้มันกลายเป็น rsync-trunk


4

ฉันมีปัญหาเดียวกัน (บน Linux) เช่น: 35BM / s

ปรากฎว่า rsync เป็น CPU ที่ถูกผูกไว้และไม่เรียกใช้ cpu ondemand ราชการดังนั้น CPU จะติดอยู่ที่ความเร็วช้าที่สุด (800MHz ในกรณีของฉันกับ 3000MHz)

คุณสามารถทดสอบโดยใช้:

cat / proc / cpuinfo | grep MHz

การแก้ไขคือการปรับแต่งตัวควบคุม CPU

echo "70"> / sys / อุปกรณ์ / system / cpu / cpufreq / ondemand / up_threshold

หากต้องการทำให้ถาวรให้วางไว้ใน /etc/rc.local

ดูคำอธิบาย: http://random-linux-stuff.blogspot.co.nz/2013/01/boost-performance-of-ondemand-cpu.html

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