ซิงค์ไฟล์หลายเธรดระหว่างเซิร์ฟเวอร์ Linux 2 ตัว


9

ในขณะนี้ฉันกำลังใช้งาน rsync จำนวน 2.2 ล้านไฟล์รวม 250GB และใช้เวลาแค่ 700,000 ไฟล์ใน 6 ชั่วโมง

ไม่มีใครรู้ rsync เช่นเครื่องมือที่สามารถทำได้ด้วยหลายกระทู้เพื่อให้มันเร็วขึ้น?


3
คุณมีเหตุผลใดที่คิดว่ามันผูกกับ CPU ในทางใดทางหนึ่งหรือไม่?
Chopper3

คุณกำลังใช้ตัวเลือก rsync ใด
Kyle Smith

คุณใช้ ssh เป็นพาหนะขนส่งหรือไม่?
JimB

rsync -avSPp และไม่มีปัญหา CPU หรือดิสก์
Tom van Ommen

และไม่มีการขนส่ง SSH เพียงแค่เห็นบางสิ่งบางอย่างบนเว็บไม่รู้ว่ามันเร็วกว่าหรือเปล่า การสร้างดัชนีไฟล์ทั้งหมดใช้เวลานานแล้ว
Tom van Ommen

คำตอบ:


7

ฉันสงสัยว่าซีพียูเป็นปัจจัย จำกัด ที่นี่ คุณอาจถูก จำกัด ทั้งแบนด์วิดท์เครือข่ายสำหรับการถ่ายโอนและดิสก์ IO เวลาแฝงโดยเฉพาะอย่างยิ่งสำหรับการโทรสถิติเหล่านั้นทั้งหมด

คุณสามารถแบ่งลำดับชั้นของระบบไฟล์ออกเป็นชิ้นเล็ก ๆ เพื่อประมวลผลแบบขนานได้หรือไม่?

ไฟล์ต้นฉบับคืออะไรและมีการเขียนหรือแก้ไขอะไร เป็นไปได้ไหมที่จะส่งการเปลี่ยนแปลงเมื่อเกิดขึ้นในระดับแอปพลิเคชัน


การซิงค์ไฟล์แนบของ Zarafa ทั้งหมด gzipped โดยค่าเริ่มต้น ฉันสามารถเรียกใช้หลายอินสแตนซ์ แต่นั่นมีประสิทธิภาพน้อยกว่า 10 เธรด และเครือข่ายคือ 1GBit ถึง 1GBit แต่ดาต้าเซ็นเตอร์ที่แตกต่างกัน แต่มันไม่ควรเป็นปัญหา ได้ดิสก์ SAS 24 แผ่นทางด้านแหล่งที่มาและที่เก็บข้อมูลอัจฉริยะที่มี SSD บนปลายทาง
Tom van Ommen

1
@ Tom van Ommen - ทำไมคุณถึงคิดว่าคุณมี CPU จำกัด กระบวนการหลายอย่างมีประสิทธิภาพน้อยกว่าเธรดอย่างไรถ้าคุณ จำกัด CPU จริงๆ
JimB

1
@ Tom Ommen กระบวนการ 10 กระบวนการมีค่าใช้จ่ายมากกว่า 10 เธรด อย่างไรก็ตามการล็อคโครงสร้างข้อมูลระหว่างเธรดเป็นฝันร้ายที่เข้ารหัส บ่อยครั้งมีประสิทธิภาพมากขึ้น (สำหรับเวลาของผู้เขียนโปรแกรม) เพื่อวางไข่กระบวนการหลายขั้นตอนและดำเนินการกับมัน
Mike Pennington

1
@Guacamole - หลายเธรดสามารถช่วยได้ในบางสถานการณ์ แต่ถ้าลิงค์ของเขาอิ่มตัวเขาจะไม่ผลักอีกต่อไปไม่ว่าเขาจะมีหลายเธรดก็ตาม Rsync ใช้เธรดสำหรับการทำงานพร้อมกันและไม่ได้ปิดกั้นไอโอภายใน
JimB

1
@Guacamole - ทั้งหมดที่ฉันกำลังชี้ให้เห็นคือถ้าเขาใช้ ssh เป็นตัวรับส่งข้อมูลปริมาณงานของเขาจะถูก จำกัด ด้วย ssh เอง (โดยเฉพาะหน้าต่างรับสัญญาณคงที่
JimB

1

หากระบบย่อยดิสก์ของเซิร์ฟเวอร์ที่รับเป็นอาร์เรย์ที่มีหลายดิสก์การใช้กระบวนการ rsync หลายรายการสามารถปรับปรุงประสิทธิภาพได้ ฉันใช้กระบวนการ rsync 3 กระบวนการเพื่อคัดลอกไฟล์ไปยังเซิร์ฟเวอร์ NFS (RAID6 ที่มี 6 ดิสก์ต่อกลุ่มการโจมตี) เพื่อทำให้ Gigabit Ethernet อิ่มตัว

ผู้ชายคนนี้รายงานเกี่ยวกับชุดสายหลามพื้นฐานที่วางไข่หลายกระบวนการ rsync http://www.reliam.com/company/featured_geek


น่าเสียดายที่ลิงค์นั้นเสีย คุณจะพบมันอีกครั้ง?
P.Péter

1

ฉันได้อ่านคำถามมากมายเช่นนี้ ฉันคิดว่าคำตอบที่แท้จริงคือการคัดลอก / ย้ายด้วยตนเอง IOps จะเป็นปัญหาที่นี่ หากมันทำให้คุณรู้สึกดีขึ้นฉันกำลังอยู่ระหว่างการเคลื่อนย้ายไฟล์ประมาณ 200 ล้านไฟล์ซึ่งกินเนื้อที่ดิสก์มากกว่า 100TB


0

คุณอาจลองตรวจสอบ cp โคลนแบบมัลติเธรดสำหรับ linux (โอเพ่นซอร์ส): http://static.usenix.org/event/lisa10/tech/slides/kolano.pdf


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