NVMe ssd: ทำไมการเขียน 4k จึงเร็วกว่าการอ่าน?


51

ฉันมี Samsung 960 Pro 512 GB SSD บน NVMe ที่ใช้ PCIe Gen.3x4 ฉันใช้ไดรเวอร์ Samsung NVMe 2.0.0.1607 SSD ทำงานได้ดี อย่างไรก็ตามฉันไม่เข้าใจว่าทำไมการเขียน 4k เร็วกว่าการอ่าน 4k ฉันใช้ AS Benchmark:

ป้อนคำอธิบายรูปภาพที่นี่

มันเป็นปัจจัย 3! มีอะไรผิดปกติ (กับระบบของฉันหรือ AS Benchmark) หรือเป็นเรื่องปกติ?


และยังเร็วกว่าฮาร์ดไดรฟ์ที่หมุนได้มาก!
Zan Lynx

คำตอบ:


76

การอ่าน 4k จะเป็นเรื่องที่ยากที่สุดที่ไดรฟ์สามารถทำได้ พวกมันอยู่ในกลุ่มบล็อกขนาดเล็กที่สุดที่ไดร์ฟสามารถจัดการได้และไม่มีทางที่ไดรฟ์จะโหลดข้อมูลจำนวนมากได้ในความเป็นจริงพวกเขาอาจไม่มีประสิทธิภาพหากตรรกะโหลดล่วงหน้าของไดรฟ์มีแนวโน้มที่จะอ่านอะไร ใหญ่กว่า 4kb

การอ่านไดรฟ์ "ปกติ" มีแนวโน้มที่จะมีขนาดใหญ่กว่า 4kb เนื่องจากมีไฟล์น้อยมากที่มีขนาดเล็กและแม้กระทั่งไฟล์หน้ามีแนวโน้มที่จะอ่านในกลุ่มก้อนขนาดใหญ่ มีหน่วยความจำ 4KB เพจเอาต์ ซึ่งหมายความว่าการโหลดล่วงหน้าที่ไดรฟ์พยายามทำจริง ๆ จะลงโทษทรูพุตของไดรฟ์

การอ่าน 4K อาจส่งผ่านบัฟเฟอร์ของไดรฟ์ แต่ส่วน "การสุ่ม" ของการทดสอบทำให้ไม่สามารถคาดเดาได้ทั้งหมด คอนโทรลเลอร์ไม่ทราบว่าเมื่อใดที่ไดรฟ์อาจต้องการการอ่าน "ใหญ่" ที่ปกติมากขึ้นอีกครั้ง

4K การเขียนในอีกทางหนึ่งสามารถบัฟเฟอร์จัดคิวและเขียนเรียงลำดับอย่างมีประสิทธิภาพ บัฟเฟอร์ของไดรฟ์สามารถทำงานที่ได้รับการจับและเขียนได้มากและตัวปรับระดับการสึกหรออาจจัดสรร 4K ทั้งหมดที่เขียนไปยังบล็อกการลบไดรฟ์เดียวกันบางครั้งก็เปลี่ยนสิ่งที่เขียนแบบ "สุ่ม" 4K ลงเป็นบางครั้ง บางสิ่งที่ใกล้เคียงกับการเขียนตามลำดับมากขึ้น

ในความเป็นจริงฉันสงสัยว่านี่คือสิ่งที่เกิดขึ้นในการเขียน "4K-64Thrd", "64-Thrd" เห็นได้ชัดว่าใช้คิวจำนวนมากดังนั้นจึงส่งสัญญาณไปยังไดรฟ์ว่ามีข้อมูลจำนวนมากเพื่ออ่านหรือเขียน . สิ่งนี้ทริกเกอร์การจัดกลุ่มการเขียนจำนวนมากและใกล้ถึงความเร็วในการเขียนตามลำดับของไดรฟ์ ยังมีค่าใช้จ่ายในการดำเนินการเขียน 4K แต่ตอนนี้คุณกำลังเปิดเผยศักยภาพของบัฟเฟอร์อย่างเต็มที่ ในรุ่นอ่านของการทดสอบตัวควบคุมไดรฟ์ตอนนี้รับรู้ว่ามันอยู่ภายใต้ภาระหนักมากคงที่หยุดข้อมูลที่โหลดไว้ล่วงหน้าอาจหลีกเลี่ยงบัฟเฟอร์และเปลี่ยนเป็นโหมดการอ่าน "ดิบ" แทนการเข้าใกล้ความเร็วในการอ่านตามลำดับ

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


5
ไม่ใช่ส่วนหนึ่งของคำตอบ แต่ฉันสงสัยว่า "4K read" (ไม่ใช่รุ่น 64 ไม่ใช่) นั้นจริง ๆ แล้วเปิดเผยขนาดบล็อกการอ่านค่าเริ่มต้นของไดรฟ์เป็น 32K หรือ 64K นี่อาจเป็น 2600/50 = 52 (64K พร้อมค่าใช้จ่าย + อ่าน 4K ต้นฉบับ) หรือ 1200/50 = 24 (32K พร้อมค่าใช้จ่าย + การอ่าน 4K ลดลง)
Mokubai

16
คำตอบที่ดีโดยรวม แต่ฉันไม่เชื่อว่า "มีไฟล์น้อยมากที่เล็ก" เลย อันที่จริงฉันสงสัยว่าในระบบส่วนใหญ่ไฟล์ส่วนใหญ่จะมีขนาด 4k หรือเล็กกว่า พวกเขาไม่ได้ใช้เวลาส่วนใหญ่ของพื้นที่แต่ที่เรื่องอื่น
ฮอบส์

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

2
@hobbs หากคุณใช้ตัวอย่าง NTFS ขนาดคลัสเตอร์เริ่มต้นคือ 4K (หรือหลาย ๆ ไฟล์) หมายความว่าระบบไฟล์ NTFS นั้นทำงานในบล็อก 4K แม้ว่าไฟล์และ / หรือเมตาดาต้าเองนั้นจะเล็กกว่า ไฟล์ที่เล็กกว่าจึงไม่สร้างความแตกต่างเลย สำหรับเจตนาและวัตถุประสงค์ทั้งหมดระบบ Windows จะอ่าน / เขียนในบล็อก 4K หรือทวีคูณของสิ่งนั้น
Tonny

1
@ ฮอบส์: ด้วย NTFS คุณมีโอกาสที่จะได้อ่านไฟล์ขนาดเล็กเช่นนี้ได้ฟรี (!) ไฟล์ขนาดเล็กจะถูกเก็บไว้ในรายการไดเรกทอรีตัวเองติดกับชื่อไฟล์ คุณต้องกดขนาดไฟล์ที่ค่อนข้างใกล้กับ 4KB เพื่อให้มีไฟล์ 4KB จริงบนดิสก์
MSalters

16

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

รีวิวของ ArsTecnica

ArsTechnicaได้ตรวจสอบไดรฟ์ทั้งรุ่นของคุณ (512 GB) และขนาด 2 TB:

ArsTechnica (กราฟนี้ไม่สามารถมองเห็นได้ทันทีในการตรวจสอบมันเป็นกราฟที่ห้าในแกลเลอรี่แรกคุณต้องคลิกที่มัน)

ประสิทธิภาพการทำงานของทั้งสองรุ่นมีความคล้ายคลึงกันมากและตัวเลขมีลักษณะคล้ายกับคุณ: ไดรฟ์สามารถอ่านได้ที่ 37 MB / s และเขียนที่ 151 MB / s

รีวิวของ AnandTech

AnandTechได้ทบทวนไดรฟ์ด้วย: พวกเขาใช้แบบจำลอง 2TB โดยเฉลี่ยผลการทดสอบที่มีความลึกของคิวที่ 1, 2 และ 4 นี่คือกราฟ:

AnandTech 4K อ่าน AnandTech 4K เขียน

ไดรฟ์อ่านที่ 137 MB / s และเขียนที่ 437 MB / s จำนวนนั้นสูงกว่าของคุณมาก แต่อาจเป็นเพราะความลึกคิวที่สูงขึ้น อย่างไรก็ตามความเร็วในการเขียนคือ 3 เท่าของความเร็วในการอ่านเช่นเดียวกับในกรณีของคุณ

รีวิว PC World

อีกหนึ่งความคิดเห็นโดยPC World : พวกเขาได้ทดสอบเวอร์ชัน 1 TB และผลลัพธ์สำหรับ 4K คือ 30 MB / s สำหรับการอ่านและ 155 MB / s สำหรับการเขียน: กราฟ PC World ความเร็วในการเขียนนั้นสอดคล้องกับของคุณ แต่ที่นี่คือไดรฟ์ ช้าลงเมื่ออ่าน ผลที่ได้คืออัตราส่วนคือห้าต่อหนึ่งไม่ใช่สามต่อหนึ่ง

ข้อสรุป

ความคิดเห็นยืนยันว่าสำหรับไดรฟ์นี้เป็นเรื่องปกติที่ความเร็วในการเขียนสำหรับ 4K แบบสุ่มนั้นเร็วกว่าความเร็วในการอ่านมาก: ขึ้นอยู่กับการทดสอบนั้นจะเร็วกว่าถึง 5 เท่า

ไดรฟ์ของคุณไม่เป็นไร ไม่มีเหตุผลที่จะเชื่อว่ามันเป็นความผิดพลาดหรือระบบของคุณมีปัญหา


8

แคชคอนโทรลเลอร์ SSD เขียนไว้ใน NVRAM ออนบอร์ดและล้างออกไปยังสื่อแฟลชในเวลาที่เหมาะสม เวลาในการเขียนจึงเป็นเวลาแฝงการเข้าถึงแคชโดยทั่วไปคือ 20us ในทางกลับกันการอ่านจะถูกเสิร์ฟนอกสื่อด้วยเวลาเข้าถึง 120-150us ที่ดีที่สุด


1

เมื่อเพิ่มคำตอบของ Andrey คุณต้องดูที่ค่าใช้จ่ายที่เกี่ยวข้องก่อนที่ SSD จะส่งสัญญาณไปยังคอมพิวเตอร์ว่าการดำเนินการเสร็จสมบูรณ์

สำหรับการเขียนข้อมูลต้องถูกเขียนไปยังแคช RAM ภายในเท่านั้น หลังจากนั้นมันจะถูกเขียนไปยังหน่วยความจำแฟลชพร้อมกับบล็อก 4k และข้อมูลเมตาอื่น ๆ ที่จำเป็นในการตรวจสอบแก้ไขข้อผิดพลาดและค้นหา

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

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

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