เหตุใดจึงมีความแตกต่างของความเร็วในการเขียนระหว่างตัวค้นหา dd, cp, rsync และ macOS กับไดรฟ์ SMB3


15

Tl; dr - เราไม่สามารถหาสาเหตุของความเร็วในการเขียนที่ จำกัด 60 MB / วินาทีไปยัง NAS ของเราผ่าน SMB และ AFP จากไคลเอนต์ Mac สองตัว ในการเปรียบเทียบ: แล็ปท็อป Windows 7 รุ่นเก่าในเครือข่ายเดียวกันเขียนได้อย่างเสถียร 100 MB / วินาที

ถ้าคุณอ่านคำถามนี้เป็นครั้งแรกโปรดข้ามไปที่การปรับปรุง 4ส่วน rsyncเป็นเหตุผลหลักสำหรับความเร็วต่ำแม้ว่าเราจะไม่เข้าใจว่าทำไม (สำหรับไฟล์เดียว!)


คำถามเดิม: ค้นหาคอขวดความเร็ว SMB3 / NAS กับ Mac OS 10.11.5 ขึ้นไป

เราทดสอบผ่านทางrsync --progress -a /localpath/test.file /nas/test.filemacOS และคัดลอกข้อมูลของ Windows

NAS นั้นเป็น DS713 + ที่ใช้ DSM 6.0.2 ปัจจุบัน (ทดสอบด้วย 5.x ด้วย) โดยมี HGST Deskstar NAS SATA 4TB (HDN724040ALE640) สองตัวใน RAID1 ที่มีส่วนประกอบอีเธอร์เน็ตกิกะบิตเพียงอย่างเดียวและอย่างน้อย Cat5e)

ไคลเอนต์ Mac แรกทำเพียง 20 MB / วินาที แต่การใช้การsigning_required=noแก้ไข (อธิบายไว้ที่นี่ ) ทำให้ความเร็วในการเขียนเป็น 60 MB / วินาทีผ่านทาง SMB2 และ SMB3 AFP ยังมอบประมาณ 60 MB / วินาที ผลลัพธ์จะแตกต่างกันประมาณ 5 MB / วินาทีขึ้นอยู่กับโปรโตคอลและไคลเอนต์ (Mac)

สิ่งที่เราได้ลองไปแล้ว:

เครือข่าย

  1. ทดสอบประสิทธิภาพเครือข่ายผ่าน iperf3 ผลลัพธ์: 926 Mbit / s ดูดี.
  2. พยายามเชื่อมต่อเครือข่าย Dual Link Aggregation / Bonded ไม่มีการเปลี่ยนแปลง.
  3. เพิ่ม MTU เป็น 6000 และ 9000 ไม่มีการเปลี่ยนแปลง
  4. ตรวจสอบสายเคเบิลทั้งหมด ทุกอย่างดีอย่างน้อย Cat5e ในสภาพที่ดี

ดิสก์

  1. ตรวจสอบสมาร์ทดูมีสุขภาพดี
  2. การทดสอบความเร็วในการเขียนไปยังดิสก์โดยตรงกับdd if=/dev/zero of=write.test bs=256M count=4ต่าง ๆbsและcountการตั้งค่า (128/8, 512M / 2, 1024/1) ผลลัพธ์: ประมาณ 120 MB / s (ขึ้นอยู่กับขนาดบล็อก / จำนวน)

SMB / เอเอฟพี

  1. Benchmarked SMB2, SMB3 และ AFP ต่อกัน ประมาณเท่ากัน
    ดูการอัปเดตด้านล่าง:ใช้วิธีการที่ผิดเพื่อตัดการใช้งาน SMB ของ macOS SMB บน Windows เร็วขึ้นการตั้งค่า SMB ใหม่ที่มาพร้อมกับ macOS 10.11 และ 10.12 อาจเป็นเหตุผล
  2. พยายามปรับแต่งการตั้งค่า SMB รวมถึงตัวเลือกซ็อกเก็ต (ทำตามคำแนะนำนี้)
  3. พยายามตั้งค่าแอ๊คล่าช้าเวอร์ชั่นอื่นและrsync --sockopts=TCP_NODELAY(ความคิดเห็น)

ไม่มีการเปลี่ยนแปลงอย่างมีนัยสำคัญของความเร็วในการเขียน เราคู่การตรวจสอบการตั้งค่าที่ถูกโหลดจริงๆและเราได้รับการแก้ไขที่เหมาะสมsmb.conf

ระบบ

  1. CPU และ RAM ที่รับชม ไม่มีอะไรให้เกิน CPU ประมาณ 20%, RAM ประมาณ 25% ในระหว่างการถ่ายโอน
  2. ทดสอบ NAS เดียวกันกับ DSM 5.xx ในการตั้งค่าเกือบจะทันที ไม่มีการติดตั้งซอฟต์แวร์เพิ่มเติม หมายเหตุ: เรามีสองสิ่งนี้ในสถานที่ต่างกัน พวกมันซิงค์กันผ่าน CloudSync ของ Synology ผลลัพธ์เดียวกัน
  3. ปิดการใช้งานทุกอย่างที่ไม่จำเป็นซึ่งสามารถดึงทรัพยากรระบบ

เราคิดว่านี่เป็นการตั้งค่าเริ่มต้นค่อนข้างไม่มีการดัดแปลงแฟนซีลูกค้าหรือส่วนประกอบเครือข่าย ตามตัวชี้วัด Synology เผยแพร่ NAS ควรดำเนินการ 40 MB / s ถึง 75 MB / s เร็วขึ้น แต่เราไม่สามารถหาคอขวดได้

ลูกค้า / NAS

ไคลเอนต์ Mac คือ MacPro 5,1 (สาย NIC แบบมาตรฐาน, รัน 10.12.3 (16D32)) และ MacBookPro10,1 (อะแดปเตอร์เครือข่ายสายฟ้า, วิ่ง 10.11.6) ห่างจาก NAS เพียงประมาณ 2 เมตรเท่านั้น กิกะบิตสวิตช์เป็นแล็ปท็อป Windows ในการทดสอบ

เรามี NASES สองแห่งนี้ในที่ต่างกันและผลลัพธ์ก็เหมือนกัน วินาทีที่ NAS เป็นค่าเริ่มต้นจากโรงงานไม่มากก็น้อย (ไม่ได้ติดตั้งซอฟต์แวร์ของบุคคลที่สาม) เพียงสอง RAID1, EXT4 ฟอร์แมตดิสก์ที่ซิงค์กับ NAS อื่น ๆ ผ่านทาง Synology CloudSync เราไปไกลเท่าที่เชื่อมต่อกับ NAS โดยตรงโดยไม่ต้องใช้สวิตช์ผลลัพธ์เดียวกัน

การปรับปรุงที่สำคัญ

วิธีที่ใช้ในการตัดการใช้งาน SMB ของ macOS / OS X นั้นผิด ฉันทดสอบมันผ่านเครื่องเสมือนโดยสมมติว่ามันจะใช้ SMB เวอร์ชันของตัวเอง แต่เห็นได้ชัดว่าปริมาณการใช้ข้อมูลถูกส่งไปยัง macOS ที่ทำงานผ่าน SMB เวอร์ชันของมัน

ใช้แล็ปท็อป Windows ตอนนี้ฉันสามารถบรรลุเฉลี่ย 100 MB / s การระบุการนำ SMB ไปใช้ / อัพเดตที่มาพร้อมกับ 10.11 และ 10.12 อาจทำให้ประสิทธิภาพต่ำ แม้ว่ามีการตั้งค่าsigning_requiredno

จะดีมากถ้ามีคนชี้ให้เห็นการตั้งค่าเพิ่มเติมบางอย่างที่อาจเปลี่ยนแปลงด้วยการอัปเดตและอาจส่งผลต่อประสิทธิภาพ

อัปเดต 2 - ข้อมูลเชิงลึกใหม่

AndrewHenleชี้ให้เห็นในความคิดเห็นที่ฉันควรตรวจสอบการจราจรในรายละเอียดโดยใช้ Wireshark สำหรับข้อมูลเชิงลึกเพิ่มเติม

ฉันจึงวิ่งsudo tcpdump -i eth0 -s 65535 -w tcpdump.dumpบน NAS ในขณะที่ถ่ายโอนไฟล์ทดสอบสองไฟล์หนึ่งไฟล์ที่มี 512 MB และอีกไฟล์หนึ่งที่มี 1 GB และตรวจสอบการถ่ายโอนข้อมูลด้วย Wireshark

สิ่งที่ฉันพบ:

  1. ทั้ง OS X และ Windows ดูเหมือนจะใช้ SMB2แม้ว่า SMB3 จะเปิดใช้งานบน NAS (อย่างน้อยก็ตาม Wireshark)
  2. OS X ดูเหมือนว่าจะติดกับMTU แพ็คเก็ตมี 1514 ไบต์นำไปสู่การเพิ่มเครือข่ายค่าใช้จ่ายและส่งแพ็คเก็ต (มองเห็นได้ในการถ่ายโอนข้อมูล)
  3. Windows ดูเหมือนว่าจะส่งแพ็คเก็ตมากถึง 26,334 ไบต์ (ถ้าฉันอ่านข้อมูลได้อย่างถูกต้องโปรดตรวจสอบ) แม้ว่า MTU ไม่ควรอนุญาตเนื่องจากมันตั้งไว้ที่ 1500 บน NAS การตั้งค่าสูงสุดจะเท่ากับ 9000 (Synology ด้วย ใช้การตั้งค่า 1500 ในการทดสอบ)
  4. พยายามที่จะ MacOS บังคับให้ใช้ SMB3 โดยการเพิ่มsmb_neg=smb3_onlyไป/etc/nsmb.confไม่ได้ทำงานหรืออย่างน้อยก็ไม่ได้นำไปสู่การถ่ายโอนได้เร็วขึ้น
  5. การรันrsync --sockopts=TCP_NODELAYด้วยการรวมกันของการตั้งค่า TCP ล่าช้าแอค (0 ถึง 3) ไม่มีผลกระทบ (หมายเหตุ: ฉันรัน tcpdump ด้วยการตั้งค่าเริ่มต้น ack ที่ 3)

ฉันได้สร้าง 4 dumps เป็นไฟล์. csv, 2 ขณะที่คัดลอก 512 MB (test-2.file) และ 2 ขณะที่คัดลอก 1024 MB (test.file) คุณสามารถดาวน์โหลดการส่งออกของ Wireshark ได้ที่นี่ (25.2 MB) พวกเขาซิปเพื่อประหยัดพื้นที่และตั้งชื่อตนเองอธิบาย

อัปเดต 3 - เอาต์พุต smbutil

ผลลัพธ์ของsmbutil statshares -aตามที่ร้องขอโดยharrymcในความคิดเห็น

==================================================================================================
SHARE                         ATTRIBUTE TYPE                VALUE
==================================================================================================
home
                              SERVER_NAME                   server-name._smb._tcp.local
                              USER_ID                       502
                              SMB_NEGOTIATE                 SMBV_NEG_SMB1_ENABLED
                              SMB_NEGOTIATE                 SMBV_NEG_SMB2_ENABLED
                              SMB_NEGOTIATE                 SMBV_NEG_SMB3_ENABLED
                              SMB_VERSION                   SMB_3.0
                              SMB_SHARE_TYPE                DISK
                              SIGNING_SUPPORTED             TRUE
                              EXTENDED_SECURITY_SUPPORTED   TRUE
                              LARGE_FILE_SUPPORTED          TRUE
                              OS_X_SERVER                   TRUE
                              QUERYINFO_NOT_SUPPORTED       TRUE
                              DFS_SUPPORTED                 TRUE
                              MULTI_CREDIT_SUPPORTED        TRUE

--------------------------------------------------------------------------------------------------

หมายเหตุเกี่ยวกับสิ่งนี้: ฉันแน่ใจว่าSIGNING_SUPPORTEDการอยู่trueที่นี่ไม่ได้หมายความว่าการตั้งค่าในการกำหนดค่าจะไม่ทำงาน แต่เพียงว่ามันได้รับการสนับสนุนจาก NAS ฉันได้ตรวจสอบสามครั้งว่าการเปลี่ยนการsigning_requiredตั้งค่าในการกำหนดค่าของฉันมีผลต่อความเร็วในการเขียน (~ 20 MB / s เมื่อปรับจูนแล้ว ~ 60 MB / s เมื่อปิด)

อัพเดท 4 - Samba Wars: ความหวังใหม่

มันรู้สึกค่อนข้างน่าอาย แต่ปัญหาหลักที่นี่อีกครั้ง - ดูเหมือนว่าเป็นการวัด

เปลี่ยนrsync --progress -aค่าใช้จ่ายประมาณ 30 MB / s ความเร็วในการเขียน การเขียนด้วยddการแชร์โดยตรงกับ SMB และการใช้time cp /local/test.file /NAS/test.fileจะเร็วกว่าประมาณ 85-90 MB / s และวิธีที่เร็วที่สุดในการคัดลอกคือ macOS Finder ที่ประมาณ 100 MB / s (ซึ่งเป็นวิธีที่ยากที่สุดในการวัดเนื่องจากไม่มี ตัวบ่งชี้เวลาหรือความเร็ว - ใครต้องการสิ่งนั้นใช่ไหม o_O) เราวัดมันโดยการคัดลอกไฟล์ 1 GB ก่อนแล้วจึงไฟล์ 10 GB โดยใช้นาฬิกาจับเวลา

สิ่งที่เราได้ลองตั้งแต่อัปเดตคำถามนี้ครั้งสุดท้าย

  1. คัดลอกจากไคลเอนต์ Mac ไปยังไคลเอนต์ Mac ทั้งสองมี SSD (MacPro เขียนด้วย 250 MB / s ไปยังดิสก์ของตัวเอง MacBook Pro 300 MB / s) ผลลัพธ์: เล็กน้อย 65 MB / s ผ่านddการเขียนจาก MacBook Pro เป็น MacPro ( rsync25 MB / s) การเห็น 25 MB / s เป็นช่วงเวลาที่เราเริ่มตั้งคำถามกับ rsync ยังคงเป็น 65 MB / s ช้ามาก ดังนั้นการนำ SMB มาใช้กับ macOS จึงดูเหมือนว่า ... น่าสงสัย
  2. พยายามตั้งค่า ack ต่าง ๆ ด้วย dd และ cp - ไม่มีโชค
  3. ในที่สุดเราก็พบวิธีที่จะแสดงรายการตัวเลือก nsmb.conf ที่มีอยู่ทั้งหมด man nsmb.confมันเป็นที่เรียบง่าย โปรดระวังรุ่นออนไลน์ที่ล้าสมัย!

ดังนั้นเราจึงลองตั้งค่าเพิ่มเติมเล็กน้อยในหมู่พวกเขา:

notify_off=yes
validate_neg_off=yes
read_async_cnt=16
write_async_cnt=16
dir_cache_async_cnt=40
protocol_vers_map=4
streams=no
soft=yes

หมายเหตุ: smb_neg=smb3_onlyเป็น - ตามที่ฉันคาดไว้ - ไม่ใช่การตั้งค่าที่ถูกต้อง protocol_vers_map=4ควรเทียบเท่าที่ถูกต้อง

อย่างไรก็ตามการตั้งค่าเหล่านี้ไม่ได้สร้างความแตกต่างให้กับเรา

คำถามใหม่ได้อย่างรวดเร็ว

  1. เหตุใด rsync จึงเป็นวิธีที่แพงในการคัดลอกหนึ่ง (1!) ไฟล์ มีการซิงโครไนซ์ / เปรียบเทียบที่นี่มีมากเพียงใด tcpdump ไม่ได้ระบุค่าใช้จ่ายที่เป็นไปได้เช่นกัน

  2. ทำไมddและcpช้ากว่าเครื่องมือค้นหา macOS เมื่อโอนไปยังการแชร์ SMB ดูเหมือนว่าเมื่อคัดลอกด้วย Finder จะมีการตอบรับน้อยลงอย่างมากในการสื่อสาร TCP (อีกครั้ง: การตั้งค่า ack เช่นนั้นdelayed_ack=1ไม่สร้างความแตกต่างสำหรับเรา)

  3. ทำไม Windows ดูเหมือนจะเพิกเฉยต่อ MTU ส่งขนาดใหญ่กว่าอย่างมากและดังนั้นจึงแพ็คเก็ต TCP น้อยลงส่งผลให้ประสิทธิภาพดีที่สุดเมื่อเทียบกับทุกอย่างที่เป็นไปได้ผ่าน macOS

นี่คือลักษณะของแพ็กเก็ตจาก macOS (ตลอดเวลา 1514)

"TCP","1514","[TCP segment of a reassembled PDU]"
"TCP","66","445  >  56932 [ACK] Seq=6603 Ack=35239 Win=4505 Len=0 TSval=520980697 TSecr=650208630"

และสิ่งนี้มาจาก Windows (สูงสุด 26334 ขนาดแตกต่างกัน)

"SMB2","1466","Write Request Len:65536 Off:196608 File: test.file"
"TCP","26334","[TCP segment of a reassembled PDU]"
"TCP","7354","[TCP segment of a reassembled PDU]"
"TCP","54","445  >  49220 [ACK] Seq=6831 Ack=267030 Win=4074 Len=0"

คุณสามารถดาวน์โหลด. csv แบบเต็มได้ที่นี่ (25.2 MB) ชื่อไฟล์อธิบายสิ่งที่คัดลอกแล้ว (ระบบปฏิบัติการวิธีการถ่ายโอนและขนาดไฟล์)


SMB ไม่ได้รับการส่งมอบจาก VM เพื่อโฮสต์ระบบปฏิบัติการของ VM, VMs เลียนแบบคอมพิวเตอร์จริงอย่างสมบูรณ์แบบและไม่รู้ว่าถูกจำลองเสมือนจริง อย่างไรก็ตามการจำลองเสมือนแนะนำค่าใช้จ่ายบางอย่างและโดยความจำเป็น VMs ผ่านการสื่อสารเครือข่ายทั้งหมดผ่านโฮสต์ซึ่งอาจไม่ดีพอ
gronostaj

@ gronostaj นั่นคือสิ่งที่ฉันคิดด้วย แต่ฉันคิดว่าผลลัพธ์ความเร็วในการเขียนนั้นใกล้เคียงกันมากเกินไปซึ่งใกล้เคียงกันมากถึง 60 MB / s แล็ปท็อป Windows "ของจริง" ในอีกทางหนึ่งทำ 100 MB / s ในการทำงานต่างๆ แต่ประสิทธิภาพของ VM ไม่ใช่ประเด็นหลักของปัญหาอยู่แล้ว การทดสอบของฉันแนะนำว่าการใช้งาน OS X SMB ในปัจจุบันได้แนะนำการตั้งค่า (อาจเป็น 10.11 และ 10.12) ที่ชะลอการเชื่อมต่อ SMB อย่างรุนแรง แต่ฉันไม่มีเงื่อนงำที่จะดูต่อไปนอกจากเปลี่ยนการเซ็นชื่อ
woerndl

ใช้แล็ปท็อป Windows ตอนนี้ฉันสามารถบรรลุเฉลี่ย 100 MB / s การระบุการนำ SMB ไปใช้งาน / อัพเดตที่มาพร้อมกับ 10.11 และ 10.12 อาจทำให้ประสิทธิภาพต่ำ ในขณะที่ความจริงอาจจะยังมีจำนวนมากของความแตกต่างอื่น ๆ ระหว่างแล็ปท็อปของ Windows นี้และการติดตั้ง OS X ของคุณ (s) ที่เดียวที่ได้รับ 60 MB / วินาที ไดรเวอร์เครือข่ายการตั้งค่าเครือข่ายฮาร์ดแวร์และอื่น ๆ อีกมากมายอาจมีส่วนร่วม ไม่ต้องใช้เวลามากในการกระแทกประสิทธิภาพจาก 100 MB / วินาที - ซึ่งเป็นเพียงแค่ขีด จำกัด ของกิกะบิตอีเธอร์เน็ต - จนถึง 60 MB / วินาที
Andrew Henle

@ AndrewHenle อย่างแน่นอน ฉันจะต้องเพิ่มว่าเราได้ลองกับ Mac สองเครื่อง (MacPro 5,1 และ MacBookPro10,1) และ NAS สองตัวที่เหมือนกัน สร้างผลลัพธ์ที่เหมือนกัน เชื่อมต่อโดยตรงแม้ไม่มีส่วนประกอบเครือข่ายอื่นเช่นสวิตช์ ทำให้มีโอกาสน้อยที่เช่นฮาร์ดแวร์เครือข่ายของ Mac หรือไดรเวอร์มีความรับผิดชอบ แต่ฉันเปิดกว้างสำหรับคำแนะนำใด ๆ เพื่อ จำกัด ปัญหาให้ดียิ่งขึ้น
woerndl

@awenro คุณสามารถจับขนาดแพ็คเก็ตและเวลาอย่างน้อยสำหรับการถ่ายโอนจากแล็ปท็อป Windows ที่เร็วขึ้นและเครื่อง OS X ที่ช้ากว่าได้หรือไม่? ความแตกต่างอย่างน้อยก็จะให้ข้อมูลบางอย่างให้คุณเริ่มต้นด้วย เพียงลางสังหรณ์ แต่การตั้งค่า OS X สำหรับอัลกอริทึมของ Nagle / การรับ TCP ช้ากว่าแล็ปท็อป Windows คืออะไร สิ่งนี้อาจเกี่ยวข้อง: shabangs.net/osx/…
Andrew Henle

คำตอบ:


1
  1. คำถามที่คล้ายกัน แต่มีคำตอบที่น่าสนใจคุณสามารถตรวจสอบกระทู้นี้โดยเฉพาะในความคิดเห็นที่ 5: https://bugzilla.samba.org/show_bug.cgi?id=8512#c5

นี่คือคำพูด "Peter van Hooft" แม้ว่าฉันจะไม่แน่ใจว่าการทดสอบนั้นอิงจากลินุกซ์ใด และเวอร์ชั่นของ rsync ด้วย อย่างไรก็ตาม: 1. เขาให้ความคิดแก่เราในการลอง-ตั้งค่าสถานะแบบกระจายหากสามารถทำได้เพื่อเพิ่มประสิทธิภาพ 2. เขาทดสอบกับโปรโตคอล NFS แต่พบปัญหาความเร็วเท่ากันดังนั้นอาจไม่ใช่โปรโตคอล (SMB2 / 3, AFP และอื่น ๆ ) ด้วยเหตุผล

เราใช้ rsync เพื่อคัดลอกข้อมูลจากเซิร์ฟเวอร์ไฟล์หนึ่งไปยังเซิร์ฟเวอร์อื่นโดยใช้NFS3 เมาท์ผ่านลิงก์ 10Gb เราพบว่าการเพิ่มขนาดบัฟเฟอร์ (เป็นการทดสอบอย่างรวดเร็ว) จะเพิ่มประสิทธิภาพ เมื่อใช้งาน- เบาบางสิ่งนี้จะเพิ่มประสิทธิภาพด้วยปัจจัยห้าสิบจาก 2MBps เป็น 100MBps

  1. นี่เป็นอีกหนึ่งการตรวจสอบที่น่าสนใจเกี่ยวกับประสิทธิภาพของ rsync https://lwn.net/Articles/400489/

LWN.net มีข้อสรุปว่าปัญหาด้านประสิทธิภาพอาจเกี่ยวข้องกับเคอร์เนลแม้บทความจะโพสต์เมื่อปี 2010 และเราไม่สามารถเปลี่ยนแปลงได้บน NAS หรือ MacOS อย่างไรก็ตามบทความนี้ให้เราคิดว่าปัญหาเคอร์เนลอาจเกิดจากการคำนวณchecksum (การคาดเดาของฉัน)

มีสิ่งหนึ่งที่ชัดเจน: ฉันควรอัพเกรดเคอร์เนลบนระบบ Mythtv ของฉัน โดยทั่วไปเคอร์เนล 2.6.34 และ 2.6.35-rc3 ให้ประสิทธิภาพที่ดีกว่าเคอร์เนล 2.6.27 เก่า แต่การแก้ไขหรือไม่ rsync ยังคงไม่สามารถเอาชนะ cp อย่างง่ายที่คัดลอกที่มากกว่า 100MiB / s อันที่จริง rsync ต้องการพลัง CPU มากสำหรับการทำสำเนาโลคอลธรรมดา ที่ความถี่สูงสุด cp ต้องการเวลา CPU 0.34 + 20.95 วินาทีเท่านั้นเมื่อเทียบกับ 70 + 55 วินาทีของ rsync

อ้างถึงความคิดเห็นมีสิ่งนี้:

หมายเหตุว่า rsync มักจะตรวจสอบว่าแต่ละไฟล์โอนถูกสร้างขึ้นอย่างถูกต้องในด้านการรับโดยการตรวจสอบทั้งไฟล์ การตรวจสอบที่ถูกสร้างขึ้นเป็นไฟล์จะถูกโอน

อัปเดต 1 : ความผิดพลาดของฉันคำอธิบายนี้ใช้สำหรับ --checksum ตรวจสอบได้ที่นี่: [ปรับปรุงคำอธิบายของตัวเลือก --checksum] PS ฉันไม่มีชื่อเสียงพอที่จะโพสต์มากกว่า 2 ลิงค์

แต่ฉันไม่สามารถหาคำอธิบายเดียวกันจากหน้า rsync ของมนุษย์ดังนั้นฉันเดาว่ามีคนกำลังพูดถึงด้านล่าง Bold:

Rsync ค้นหาไฟล์ที่ต้องการถ่ายโอนโดยใช้อัลกอริทึม "ตรวจสอบอย่างรวดเร็ว" (โดยค่าเริ่มต้น)ที่ค้นหาไฟล์ที่มีการเปลี่ยนแปลงขนาดหรือในเวลาที่แก้ไขล่าสุด การเปลี่ยนแปลงใด ๆ ในคุณลักษณะที่เก็บรักษาไว้อื่น ๆ (ตามที่ร้องขอโดยตัวเลือก) จะทำในไฟล์ปลายทางโดยตรงเมื่อการตรวจสอบอย่างรวดเร็วบ่งชี้ว่าข้อมูลของไฟล์ไม่จำเป็นต้องได้รับการปรับปรุง

ดังนั้นเปรียบเทียบกับ cp / tar / cat หากเราใช้ rsync เพื่อคัดลอกไฟล์ขนาดเล็กหรือใหญ่มันอาจทำให้เกิดปัญหาประสิทธิภาพการทำงาน แต่เนื่องจากฉันไม่สามารถอ่านซอร์สโค้ดของ rsync ดังนั้นฉันไม่สามารถยืนยันได้ว่านี่คือเหตุผลที่ดีที่สุด

ความคิดของฉันคือการตรวจสอบ:

  1. เวอร์ชัน rsync ใดที่ใช้ในการทดสอบ awenro คุณสามารถอัพเดทเป็นเวอร์ชั่นล่าสุดได้ไหม
  2. ให้ดูว่าเอาต์พุตใดเมื่อใช้ --stats และ -v ด้วย --debug = FLAGS

ธง

- สถานะนี้บอก rsync เพื่อพิมพ์ชุด verbose สถิติในการถ่ายโอนไฟล์ช่วยให้คุณบอกประสิทธิภาพของอัลกอริทึม rsync สำหรับข้อมูลของคุณ

--debug = FLAGS ตัวเลือกนี้ช่วยให้คุณสามารถควบคุมผลลัพธ์ของการดีบักที่ต้องการได้อย่างละเอียด ชื่อแฟล็กแต่ละรายการอาจตามด้วยหมายเลขระดับโดยมี 0 หมายถึงปิดปากเอาต์พุต 1 เป็นระดับเอาต์พุตดีฟอลต์และหมายเลขที่สูงกว่าจะเพิ่มเอาต์พุตของแฟล็กนั้น (สำหรับผู้ที่สนับสนุนระดับที่สูงกว่า) ใช้ --debug = help เพื่อดูชื่อแฟล็กที่มีอยู่ทั้งหมดสิ่งที่เอาต์พุตและชื่อแฟล็กที่ถูกเพิ่มสำหรับการเพิ่มขึ้นแต่ละครั้งในระดับ verbose

ในที่สุดฉันขอแนะนำให้อ่านโพสต์เสริมนี้เพื่อรับความรู้เพิ่มเติม
"วิธีการถ่ายโอนข้อมูลจำนวนมากผ่านเครือข่าย" moo.nac.uci.edu/~hjm/HOWTO_move_data.html


คุณสามารถใส่ข้อมูลที่เกี่ยวข้องที่นี่ได้ไหม?
bertieb

สิ่งนี้อาจตอบคำถามในทางทฤษฎี แต่ควรรวมส่วนสำคัญของคำตอบไว้ที่นี่และจัดเตรียมลิงก์สำหรับการอ้างอิง
Stephen Rauch

0

Rsync / ssh เข้ารหัสการเชื่อมต่อ smb ไม่ถ้าฉันจำได้อย่างถูกต้อง หากเป็นเพียงไฟล์เดียวระบบหนึ่งอาจอ่านไฟล์นั้นไม่ได้ นอกจากนี้โปรดทราบว่าการมี MTU เหนือ 1514 คุณต้องเปิดใช้งานแพ็กเก็ต "giants" / "Jumbo Frames" ความจริงที่ว่าแพ็กเก็ตที่ต้องตัดต่ออาจมีความหมายว่ามีค่าใช้จ่ายในการ "แพ็คเก็ต" ใหม่ สิ่งที่สองที่ควรทราบก็คือต้องเปิดใช้งาน "ไจแอนต์" / "จัมโบ้เฟรม" ที่ปลายทั้งสองและทุกสิ่งระหว่างนั้น

1514 เป็นเฟรม Ethernet ปกติ 6k-9k frames เรียกว่า giants หรือ "Jumbo Frames" ขึ้นอยู่กับระบบปฏิบัติการ / แอพพลิเคชั่น

ฉันเฉลี่ย 80MB / s ระหว่าง NAS ของฉัน (พีซีที่มี VM หนึ่งใน VM คือ NAS) และสถานีของฉัน (พีซี) ที่มี sftp (ใช้ sshfs) [ไจแอนต์ไม่ได้เปิดใช้งาน] และอุปกรณ์ในระหว่างนั้นคือ microtik 2011 ชิปสวิตช์ tru เท่านั้น)

โปรดจำไว้ว่า MTU นั้นมีการเจรจากันระหว่างสองจุดและตามเส้นทางคุณอาจมี MTU หลายตัวที่ความจุต่างกันและ MTU นั้นจะต่ำที่สุด

แก้ไข: SMB ไม่ได้มีประสิทธิภาพมากสำหรับการถ่ายโอนไฟล์

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