ทำไม HDD ของฉันถึงช้ามากในการทดสอบความเร็ว“ 4K”


46

เกิดอะไรขึ้นกับความเร็วของฉันที่ 4K ทำไมช้าจัง หรือมันควรจะเป็นอย่างนั้น?

สกรีนช็อตของมาตรฐาน

ความเร็วนั้นโอเคไหม ทำไมฉันถึงมีความเร็วต่ำถึง 4K


13
นั่นเป็นเรื่องปกติและคาดหวัง "4K" ในบริบทนี้หมายถึงการอ่าน / เขียนแบบสุ่ม (ในบล็อกขนาด 4 กิโลไบต์ดังนั้น "4K") ซึ่ง HDD เชิงกลทำงานได้ดีมาก นั่นคือสิ่งที่คุณต้องการ SSD ดูที่นี่สำหรับคำอธิบายเพิ่มเติมในเชิงลึก
Bob

ใช้ 4Kb เนื่องจากเป็นขนาดปกติของดิสก์คลัสเตอร์และบน HDD ที่ทันสมัยจำนวนมากของเซกเตอร์จริง (โครงสร้างระดับต่ำในดิสก์เอง) นั่นคือจำนวนข้อมูลที่น้อยที่สุดที่จะถูกถ่ายโอนในแต่ละครั้งในการอ่านหรือเขียนแม้ว่าข้อมูลที่ร้องขอนั้นจะเล็กกว่าก็ตาม ที่น่าสนใจที่ไม่มีคำตอบในหน้านี้แม้จะกล่าวถึงกลุ่มหรือภาค
thomasrutter

2
@thomasrutter เพราะมันไม่เกี่ยวข้องกับคำตอบ ส่วนที่สำคัญคือการทดสอบนี้เกี่ยวข้องกับการค้นหาแบบสุ่ม มันไม่เกี่ยวข้อง (ในระดับหนึ่ง) ว่ามีการถ่ายโอนข้อมูลมากน้อยเพียงใดและขนาดของเซ็กเตอร์ของดิสก์นั้นมีขนาดเท่ากันหรือไม่ ส่วนที่สำคัญคือการทดสอบจะถ่ายโอนข้อมูลจำนวนน้อยที่สุดเพื่อวัดหาประสิทธิภาพ
Micheal Johnson

เป็นการทดสอบพาร์ติชันหรือบนดิสก์ทั้งหมดหรือไม่ การทดสอบระดับพาร์ติชันสามารถทำงานได้แย่กว่ามากสำหรับการเข้าถึง 4K หากคุณมีดิสก์ที่มีฟิสิคัล 4K แต่เซกเตอร์โลจิคัล 1K และวางแนวกั้นพาร์ติชันกับเซกเตอร์แบบคร่อม
Toby Speight

เครื่องมือแบ่งพาร์ทิชันที่ทันสมัยมีแนวโน้มที่จะทำให้พาร์ทิชันเริ่มต้นและสิ้นสุดในขอบเขตเซกเตอร์; แม้แต่ 1MB granularity เป็นเรื่องธรรมดาในตอนนี้ ไปเป็นยุคสมัยของ "63 512 ไบต์ไบต์" ซึ่งจะทำให้เกิดปัญหาสำหรับ 4Kb ภาคดั้งเดิม
thomasrutter

คำตอบ:


85

สิ่งที่คุณกำลังพบคือ HDD เชิงกลทั่วไปและหนึ่งในประโยชน์หลักของ SSD: HDD มีประสิทธิภาพการเข้าถึงแบบสุ่มที่แย่มาก

ใน CrystalDiskMark "Seq" หมายถึงการเข้าถึงตามลำดับขณะที่ "4K" หมายถึงการเข้าถึงแบบสุ่ม (ในหน่วยของ 4kB ต่อครั้งเพราะไบต์เดียวจะช้าเกินไปและไม่สมจริง1 )


คำนิยาม

มีสองวิธีที่แตกต่างกันโดยทั่วไปที่คุณอาจเข้าถึงไฟล์ได้

การเข้าถึงแบบลำดับ

การเข้าถึงตามลำดับหมายความว่าคุณอ่านหรือเขียนไฟล์ไม่เกินหนึ่งไบต์หลังจากนั้น ตัวอย่างเช่นหากคุณกำลังดูวิดีโอคุณจะโหลดวิดีโอตั้งแต่ต้นจนจบ หากคุณกำลังดาวน์โหลดไฟล์ไฟล์นั้นจะถูกดาวน์โหลดและเขียนลงดิสก์ตั้งแต่ต้นจนจบ

จากมุมมองของดิสก์ก็เห็นคำสั่งเช่น "บล็อกอ่าน # 1 บล็อกอ่าน # 2 บล็อกอ่าน # 3 ไบต์อ่านบล็อก # 4" 1

การเข้าถึงแบบสุ่ม

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

จากมุมมองของไดรฟ์จะเห็นคำสั่งเช่น "อ่านบล็อก # 56 อ่านบล็อก # 5463 อ่านบล็อก # 14 อ่านบล็อก # 5"

บล็อก

ฉันพูดถึงบล็อกสองสามครั้ง เนื่องจากคอมพิวเตอร์จัดการกับขนาดใหญ่เช่นนี้ (1 MB ~ = 1000000 B) การเข้าถึงต่อเนื่องนั้นไม่มีประสิทธิภาพหากคุณต้องถามไดรฟ์สำหรับแต่ละไบต์ - มีการพูดคุยมากเกินไป ในทางปฏิบัติระบบปฏิบัติการร้องขอบล็อกข้อมูลจากดิสก์ในแต่ละครั้ง

บล็อกเป็นเพียงช่วงของไบต์; ตัวอย่างเช่นบล็อก # 1 อาจเป็นไบต์ # 1- # 512 บล็อก # 2 อาจเป็นไบต์ # 513- # 1024 เป็นต้นบล็อกเหล่านี้มีขนาด 512 ไบต์หรือ 4096 ไบต์ขนาดใหญ่ขึ้นอยู่กับไดรฟ์ แต่แม้หลังจากจัดการกับบล็อกมากกว่าแต่ละไบต์การเข้าถึงบล็อกตามลำดับจะเร็วกว่าการเข้าถึงบล็อกแบบสุ่ม


ประสิทธิภาพ

ลำดับ

การเข้าถึงตามลำดับโดยทั่วไปจะเร็วกว่าการเข้าถึงแบบสุ่ม นี่เป็นเพราะการเข้าถึงแบบลำดับช่วยให้ระบบปฏิบัติการและไดรฟ์ทำนายสิ่งที่จำเป็นต่อไปและโหลดก้อนขนาดใหญ่ล่วงหน้า หากคุณขอบล็อก "1, 2, 3, 4" ระบบปฏิบัติการสามารถเดาได้ว่าคุณต้องการ "5, 6, 7, 8" ถัดไปดังนั้นจึงบอกให้ไดรฟ์อ่าน "1, 2, 3, 4 , 5, 6, 7, 8 "ในครั้งเดียว ในทำนองเดียวกันไดรฟ์สามารถอ่านออกจากการจัดเก็บทางกายภาพในครั้งเดียวมากกว่า "ค้นหา 1, อ่าน 1,2,3,4, ค้นหาถึง 5, อ่าน 5,6,7,8"

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

แผนผังของ HDD internals
ภาพจากhttp://www.realtechs.net/data%20recovery/process2.html

ซึ่งหมายความว่าในเวลาใดเวลาหนึ่งสามารถอ่านเฉพาะบิตของข้อมูลใต้หัวที่ปลายแขน ไดรฟ์ต้องรอสองสิ่ง: ต้องรอให้แขนเลื่อนไปที่วงแหวนด้านขวา ("แทร็ก") ของดิสก์และยังต้องรอให้ดิสก์หมุนไปรอบ ๆ เพื่อให้ข้อมูลที่ต้องการอยู่ภายใต้การอ่าน หัว. นี้เรียกว่าการแสวงหา 2 ทั้งการหมุนและแขนที่เคลื่อนไหวต้องใช้เวลาในการเคลื่อนไหวและไม่สามารถเร่งความเร็วได้มากนักโดยไม่เสี่ยงต่อความเสียหาย

โดยทั่วไปแล้วจะใช้เวลานานมากนานกว่าการอ่านจริง เรากำลังพูดถึง> 5ms เพื่อไปยังตำแหน่งที่ byte ร้องขอในขณะที่การอ่านค่าเฉลี่ยของไบต์ที่แท้จริงอยู่ที่ประมาณ 0.00000625ms ต่อการอ่านไบต์ตามลำดับ (หรือ 0.003125ms ต่อ 512 B บล็อก)

สุ่ม

ในทางกลับกันการเข้าถึงแบบสุ่มไม่มีประโยชน์ในการคาดการณ์ได้ ดังนั้นถ้าคุณต้องการอ่าน 8 ไบต์แบบสุ่มอาจมาจากบล็อก "8,34,76,996,112,644,888,341" ไดรฟ์ต้องไป "ค้นหา 8, อ่าน 8, แสวงหา 8, ค้นหา 34, 34, ค้นหา to76, อ่าน 76, ... " . สังเกตว่ามันต้องการค้นหาอีกครั้งสำหรับทุก ๆ บล็อกไหม? แทนที่จะเป็นค่าเฉลี่ยของ 0.003125ms ต่อบล็อก 512 B ต่อเนื่องตอนนี้มันเป็นค่าเฉลี่ยของ (5ms ค้นหา + อ่าน 0.003125ms) = 5.003125ms ต่อบล็อก นั่นช้ากว่ามากหลายเท่า ในความเป็นจริงหลายพันครั้งช้าลง

SSDs

โชคดีที่เรามีทางออกในขณะนี้: SSD

โซลิดสเตตไดรฟ์ SSD เป็นชื่อที่แสดงถึงโซลิดสเตต นั่นหมายความว่ามันมีชิ้นส่วนที่เคลื่อนไหว ยิ่งกว่านั้นวิธีการจัดวาง SSD หมายความว่ามี (อย่างมีประสิทธิภาพ3 ) ไม่จำเป็นต้องค้นหาตำแหน่งของไบต์ มันอยู่แล้วรู้ว่า นั่นเป็นสาเหตุที่ SSD มีช่องว่างของประสิทธิภาพน้อยกว่าระหว่างการเข้าถึงแบบลำดับและแบบสุ่ม

ยังคงมีช่องว่าง แต่ส่วนใหญ่มาจากการที่ไม่สามารถคาดเดาได้ว่าอะไรจะเกิดขึ้นต่อไปและโหลดข้อมูลนั้นล่วงหน้าก่อนที่จะถูกถาม


1แม่นยำยิ่งขึ้นด้วยไดรฟ์ LBA ระบุไว้ในบล็อกขนาด 512 ไบต์ (512n / 512e) หรือ 4kB (4Kn) เพื่อเหตุผลด้านประสิทธิภาพ นอกจากนี้โปรแกรมจริงแทบไม่ต้องการเพียงไบต์เดียวในแต่ละครั้ง

2 ในทางเทคนิคการค้นหาหมายถึงการเดินทางของแขน การรอให้ข้อมูลหมุนใต้หัวคือเวลาแฝงในการหมุนที่อยู่ด้านบนของเวลาค้นหา

3 โดยทางเทคนิคแล้วพวกเขามีตารางการค้นหาและทำการแมปใหม่ด้วยเหตุผลอื่นเช่นการปรับระดับการสวมใส่ แต่สิ่งเหล่านี้เล็กน้อยมากเมื่อเทียบกับ HDD ...


@ KamilMaciorowski จริง ๆ แล้วฉันคิดใหม่ว่าการทำให้เข้าใจง่ายในขณะนี้เพราะมันจะทำให้การคำนวณหาเวลาอ่าน + อ่านของฉัน โอ้ดี มันไม่สำคัญสำหรับแนวคิด
Bob

คุณควรแก้ไขส่วนที่สุ่มNotice how it needs to look for every single byte?:: แทนที่byteด้วยblock(และเปลี่ยนตัวอย่างตาม) ไดรฟ์ค้นหาส่วน 4k (ซึ่งอาจเพิ่มเติมต่อไปแยกเป็น 512bytes อัน แต่ไม่ต่ำกว่านี้มันไม่ค้นหาระหว่างทุกไบต์! มันจะค้นหาระหว่างทุก ๆ บล็อกถ้าบล็อกถัดไปไม่ถูกต้อง ดิสก์ที่กระจัดกระจาย) และการค้นหา (เลื่อนหัวไปรอบ ๆ แผ่นเสียงและรอให้บล็อกผ่านด้านล่าง) เป็นสิ่งที่ใช้เวลานานมาก (ไม่กี่มิลลิวินาที)
Olivier Dulac

2
dienote ขนาดเล็กถึง 4 kiB / 512B 4kiB ก็มีขนาดของหน้าด้วยเกือบทุกอย่างดังนั้น OS $ มีแนวโน้มที่จะอ่านเต็มบล็อก 4 kiB แม้ว่าไดรเวอร์ LBA จะอ่านใน 512 B ชิ้น นอกจากนี้ฉันไม่คิดว่าปัญหาคือ HDD ต้องการ 'ค้นหา' ไบต์ใด ๆ มากกว่า SDD มากกว่าที่มันต้องหมุนร่างกายเพื่อแก้ไขตำแหน่ง หากคุณเข้าถึงบล็อกอีกครั้งคุณต้องค้นหาอีกครั้งเนื่องจาก HDD กำลังหมุนอย่างต่อเนื่อง การแมปใหม่ของบล็อกน่าจะเป็นผลรอง (และโดยปกติแล้วการบล็อกที่แมปใหม่จะเกิดขึ้นหลังจากที่ได้รับความเสียหายเท่านั้นอย่างไรก็ตามฉันเชื่อว่าจะลดการค้นหาลง)
Maciej Piechotka

(อาจเป็นข้อความด้านข้างที่สมบูรณ์ - ฉันไม่แน่ใจเกี่ยวกับ NAND / NOR แต่อย่างน้อย DDR address ยังไม่ได้สุ่มอย่างสมบูรณ์ตามชื่อที่ระบุ แต่ใช้งานได้ใน 'ระเบิด' ที่อยู่ในกรณีส่วนใหญ่นี่คือ 64 B เนื่องจากเป็น ซีพียูส่วนใหญ่มีขนาด $ line แต่สามารถมีขนาดใหญ่กว่าสำหรับแอปพลิเคชั่นอื่น ๆ )
Maciej Piechotka

1
@OlivierDulac ฉันยังคิดว่าการแนะนำบล็อกอาจสร้างความสับสน แต่ฉันพยายามอธิบาย อัปเดตคำตอบแล้ว
Bob

3

ตามที่ระบุไว้แล้วโดยคำตอบอื่น ๆ "4K" เกือบจะแน่นอนหมายถึงการเข้าถึงแบบสุ่มในบล็อกขนาด 4 KiB

ทุกครั้งที่มีการขอให้อ่านหรือเขียนข้อมูลในฮาร์ดดิสก์ (ไม่ใช่ SSD) มีความล่าช้าที่สำคัญสองประการ:

  • ค้นหาเวลาแฝงสำหรับหัวอ่าน / เขียนเพื่อ "ค้นหา" ไปยังแทร็กแบบวงกลมที่ถูกต้อง (หรือ "รูปทรงกระบอก") บนแผ่นเสียงรวมถึงเวลาใด ๆ ที่จำเป็นสำหรับหัวเพื่อทำให้เสถียรบนแทร็กและซิงโครไนซ์
  • เวลาในการตอบสนองการหมุนสำหรับแผ่นเสียงหมุนใต้หัวอ่าน / เขียนเพื่อหมุนจนส่วนที่ต้องการของแทร็ก ("เซกเตอร์") ผ่านไปทางใต้หัว

ทั้งสองนี้มีระยะเวลาค่อนข้างคงที่สำหรับไดรฟ์ที่กำหนด แสวงหาเวลาแฝงเป็นฟังก์ชั่นว่าสามารถเคลื่อนย้ายหัวได้เร็วแค่ไหนและต้องเคลื่อนย้ายไปไกลแค่ไหนและเวลาแฝงในการหมุนเป็นหน้าที่ของความเร็วในการหมุนของแผ่นเสียง ยิ่งไปกว่านั้นพวกเขาไม่ได้เปลี่ยนแปลงอะไรมากมายในช่วงสองสามทศวรรษที่ผ่านมา ผู้ผลิตเคยใช้เวลาค้นหาโดยเฉลี่ยเช่นในโฆษณา พวกเขาหยุดทำเช่นนั้นเมื่อมีการพัฒนาน้อยหรือไม่มีเลยในพื้นที่ ไม่มีผู้ผลิตโดยเฉพาะอย่างยิ่งในสภาพแวดล้อมที่มีการแข่งขันสูงต้องการให้ผลิตภัณฑ์ของพวกเขาดูไม่ดีไปกว่าคู่แข่ง

ฮาร์ดดิสก์เดสก์ท็อปทั่วไปหมุนที่ 7200 รอบต่อนาทีในขณะที่ไดรฟ์แล็ปท็อปทั่วไปอาจหมุนที่ประมาณ 5000 รอบต่อนาที ซึ่งหมายความว่าในแต่ละวินาทีมันจะผ่านการปฏิวัติ 120 ครั้ง (เดสก์ท็อปไดรฟ์) หรือประมาณ 83 รอบ (แล็ปท็อปไดรฟ์) เนื่องจากโดยเฉลี่ยแล้วดิสก์จะต้องหมุนครึ่งรอบก่อนที่เซกเตอร์ที่ต้องการจะผ่านใต้หัวหมายความว่าเราสามารถคาดหวังให้ดิสก์สามารถให้บริการได้ประมาณสองเท่าของการร้องขอ I / O ต่อวินาทีโดยสมมติว่า

  • การค้นหาทำในขณะที่ดิสก์กำลังหมุน (นี่อาจเป็นทางออกที่ปลอดภัยสำหรับฮาร์ดดิสก์วันนี้ที่ I / O เกี่ยวข้องกับการค้นหา) และการค้นหาเวลาแฝงไม่นานกว่าเวลาแฝงในการหมุนสำหรับ I / O เฉพาะ
  • หรือหัวเกิดขึ้นเหนือถังที่ถูกต้องแล้วทำให้ไดรฟ์ไม่จำเป็นต้องค้นหา (ซึ่งเป็นกรณีพิเศษของข้างต้นโดยมีเวลาแฝงของการค้นหาเป็นศูนย์)

ดังนั้นเราควรคาดหวังว่าจะสามารถดำเนินการตามลำดับ 200 I / O ต่อวินาทีหากข้อมูลที่ถูกขอให้เข้าถึง (สำหรับการอ่านหรือการเขียน) นั้นมีการแปลเป็นภาษาท้องถิ่นค่อนข้างส่งผลให้เวลาแฝงในการหมุนเป็นปัจจัย จำกัด ในกรณีทั่วไปเราคาดว่าไดรฟ์จะสามารถทำงานได้ตามลำดับที่ 100 I / O ต่อวินาทีหากข้อมูลถูกกระจายไปทั่วแผ่นเสียงหรือจานซึ่งต้องการการค้นหามากและทำให้เวลาในการค้นหานั้นเป็นปัจจัย จำกัด . ในเงื่อนไขการจัดเก็บนี่คือ " IOPSประสิทธิภาพ "ของฮาร์ดดิสก์นี่ไม่ใช่ประสิทธิภาพต่อเนื่องของ I / O ซึ่งเป็นปัจจัย จำกัด ในระบบจัดเก็บข้อมูลในโลกแห่งความเป็นจริง (นี่คือเหตุผลใหญ่ที่ SSD ใช้งานเร็วกว่ามาก: กำจัดความล่าช้าในการหมุนและ ลดความล่าช้าในการค้นหาอย่างมากเนื่องจากการเคลื่อนไหวทางกายภาพของหัวอ่าน / เขียนกลายเป็นการค้นหาตารางในตารางเลเยอร์การแมปแฟลชซึ่งจัดเก็บแบบอิเล็กทรอนิกส์)

โดยทั่วไปการเขียนจะช้าลงเมื่อมีแคชที่เกี่ยวข้อง ตามปกติระบบปฏิบัติการและฮาร์ดดิสก์จะพยายามเรียงลำดับการเขียนแบบสุ่มเพื่อเปลี่ยน I / O แบบสุ่มเป็น I / O ตามลำดับหากทำได้เพื่อปรับปรุงประสิทธิภาพ หากมีแคชล้างหรือเขียนอุปสรรคอย่างชัดเจนการเพิ่มประสิทธิภาพนี้จะถูกกำจัดเพื่อจุดประสงค์ในการตรวจสอบให้แน่ใจว่าสถานะของข้อมูลในที่จัดเก็บข้อมูลถาวรสอดคล้องกับสิ่งที่ซอฟต์แวร์คาดหวัง โดยพื้นฐานแล้วการใช้เหตุผลแบบเดียวกันนั้นเกิดขึ้นระหว่างการอ่านเมื่อไม่มีดิสก์แคชที่เกี่ยวข้องเนื่องจากไม่มีอยู่ในปัจจุบัน (ผิดปกติในระบบสไตล์เดสก์ท็อป) หรือเพราะซอฟต์แวร์จงใจข้ามมัน (ซึ่งมักจะทำเมื่อวัดประสิทธิภาพ I / O) ทั้งสองอย่างลดประสิทธิภาพ IOPS ที่เป็นไปได้สูงสุดให้กับกรณีที่มองโลกในแง่ร้ายมากกว่าหรือ 120 IOPS สำหรับไดรฟ์ 7200 รอบต่อนาที

  • ที่ 100 IOPS ที่ 4 KiB ต่อ I / O เราจะได้รับประสิทธิภาพประมาณ 400 KB / s
  • ที่ 200 IOPS ที่ 4 KiB ต่อ I / O เราได้รับประสิทธิภาพประมาณ 800 KB / s

ซึ่งเพิ่งเกิดขึ้นเพื่อให้ตรงกับตัวเลขของคุณเกือบจะแน่นอน I / O แบบสุ่มที่มีขนาดบล็อกเล็ก ๆ เป็นตัวฆ่าประสิทธิภาพที่สมบูรณ์สำหรับฮาร์ดดิสก์แบบหมุนได้ซึ่งเป็นสาเหตุที่ทำให้เป็นเมตริกที่เกี่ยวข้อง

สำหรับ I / O ตามลำดับล้วนๆปริมาณงานในช่วง 150 MB / s นั้นไม่ได้ไร้เหตุผลสำหรับฮาร์ดดิสก์แบบหมุนได้ในปัจจุบัน แต่ในโลกแห่งความเป็นจริง I / O น้อยมากนั้นมีการเรียงลำดับอย่างเคร่งครัดดังนั้นในสถานการณ์ส่วนใหญ่ประสิทธิภาพของ I / O ที่ต่อเนื่องล้วนๆกลายเป็นแบบฝึกหัดทางวิชาการมากกว่าการบ่งชี้ถึงประสิทธิภาพในโลกแห่งความเป็นจริง


นี่คือคำตอบที่ดีและอ่านมากดีกว่าฉัน :) เพียงแค่โน้ตเล็ก ๆ อย่างน้อยซีเกทยังคงเฉลี่ยรายละเอียดแสวงหาแฝงในเอกสารข้อมูลทางเทคนิคของพวกเขา WD ดูเหมือนจะไม่
Bob

@Bob ขอบคุณ จริงๆแล้วฉันหมายถึงโฆษณาและสิ่งที่คล้ายกัน ฉันได้แก้ไขคำตอบเพื่อชี้แจงว่า ฉันคิดว่ามันปลอดภัยที่จะบอกว่ามีเพียงไม่กี่คนที่อ่านเอกสารข้อมูลแม้ว่าการทำเช่นนั้นอาจเป็นประสบการณ์ที่น่า
เบื่อ

2

4K หมายถึงสุ่ม I / O นี่หมายความว่าดิสก์กำลังถูกขอให้เข้าถึงบล็อกขนาดเล็ก (ขนาด 4 KB) ที่จุดสุ่มภายในไฟล์ทดสอบ นี่คือจุดอ่อนของฮาร์ดไดรฟ์ ความสามารถในการเข้าถึงข้อมูลในภูมิภาคต่างๆของดิสก์นั้นถูก จำกัด ด้วยความเร็วที่ดิสก์หมุนและความเร็วในการเคลื่อนที่ของหัวอ่านเขียน I / O ตามลำดับที่เข้าถึงบล็อกต่อเนื่องได้ง่ายกว่ามากเนื่องจากไดรฟ์สามารถอ่านหรือเขียนบล็อกในขณะที่ดิสก์กำลังหมุน

โซลิดสเตทไดรฟ์ (SSD) ไม่มีปัญหากับ I / O แบบสุ่มเนื่องจากทั้งหมดที่ต้องทำคือค้นหาตำแหน่งที่เก็บข้อมูลไว้ในหน่วยความจำพื้นฐาน (โดยทั่วไปคือแฟลช NAND สามารถเป็น 3D XPoint หรือแม้แต่ DRAM) และอ่าน หรือเขียนข้อมูลในตำแหน่งที่เหมาะสม SSD นั้นเป็นระบบอิเล็กทรอนิกส์ทั้งหมดและไม่จำเป็นต้องรอบนดิสก์ที่หมุนหรือหัวอ่านเขียนที่เคลื่อนที่เพื่อเข้าถึงข้อมูลซึ่งทำให้เร็วกว่าฮาร์ดไดรฟ์ในเรื่องนี้ ด้วยเหตุนี้การอัพเกรด SSD จึงเพิ่มประสิทธิภาพของระบบอย่างมาก

หมายเหตุด้านข้าง: ประสิทธิภาพต่อเนื่องของ I / O บน SSD มักจะสูงกว่าฮาร์ดไดรฟ์เช่นกัน SSD ทั่วไปมีชิป NAND หลายตัวเชื่อมต่อขนานกับคอนโทรลเลอร์หน่วยความจำแฟลชและสามารถเข้าถึงได้พร้อมกัน เมื่อกระจายข้อมูลไปยังชิปเหล่านี้จะทำให้การจัดวางไดรฟ์คล้ายกับ RAID 0 ซึ่งเพิ่มประสิทธิภาพอย่างมาก (โปรดทราบว่าไดร์ฟที่ใหม่กว่าโดยเฉพาะไดรฟ์ที่ถูกกว่าให้ใช้ชนิด NAND ที่ชื่อ TLC NAND ซึ่งมีแนวโน้มที่จะช้าเมื่อเขียนข้อมูลไดรฟ์ที่มี TLC NAND มักจะใช้บัฟเฟอร์ขนาดเล็กของ NAND ที่เร็วกว่าเพื่อให้ประสิทธิภาพสูงขึ้น ช้าลงอย่างมากเมื่อบัฟเฟอร์นั้นเต็ม)


IIRC, NVMe SSDs บางตัวใช้ DRAM cache
timuzhti

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