สรุป
คุณจะกำหนดค่า Linux ให้อ่านจากดิสก์ / ระบบโลคัลและเขียนไปยังเครือข่ายร่วมกันในเวลาเดียวกันได้อย่างไรเมื่อเทียบกับการอ่านในขณะที่ไม่มีข้อมูลผ่านเครือข่ายจากนั้นส่งข้อมูลผ่านเครือข่ายในขณะที่โลคัลดิสก์ ว่าง?
มันเร็วกว่ามากในการอ่านและเขียนในเวลาเดียวกันแทนที่จะทำการแสดงเพียงครั้งเดียวจากนั้นทำการอีกครั้งในลักษณะสลับกัน
รายละเอียด
ฉันกำลังย้ายข้อมูลจำนวนมากจากดิสก์ภายในเครื่องบน Linux ไปยังอุปกรณ์ NAS
ฉันใช้rsync
พื้นคัดลอก/srv/data
ลงใน/mnt/nas
ซึ่งเป็น CIFS ติด
มันเริ่มต้นได้ดีอ่านได้ที่ 100MB / วินาทีและเขียนถึง NAS ที่ 100MB / วินาที (จำกัด เครือข่ายกิกะบิต) ด้วยการอ่านและเขียนที่เกิดขึ้นพร้อมกัน
อย่างไรก็ตามตอนนี้ไม่กี่ชั่วโมงต่อมาฉันพบว่ามันกำลังอ่านจากดิสก์ภายในเครื่องแล้วหยุดอ่านในขณะที่เขียนไปยัง NAS จากนั้นเมื่อไม่มีข้อมูลเพิ่มเติมที่จะเขียนไปยัง NAS มันจะอ่านต่อจากดิสก์ อีกครั้ง เครือข่ายไม่ได้ใช้งานในขณะที่กำลังอ่านดิสก์และดิสก์ไม่ได้ใช้งานในขณะที่เครือข่ายใช้งานอยู่
จำเป็นต้องพูดการอ่าน 200MB จากนั้นการเขียน 200MB จะใช้เวลานานกว่าการอ่านและการเขียน 200MB ในเวลาเดียวกัน
ฉันจะกำหนดค่าเคอร์เนลเพื่อให้พฤติกรรมการอ่านและการเขียนก่อนหน้านี้ในเวลาเดียวกันได้มากกว่าที่จะสลับระหว่างการอ่านแล้วการเขียนการดำเนินการเพียงครั้งเดียว?
ข้อสังเกตบางอย่าง: เมื่อดิสก์ภายในเครื่องอ่านที่ 100 + MB / วินาทีทุกอย่างดูเหมือนว่าจะเกิดขึ้นในแนวขนานได้ แต่เมื่อดิสก์ช้าลง (ดูเหมือนจะไปที่ 20MB / วินาทีในขณะนี้ด้วยเหตุผลบางอย่าง) นั่นคือเมื่อการอ่าน / เขียนนี้ การสลับดูเหมือนจะเกิดขึ้น
ฉันยังสามารถทำงานได้sync
ด้วยตนเองทุกไม่กี่วินาทีที่จะได้รับการเขียนสิ่งที่เกิดขึ้นควบคู่ไปกับการอ่าน ( แต่เห็นได้ชัดว่าที่ความเร็วที่ลดลง) แต่การวางsync
ในwhile
วงเพื่อที่จะทำงานทุกห้าวินาทีไม่ได้ดูเหมือนทางออกที่ถูกต้อง ...
เคอร์เนลดูเหมือนจะแคชประมาณ 1GB ของข้อมูลแล้วเขียนมันออกมาบนเครือข่ายให้เร็วที่สุด - ซึ่งก็ดี - ฉันไม่เข้าใจว่าทำไมดิสก์ช้าต้องหยุดอ่านในขณะที่ข้อมูลถูกส่งออกไป เครือข่าย