ประสิทธิภาพต่ำทั้ง iSCSI และ AoE


9

เรากำลังมองหาที่จัดเก็บข้อมูลความเร็วที่เป็นกันเอง เนื่องจากงบประมาณต่ำเราจึงตัดสินใจใช้ซอฟต์แวร์ iSCSI หรือ AoE เป้าหมาย ก่อนที่เราจะเปลี่ยนโครงสร้างพื้นฐานการผลิตของเราเรากำลังทำการทดสอบเพื่อเลือกเทคโนโลยีที่ดีที่สุด

สำหรับการทดสอบเราใช้:

  • ฟูจิตสึซีเมนส์ RX200 S4 เป็นเป้าหมาย
  • Fujitsu Siemens RX200 S4 เป็นผู้ริเริ่ม
  • NetGear จัดการสวิตช์ 1GBit
  • onic NICs (Broadcom w / TOE), EdiMax NICs, Broadcom NICs w / TOE - ทั้งหมด 1GBit
  • เซิร์ฟเวอร์เป้าหมายใช้คอนโทรลเลอร์ QLogic พร้อมไดรฟ์ WD WD Blue ขนาด 6 2TB
  • ทั้งระบบปฏิบัติการเป้าหมายและตัวเริ่มต้นคือ Ubuntu 16.04 LTS พร้อมอัปเดตทั้งหมด สวิทช์ทุ่มเทเพื่อการจัดเก็บ เราทดสอบพันธบัตรและมัลติพา ธ

ปัญหาของเราคือความเร็วในการอ่านต่ำ สำหรับการทดสอบเราใช้ddและไฟล์ 40-100GB

  • การอ่านและเขียนบนโลคัลบนเซิร์ฟเวอร์เป้าหมายมากกว่า 300MB / s
  • การเขียนไปยังเซิร์ฟเวอร์โดย iSCSI หรือ AoE มากกว่า 200MB / s ซึ่งเป็นที่น่าพอใจสำหรับเรา
  • อ่านจากเซิร์ฟเวอร์อยู่เสมอ 95-99MB / s

เราได้ลอง ietd, aoetools, LIO เราใช้พันธบัตรของ 2 NIC: balance-rr และ LACP, multipathing กับ rr ใช้เฟรมปกติและจัมโบ้ ในที่สุดเราก็ทำการเชื่อมต่ออีเธอร์เน็ตโดยตรงระหว่างเป้าหมายและโฮสต์ (ไม่มีสวิตช์)

การทดสอบทั้งหมดให้ผลลัพธ์ที่เหมือนกันน้อยกว่า (แน่นอนว่าการใช้ NIC ทั่วไปที่ไม่มี TOE และ iSCSI ให้ผลลัพธ์ที่แย่กว่า 20-30%)

การทดสอบเครือข่ายด้วย iperf มีการถ่ายโอนข้อมูลประมาณ 200MB / s (2GBit) การดูการใช้งาน NIC ของเป้าหมายด้วย bmon แสดงให้เห็นว่ามีการใช้งานอุปกรณ์ทั้งสองเท่ากัน (แต่ละอันประมาณ 50MB / s สำหรับการอ่านประมาณ 100MB / s สำหรับการเขียน)

เนื่องจากเราไม่มีโชคเราจึงตัดสินใจใช้ NIC ตัวที่สาม (แน่นอนว่าทั้งสองด้าน) ผลลัพธ์ที่ได้ก็แปลก:

  • 2 นิคส์ - 50MB / s แต่ละรายการ
  • 3 นิคส์ - 33MB ต่อวินาที

มีข้อ จำกัด ของซอฟต์แวร์เป้าหมายที่ปิดใช้งานเอาต์พุตสูงกว่า 1GBit / s หรือไม่

เราทำอะไรผิด


5
10GbE ราคาถูกพอวันนี้ หากคุณต้องการแบนด์วิดธ์มากขึ้น (ซึ่งคุณอาจไม่ได้) นั่นคือเส้นทางที่แนะนำ
ewwhite

1
10 GbE จะไม่ช่วย ATAoE เป็นโปรโตคอล Ethernet ที่ไม่มีประสิทธิภาพ โดยเฉพาะอย่างยิ่งสำหรับเฟรมจัมโบ้!
BaronSamedi1958

1
ฉันหมายถึง iSCSI ATAoE นั้นตายแล้วและไม่ควรใช้สำหรับสิ่งนี้
ewwhite

คำตอบ:


11

ในการบีบประสิทธิภาพสูงสุดออกจากที่เก็บข้อมูลที่เชื่อมต่อกับ iSCSI คุณควรใช้ Jumbo Frames และ MPIO (ไม่ใช่ LACP) ขอแนะนำ RDMA / iSER หากคุณสามารถทำได้

AOE (ATA ผ่านอีเธอร์เน็ต) เก่าและไม่น่าเชื่อ เราได้กำจัด Coraid มาหลายปีแล้ว เราใช้ StarWind https://www.starwindsoftware.com/เนื่องจาก iSCSI กำหนดเป้าหมายมาระยะหนึ่งแล้ว StarWind ขอให้เราย้าย Coraid ออกไปยังพื้นที่เก็บข้อมูลที่เราสามารถทำได้

ตอนนี้เราทำได้ดีมากกับ iSCSI ที่จัดทำโดย StarWind และใช้ Windows, ESX และ SCST http://scst.sourceforge.net/บน Linux ในฐานะผู้ริเริ่ม ด้วย RDMA / iSER มันทำได้สูงถึง 10 Gbit จนถึงตอนนี้มีความสุขมาก


6

ความคาดหวังของคุณเกี่ยวกับการทำงานของการรวมลิงก์ Ethernet ไม่ถูกต้อง

วิธีการรวมทั้งหมดนอกเหนือจาก balance-rr (เช่น: วิธีการทั้งหมดที่มีโหมด> 0) ไม่ให้ปริมาณการเชื่อมต่อเดี่ยวที่มากขึ้น แต่จะเพิ่มแบนด์วิดท์ที่มีทั้งหมดเมื่อสร้างการเชื่อมต่อหลายครั้งจาก / ไปยังโฮสต์ที่ได้รับผลกระทบ กล่าวอีกนัยหนึ่ง LAG / LACP จะไม่ให้ผลประโยชน์ใด ๆ แก่คุณสำหรับสถานการณ์การเชื่อมต่อเดียวนี้

วิธีการรวมเพียงอย่างเดียวที่สามารถให้ปริมาณงานเซสชั่นครั้งเดียวมากกว่าที่คุณสามารถมีได้ในอินเทอร์เฟซเดียวคือbalance-rrซึ่งกระจายแพ็คเก็ตในรูปแบบโรบิน คุณต้องตั้งค่าbalance-rr ทั้งบนตัวเริ่มต้นและเป้าหมาย อย่างไรก็ตามใหญ่จับเป็นที่ว่านี้เป็นส่วนใหญ่ขึ้นอยู่กับสวิทช์

อย่างไรก็ตามถ้าคุณตั้งค่าเป้าหมายและตัวเริ่มต้นเป็นดุล -rr การเชื่อมต่อเครื่องทั้งสองโดยตรงควรเพิ่มประสิทธิภาพให้คุณ ถ้าไม่คุณสามารถโพสต์iperfด้วย balance-rr และทั้งสองเครื่องเชื่อมต่อโดยตรง (ไม่มีสวิตช์) ได้หรือไม่? นอกจากนี้โปรดโพสต์ddคำสั่งที่แน่นอนที่คุณใช้สำหรับการเปรียบเทียบ


2

หมายเหตุ: ฉันพูดถึง iSCSI ที่นี่เท่านั้น ฉันไม่มีประสบการณ์กับ AoE เกินกว่าที่จะอ่านเกี่ยวกับเรื่องนี้และฉันจะไม่นำไปใช้ในโครงสร้างพื้นฐานใหม่ใด ๆ (มันหมดอายุแล้ว)

อย่าใช้ balance-rr สำหรับสิ่งอื่นใดนอกจากโปรโตคอลแบบจุดต่อจุดที่เฉพาะเจาะจง มันมีประสิทธิภาพที่น่ากลัวเมื่ออยู่ภายใต้การโหลดเกือบทุกชนิดในโลกแห่งความเป็นจริงและทำให้เกิดปัญหาเครือข่าย (เช่นกระวนกระวายใจมาก) ไม่ใช้กับสวิตช์แน่นอน

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

รู้สึกอิสระที่จะผูกมัดด้านเป้าหมายด้วย LACP ต่อเส้นทาง (เช่นในสองพันธะสำหรับสองเส้นทางรวมเป็นสี่ NICs เป็นตัวอย่างการกำหนดค่าพอร์ตเป้าหมาย) วิธีนี้ใช้งานได้ดีและสามารถปรับสมดุลการเชื่อมต่อของผู้เริ่มต้นหลายรายที่ใช้เส้นทางเดียวกัน ใช้เฟรมขนาดใหญ่และ iSER ด้วยถ้าเป็นไปได้ การใช้ LACP บนเป้าหมายจะสร้างความสมดุลการเชื่อมต่อกับแต่ละเส้นทางระหว่าง NIC หลายตัว

การใช้ LACP บนตัวเริ่มต้นจะมีผลก็ต่อเมื่อมันทำการเชื่อมต่อพอร์ทัลเป้าหมายจำนวนมากที่มีการใช้งานพร้อมกัน (ไม่ใช่เรื่องทั่วไปสำหรับปริมาณงานใด ๆ ) แม้ว่าคุณจะใช้ LACP อย่างมีประสิทธิภาพต่อเส้นทางบนตัวเริ่มต้นมันก็จะกลายเป็นฝันร้ายในการเดินสายเคเบิลเพื่อใช้งาน (ตัวอย่าง) ผ้าเพิ่มเติมสี่รายการต่อกล่องแต่ละกล่อง หากคุณต้องการปริมาณมากกว่า ~ 2Gib / s ในตัวเริ่มต้นเดียวให้พิจารณา 10GiB / s ethernet


1

การตอบกลับส่วนใหญ่เกี่ยวกับ AoE นั้นไม่ถูกต้องทั้งหมดเป็นการต่อต้านและแสดงให้เห็นถึงการขาดความรู้และประสบการณ์ของ AoE ก่อนอื่นก็ไม่ตาย CORAID เป็นผู้ขายที่อยู่เบื้องหลัง AoE และพวกเขาเริ่มต้นใหม่เป็น "SouthSuite" ในขณะที่ยังคงเครื่องหมายการค้า CORAID พวกเขาเป็นนักพัฒนาเดียวกัน พวกเขากำลังสร้างผลิตภัณฑ์ใหม่และสนับสนุนของเก่าส่วนใหญ่ พวกเขากำลังผลักดันการพัฒนา AoE ไปข้างหน้าเช่นกันเนื่องจากรายการจดหมายทางเทคนิคแบบเปิดของพวกเขาแสดงให้เห็นอย่างชัดเจน ตรวจสอบเว็บไซต์มันเป็นข้อมูลล่าสุดและบอกเล่าเรื่องราวทั้งหมดในหน้าประวัติ

บางคนกล่าวว่า AoE จะไม่ได้รับประโยชน์จากเฟรมจัมโบ้และก็ผิดพลาดเช่นกัน ได้รับการสนับสนุนหลังจากเวอร์ชั่น 13 ของ 'vbladed' เปิดตัว คุณต้องปรับแต่ง MTU ของคุณเพื่อรองรับขนาดเฟรมใหม่ แต่ไม่เช่นนั้นจะใช้งานได้ดี

iSCSI ทำงานในเลเยอร์ -5 ของรุ่น OSI การขนส่งตามปกติคือ TCP ที่ช่วยให้คุณแก้ไขข้อผิดพลาด (เนื่องจาก checksums ใน TCP) และช่วยให้คุณกำหนดเส้นทางการรับส่งข้อมูลผ่าน IP ที่เลเยอร์ -3 นั่นเป็นเรื่องที่ข้อดีของ iSCSI หยุด มันเป็นโลกแห่งการแสดงที่ยอดเยี่ยมมากเมื่อคุณเปรียบเทียบกับ FCP, AoE หรือ FCoE ฉันขอเชิญคุณมาที่ google“ การเปรียบเทียบประสิทธิภาพ iscsi” สำหรับการแสดงสยองขวัญ

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

การรวม 802.3ad จะไม่เพิ่มปริมาณการรับส่งข้อมูลเดียวของคุณอย่างมากแม้ในสถานการณ์รอบตัว นอกจากนี้ยังจะทำให้การกำหนดค่าเครือข่ายของคุณซับซ้อนและให้โอกาสใหม่ ๆ แก่คุณในการยิงตัวเองโดยไม่เข้าช่วง PDU หรือกำหนดค่าลิงค์ Cisco VPC ของคุณให้ผิดเพื่อสนับสนุนสถานะการทำงานที่ใช้งานอยู่ อย่าใช้ LACP กับ AoE ปล่อยให้มันจัดการกับ multipathing และมัลติเพล็กซ์ของตัวเอง AoE รุ่นที่ใหม่กว่าจัดการกับสิ่งนี้ได้อย่างสวยงามและในกรณีส่วนใหญ่มีความสง่างามมากกว่าแม้แต่ FCP เนื่องจากเป็นแบบอัตโนมัติทั้งหมด พอร์ตอีเธอร์เน็ตเพิ่มเติมช่วยเพิ่มแบนด์วิดท์และความยืดหยุ่นให้คุณ หากคุณกระจายพอร์ตของโฮสต์ & initiator Ethernet ไปที่สวิตช์หลายตัวนั่นอาจทำให้เกิดความซ้ำซ้อนมากขึ้น ไม่จำเป็นต้องกำหนดค่าโหมดการเชื่อม นอกจากนี้อย่าเรียกใช้ IP บนอินเทอร์เฟซเดียวกับที่คุณใช้สำหรับ AoE

ในระยะสั้นอย่าฟังนักเลงชาว AoE พวกเขาฟังดูเหมือนว่าพวกเขาไม่มีประสบการณ์มากนักและกำลังขี่คลื่นอินเทรนด์ หลีกเลี่ยงฝูง ไปกำหนดค่าร้านค้าสำรองด้วยการดึงข้อมูลล่วงหน้าแบบปรับด้วยมือและคุณอาจเห็นปริมาณการอ่านของคุณเพิ่มขึ้น ปล่อยการใช้โปรโตคอลการรวมและรันการกรีดร้องจาก iSCSI สิ่งสุดท้ายสิ่งหนึ่งหยุดใช้ 'dd' ไม่ใช่การทดสอบที่ยอดเยี่ยมและอาจมีเอฟเฟกต์แคชที่ไม่ดี ใช้เครื่องมือมาตรฐานจริงเช่น 'fio', 'iozone' หรือ 'dbench' สิ่งเหล่านั้นให้ผลลัพธ์ที่น่าเชื่อถือมากขึ้น


1

ฉันรู้ว่า LACP ใช้สำหรับการเชื่อมต่อหลายจุด การทดสอบมันเป็นการกระทำที่สิ้นหวัง :)

การทดสอบทั้งหมดเสร็จสิ้นด้วย balance-rr และ NIC สองตัว

การเขียนไปยังเป้าหมาย iSCSI:
dd if = / dev / ศูนย์ของ = / mnt / zero.bin bs = 1M นับ = 2000
2000 + 0 przeczytanych recordów
2000 + 0 zapisanych recordów
2097152000 bytes (2,1 GB, 2,0 GiB) , 10,1093 s, 207 MB / s การ

อ่านจาก iSCSI เป้าหมาย:
dd if = / mnt / zero.bin ของ = / dev / null bs = 1M
2000 + 0 บันทึกที่ผ่านมา
2000 +0 zapisanych
recordów 2097152000 bytes (2,1 GB คัดลอก, 2,0 GiB) คัดลอก, 16,1684 s, 130 MB / s

ความเร็วเครือข่าย:
iperf -c 172.16.10.80
------------------------ ------------------------------------
ลูกค้าเชื่อมต่อกับ 172.16.10.80, พอร์ต
TCP ขนาดหน้าต่าง5001 TCP: 325 KByte (ค่าเริ่มต้น)
--------------------------------------------- ---------------
[3] local 172.16.10.70 พอร์ต 37024 เชื่อมต่อกับ 172.16.10.80 พอร์ต 5001
[ID] Interval Transfer Bandwidth
[3] 0.0-10.0 วินาที 2.30 GBytes 1.98 Gbits / วินาที

การทดสอบกับ iperf และ jumbo frames ให้ผลลัพธ์เดียวกัน

ฉันได้รับความเร็วในการอ่านโดยใช้งานบน initiator:
hdparm -a 2048 / dev / dm-1
ก่อนหน้านี้มันเป็น 256 และความเร็วในการอ่านคือ 96MB / s
เป้าหมายของฉันคือการบรรลุความเร็วในการอ่านประมาณ 200MB / s

แก้ไข:
1. เราไม่ใช้ LACP - เป็นการทดสอบครั้งเดียว
2. การทดสอบกับ balance-rr และ MPIO ให้ผลลัพธ์เหมือนกันทุกประการ Multipathing ทดสอบกับ NICs ในซับเน็ตที่แตกต่างกัน
3. การเพิ่ม NIC เพิ่มเติมไม่ได้เพิ่มความเร็วในการอ่าน แต่ลดการใช้ NIC แต่ละตัวเท่านั้น
4. เราคิดว่าปัญหามีข้อ จำกัด บางประการ (ไดรเวอร์โมดูล) ที่ไม่อนุญาตให้อ่านเร็วขึ้น แต่ฉันไม่แน่ใจว่ามันเป็นเป้าหมายหรือด้านผู้ริเริ่ม


แก้ไข 2: เพิ่งทำการทดสอบเพิ่มเติม: กำหนดค่าโฮสต์เดียวกันเป็นเป้าหมายและริเริ่มเพื่อกำจัดปัญหาฮาร์ดแวร์เครือข่าย ฉันช็อค: ความเร็วในการอ่านเท่ากันทุกประการ! 130 MB / s! การเขียนคือ 227 MB / s


คุณต้องเปิดใช้งานการเชื่อมต่อหลายครั้งต่อเซสชันเพื่อให้ได้รับจาก LACP เมื่อคุณใช้ iSCSI No mc / s = ไม่มีประสิทธิภาพเพิ่มขึ้น scst.sourceforge.net/mc_s.htmlและstarwindsoftware.com/blog/…อาจช่วยได้
BaronSamedi1958

-2

วิธีที่คุณได้รับการกำหนดค่าของ Nic เป็นบัฟเฟอร์ทั้งหมดตั้งค่าอย่างถูกต้องคุณได้จัดสรร ram เพียงพอในบัฟเฟอร์เครือข่าย ยังไม่ใช้การเชื่อมที่นี่คุณสามารถใช้ 2 ช่องทาง iscsi และ multipath บนผู้เริ่มต้นเช่นเดียวกับ ATAoE ผู้เริ่มต้น multipaths ผ่านทางชั้นวางและ lun ID บนเส้นทางใด ๆ


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