SSD (Intel 530) ความเร็วในการอ่าน / เขียนช้ามากเมื่อใช้ RAID 10


11

คำอธิบาย:

เรามีเซิร์ฟเวอร์:

  • รุ่น: HP ProLiant DL160 G6
  • 4 x 240GB SSD (RAID-10)
  • 72GB DDR3 RAM
  • 2 x L5639
  • HP P410 RAID Controller (256MB, V6.40, เวอร์ชั่น Rom: 8.40.41.00)

ไดรฟ์ SSD นั้นเป็นรุ่นใหม่ 2.5 "Intel 530 พร้อมความเร็วในการอ่าน 540MB / s และความเร็วในการเขียน 490MB / s

  • CentOS 6
  • ระบบไฟล์ ext4

แต่นี่คือผลการทดสอบความเร็วในการอ่านจากการจู่โจม 10:

hdparm -t /dev/sda

/dev/sda:
 Timing buffered disk reads:  824 MB in  3.00 seconds = 274.50 MB/sec
[root@localhost ~]# hdparm -t /dev/mapper/vg_localhost-lv_root

/dev/mapper/vg_localhost-lv_root:
 Timing buffered disk reads:  800 MB in  3.01 seconds = 266.19 MB/sec

และนี่คือเพื่อความเร็วในการเขียน:

dd bs=1M count=512 if=/dev/zero of=test conv=fdatasync
512+0 records in
512+0 records out
536870912 bytes (537 MB) copied, 4.91077 s, 109 MB/s

เราหวังว่าจะมีความเร็วในการอ่าน 1GB พร้อม RAID 10 แต่ 270MB นั้นไม่ได้เป็นความเร็วของดิสก์เดียว!

คำถาม:

  1. ทำไมมันช้าจัง
  2. เป็นเพราะคอนโทรลเลอร์ RAID หรือไม่

อัปเดต 1 - ความเร็วอ่าน / เขียนเหมือนกัน:

หลังจากเปลี่ยนการตั้งค่าบางอย่างตามที่ระบุไว้ในคำตอบฉันมีผลลัพธ์ด้านล่าง:

(ใครรู้ว่าทำไมมันถึงแสดง 4GB แทน 400MB เป็นความเร็วในการอ่าน?!)

แก้ไข: ดูเหมือนคำสั่งผิดและเราควรใช้ -s144g สำหรับหน่วยความจำจำนวนนี้นั่นคือสาเหตุที่มันแสดง 4GB (ตามที่แนะนำในความคิดเห็นโดย ewwhite)

[root@192 ~]# iozone -t1 -i0 -i1 -i2 -r1m -s56g
        Iozone: Performance Test of File I/O
                Version $Revision: 3.408 $
                Compiled for 64 bit mode.
                Build: linux

        Record Size 1024 KB
        File size set to 58720256 KB
        Command line used: iozone -t1 -i0 -i1 -i2 -r1m -s56g
        Output is in Kbytes/sec
        Each process writes a 58720256 Kbyte file in 1024 Kbyte records

        Children see throughput for  1 initial writers  =  135331.80 KB/sec
        Children see throughput for  1 rewriters        =  124085.66 KB/sec
        Children see throughput for  1 readers          = 4732046.50 KB/sec
        Children see throughput for 1 re-readers        = 4741508.00 KB/sec
        Children see throughput for 1 random readers    = 4590884.50 KB/sec
        Children see throughput for 1 random writers    =  124082.41 KB/sec

แต่hdparm -t /dev/sdaคำสั่งเก่ายังคงแสดง:

ดิสก์บัฟเฟอร์ที่กำหนดเวลาจะอ่าน: 810 MB ใน 3.00 วินาที = 269.85 MB / วินาที

อัปเดต 2 (แพ็คที่ปรับจูนแล้ว) - ความเร็วในการอ่านปัจจุบันคือ 600MB / s:

ในที่สุดก็มีความหวังบางอย่างเราปิดการใช้งานแคชจากตัวควบคุมการโจมตีและทำสิ่งอื่นก่อนหน้านี้โดยไม่มีโชค แต่เพราะเราโหลดเซิร์ฟเวอร์และติดตั้งระบบปฏิบัติการอีกครั้งเราจึงลืมติดตั้ง "tuned-utils" ตามคำแนะนำของ ewwhite ewwhite สำหรับแพ็คเกจสุดยอดเยี่ยมที่คุณแนะนำ)

หลังจากติดตั้งtuned-utilsและเลือกenterprise-storageโปรไฟล์แล้วความเร็วในการอ่านอยู่ที่ ~ 600MB / s + แต่ความเร็วในการเขียนยังช้ามาก (~ 160MB) (:

นี่คือผลลัพธ์สำหรับiozone -t1 -i0 -i1 -i2 -r1m -s144gคำสั่ง:

    Children see throughput for  1 initial writers  =  165331.80 KB/sec
    Children see throughput for  1 rewriters        =  115734.91 KB/sec
    Children see throughput for  1 readers          =  719323.81 KB/sec
    Children see throughput for 1 re-readers        =  732008.56 KB/sec
    Children see throughput for 1 random readers    =  549284.69 KB/sec
    Children see throughput for 1 random writers    =  116389.76 KB/sec

แม้จะมีhdparm -t /dev/sdaคำสั่งเรา:

ดิสก์บัฟเฟอร์ที่กำหนดเวลาจะอ่าน: 1802 MB ใน 3.00 วินาที = 600.37 MB / วินาที

คำแนะนำสำหรับความเร็วในการเขียนช้ามาก?

อัปเดต 3 - ข้อมูลบางอย่างที่ร้องขอในความคิดเห็น:

ความเร็วในการเขียนยังต่ำมาก (~ 150MB / s ซึ่งไม่แม้แต่ 1 ใน 3 ของดิสก์เดียว)

ผลผลิตสำหรับdf -hและfdisk -l:

[root@192 ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1       441G  3.2G  415G   1% /
tmpfs            36G     0   36G   0% /dev/shm


[root@192 ~]# fdisk -l
Disk /dev/sda: 480.0 GB, 480047620096 bytes
255 heads, 63 sectors/track, 58362 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00040c3c

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1       58363   468795392   83  Linux

สำหรับการทดสอบนี้คุณควรระบุจำนวน RAM ที่ติดตั้งในเซิร์ฟเวอร์เป็นสองเท่า
ewwhite

คุณช่วยบอกเราเกี่ยวกับเวอร์ชั่นเฟิร์มแวร์ของคอนโทรลเลอร์ Smart Array P410 ของคุณได้ไหม?
ewwhite

@ ขาวขอบคุณสำหรับความคิดเห็นของคุณเวอร์ชั่นของเฟิร์มแวร์คือ p410 (256MB, V6.40) และเวอร์ชั่น rom คือ 8.40.41.00 คำสั่ง iozone ของฉันผิดหรือเปล่า? ถ้าใช่คุณช่วยบอกคำสั่งที่ถูกต้องให้ฉันทดสอบได้ไหม? เพราะทุกอย่างที่ฉันลองฉันจะได้ความเร็วในการอ่านเป็น GB
Ara

มีบางอย่างผิดปกติที่นี่ คุณได้รับเพียง ~ 122MB / s การเขียนเท่านั้น ตัวเลข 4GB / s ที่คุณเห็นเป็นการดำเนินการจากแคชดังนั้นสตริงคำสั่งของคุณควรมีลักษณะiozone -t1 -i0 -i1 -i2 -r1m -s144gดังนี้ :(
ewwhite

@ whitewhite ขอบคุณมากความเร็วในการอ่านตอนนี้ดีมาก (รายละเอียดตามที่อัปเดตในคำถามของฉัน) แต่ความเร็วในการเขียนค่อนข้างน่าผิดหวังคุณมีข้อเสนอแนะสำหรับเรื่องนี้หรือไม่?
Ara

คำตอบ:


16

ในขณะที่คำตอบอื่น ๆ ที่นี่มีบางประเด็นปัญหาของคุณเกิดจากข้อ จำกัด ของแพลตฟอร์มและการกำหนดค่าระบบปฏิบัติการ:

  • คุณผ่าน จำกัด โดยการใช้งานของผู้บริโภค SATA SSDs บนอาร์เรย์ควบคุม ดิสก์ SATA ทำงานที่ 3.0Gbps (3G) บนคอนโทรลเลอร์เหล่านี้มากกว่า 6.0Gbps (6G) นั่นเป็นอุปสรรคที่ส่งผลต่อความเร็วในการอ่านของ Intel SSD ของคุณ 300MB / s หรือน้อยกว่าต่อไดรฟ์

  • คอนโทรลเลอร์อัจฉริยะ Array P410 มีข้อกำหนดเฉพาะและแนวทางปฏิบัติที่ดีที่สุดเมื่อใช้กับ SSD สรุปแล้วคอนโทรลเลอร์มีความสามารถ 50,000 IOPS ปิดการใช้งานตัวเร่งความเร็วอาร์เรย์สำหรับไดรฟ์ข้อมูล SSD และประสิทธิภาพการทำงานสูงสุดที่ไดรฟ์ ~ 6

  • ประสิทธิภาพของดิสก์ไม่เกี่ยวกับความเร็วในการอ่าน / เขียนตามลำดับ ลองเปรียบเทียบกับเครื่องมือที่เหมาะสมเช่น iozoneหรือน่ารัก ++ คุณยังได้รับสิทธิประโยชน์ I / O แบบสุ่มของไดรฟ์หลายตัว

  • ที่ระดับระบบปฏิบัติการให้ติดตั้งแพ็กเกจtuned-utilsและตั้งค่าโปรไฟล์เป็นenterprise-performanceเพื่อลบอุปสรรคการเขียนจากระบบไฟล์ของคุณและตั้งค่าลิฟท์ I / O ที่เหมาะสมสำหรับการตั้งค่าของคุณ คำถามนี้ครอบคลุมในคำถามอื่นด้วยเช่นกัน

  • ดูเหมือนว่าคุณกำลังใช้ LVM ที่สามารถมีผลกระทบเช่นกัน ...

นี่คือรายงาน iozone สำหรับ G7 ProLiant ที่รันด้วยSSD สำหรับผู้บริโภค 6G SATA SSD สี่ตัว (ลดลงเป็นความเร็ว 3G) บนคอนโทรลเลอร์ HP Smart Array P410 RAID เดียวกัน

คุณควรเห็นการเขียน ~ 470MB / s และอ่าน 650MB / s +

[root@mdmarra /data/tmp]# iozone -t1 -i0 -i1 -i2 -r1m -s56g
        Iozone: Performance Test of File I/O
                Version $Revision: 3.394 $
                Compiled for 64 bit mode.
                Build: linux 

        Record Size 1024 KB
        File size set to 58720256 KB
        Command line used: iozone -t1 -i0 -i1 -i2 -r1m -s56g
        Output is in Kbytes/sec
        Each process writes a 58720256 Kbyte file in 1024 Kbyte records

        Children see throughput for  1 initial writers  =  478209.81 KB/sec
        Children see throughput for  1 rewriters        =  478200.84 KB/sec
        Children see throughput for  1 readers          =  677397.69 KB/sec
        Children see throughput for 1 re-readers        =  679523.88 KB/sec
        Children see throughput for 1 random readers    =  437344.78 KB/sec
        Children see throughput for 1 random writers    =  486254.41 KB/sec

ขอบคุณมากรุ่นคือ "DL160 G6" ใช่มี backplane ที่เกี่ยวข้อง :( ฉันจะมีความสุขกับ 600MB ในที่นี่ แต่ 270MB ช้าจริง ๆ สิ่งที่คุณคิดว่าฉันควรทำซอฟต์แวร์บุกช่วยไหม
Ara

2
โอเคด้วย DL160 G6 คุณควรมีสายเคเบิลสองเส้นจากตัวควบคุม RAID ไปยังด้านหลังไดรฟ์ ... 8 ไดรฟ์สล็อต ปัญหาของคุณที่นี่คือปริมาณงานไดรฟ์วิธีการทดสอบและการตั้งค่าเซิร์ฟเวอร์ ลองคำแนะนำอื่น ๆ ที่ฉันระบุไว้ในคำตอบของฉัน
ewwhite

บิตที่น่าสนใจเกี่ยวกับ P410 ที่ทำเพียง 3G บน SATA และแนวทางปฏิบัติที่ดีที่สุดโดยเฉพาะ Mod up (LVM แต่ไม่ควรเป็น hitter ที่หนักในแง่ของผลกระทบด้านลบที่มีการระบุไว้ที่นี่: unix.stackexchange.com/questions/7122/… )
Roman

1
@Ara ไม่มีคอนโทรลเลอร์ 6G SATA สำหรับ ProLiant นั่นคือประเด็น SSD ของคุณจะทำงานที่ความเร็ว 3G บนแพลตฟอร์มนี้เท่านั้นยกเว้นว่าคุณใช้SAS SSD
ewwhite

1
@Ara Software RAID จะเชื่อมต่อกับคอนโทรลเลอร์อื่นเช่น SAS HBA (เช่น LSI 9211-8i) ... จะช่วยให้คุณเห็นแบนด์วิดท์เต็มของดิสก์ แต่มีแง่มุมอื่น ๆ ของประสิทธิภาพ SSD ที่เหนือกว่าความบริสุทธิ์ แบนด์วิธการอ่าน / เขียนตามลำดับ
ewwhite

12

โอ้ที่รักจะเริ่มจากตรงไหนดี?

มีส่วนเกี่ยวข้องมากและคุณต้องมีความเข้าใจทุกอย่าง เพียงแค่โยนดิสก์จำนวนมากกับตัวควบคุม RAID จะไม่ให้ผลลัพธ์ที่คุณต้องการ

ไม่สามารถตอบได้อย่างง่ายดาย แต่อย่างน้อยนี่คือรายการของสิ่งที่คุณต้องดู:

  • คอนโทรลเลอร์จำเป็นต้องมีปริมาณงานหรือไม่? (-> เอกสารข้อมูล)
  • คอนโทรลเลอร์มีแบนด์วิธเพียงพอไปยังโฮสต์หรือไม่ (แม้แต่ที่ v1.0 เนื่องจากเป็น x8)
  • ชิปเซ็ตของระบบมีปริมาณงานเพียงพอ (CPU-Controller) หรือไม่ (ไม่ทราบ)
  • กลยุทธ์การเขียนอะไรที่คุณได้สั่งให้คอนโทรลเลอร์ใช้? ( นี่คือสิ่งที่เป็นไปได้มากที่สุดที่จะกัดคุณ )
  • ทุกอย่างอยู่ในแนวเดียวกัน (เริ่ม Partition, LVs, PVs) หรือไม่
  • ขนาดบล็อกมีความกลมกลืนกันหรือไม่? (ขนาดแถบ RAID, ขนาดบล็อก, บล็อก FS, ... )
  • ระบบไฟล์เหมาะสำหรับการตั้งค่า RAID หรือไม่ (ระดับและขนาดบล็อก)

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


มันยากกว่าที่ฉันคิดจริงๆฉันคิดว่ามันง่ายเหมือนการอัพเกรด RAM Controller ram เป็น 512MB! ขอขอบคุณโรมันให้ฉันตรวจสอบบางสิ่งที่คุณเพิ่งพูดโดยหวังว่าจะพบเหตุผล
Ara

ส่วนใหญ่ข้างต้นเป็นกลยุทธ์การแก้ไขปัญหาที่ถูกต้องสำหรับเคสแบบขอบ แต่ไม่สามารถใช้กับรายละเอียดเฉพาะของการกำหนดค่าโปสเตอร์ดั้งเดิมได้ ตัวควบคุมที่นี่มีปริมาณงานและแบนด์วิธที่จำเป็น, CPU ใช้ได้ดี, ค่าเริ่มต้นของตัวควบคุม RAID ต่ออัตราส่วนแคช 25:75 R / W (ควรปิดการใช้งานทั้งหมดสำหรับการใช้งาน SSD), CentOS6 จัดพาร์ติชันอย่างถูกต้องและมีศักยภาพมากเกินไป ขนาดบล็อก "ประสาน" ปัญหาสามประการที่อยู่ในมือคือดิสก์ 6G ถูกควบคุมความเร็วด้วยความเร็ว 3G อาจมีการเปิดใช้งานอุปสรรคการเขียนระบบไฟล์และลิฟต์ I / O เป็น CFQ เริ่มต้น
ewwhite

1
รูปแบบเซิร์ฟเวอร์โชคไม่ดีที่ไม่ได้ระบุไว้ในคำตอบ เป็นการดีที่จะรู้เกี่ยวกับการควบคุมปริมาณ ฉันคิดว่าอุปสรรคและ CFQ ไม่ได้มีค่าใช้จ่ายมากใน "มาตรฐาน" เฉพาะนี้ แต่ข้อมูลที่มีค่ายังคงอยู่
โรมัน

@Roman ขอโทษฉันไม่ได้กล่าวถึงรูปแบบก่อนหน้านี้ผมขอขอบคุณความช่วยเหลือของคุณฉันพยายามที่ทั้งคุณและคำแนะนำ ewwhite ไปถึง 500-600MB ฉันเดาว่าเป็นความเร็วสูงสุดที่ฉันสามารถเข้าถึงด้วยนี้วงเงิน 3G
Ara

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