เกิดอะไรขึ้นกับความเร็วของฉันที่ 4K ทำไมช้าจัง หรือมันควรจะเป็นอย่างนั้น?
ความเร็วนั้นโอเคไหม ทำไมฉันถึงมีความเร็วต่ำถึง 4K
เกิดอะไรขึ้นกับความเร็วของฉันที่ 4K ทำไมช้าจัง หรือมันควรจะเป็นอย่างนั้น?
ความเร็วนั้นโอเคไหม ทำไมฉันถึงมีความเร็วต่ำถึง 4K
คำตอบ:
สิ่งที่คุณกำลังพบคือ 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 แบบเปิดที่คุณสามารถดูดิสก์หมุนและแขนที่เคลื่อนที่ได้
ภาพจาก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 ต่อบล็อก นั่นช้ากว่ามากหลายเท่า ในความเป็นจริงหลายพันครั้งช้าลง
โชคดีที่เรามีทางออกในขณะนี้: SSD
โซลิดสเตตไดรฟ์ SSD เป็นชื่อที่แสดงถึงโซลิดสเตต นั่นหมายความว่ามันมีชิ้นส่วนที่เคลื่อนไหว ยิ่งกว่านั้นวิธีการจัดวาง SSD หมายความว่ามี (อย่างมีประสิทธิภาพ3 ) ไม่จำเป็นต้องค้นหาตำแหน่งของไบต์ มันอยู่แล้วรู้ว่า นั่นเป็นสาเหตุที่ SSD มีช่องว่างของประสิทธิภาพน้อยกว่าระหว่างการเข้าถึงแบบลำดับและแบบสุ่ม
ยังคงมีช่องว่าง แต่ส่วนใหญ่มาจากการที่ไม่สามารถคาดเดาได้ว่าอะไรจะเกิดขึ้นต่อไปและโหลดข้อมูลนั้นล่วงหน้าก่อนที่จะถูกถาม
1แม่นยำยิ่งขึ้นด้วยไดรฟ์ LBA ระบุไว้ในบล็อกขนาด 512 ไบต์ (512n / 512e) หรือ 4kB (4Kn) เพื่อเหตุผลด้านประสิทธิภาพ นอกจากนี้โปรแกรมจริงแทบไม่ต้องการเพียงไบต์เดียวในแต่ละครั้ง
2 ในทางเทคนิคการค้นหาหมายถึงการเดินทางของแขน การรอให้ข้อมูลหมุนใต้หัวคือเวลาแฝงในการหมุนที่อยู่ด้านบนของเวลาค้นหา
3 โดยทางเทคนิคแล้วพวกเขามีตารางการค้นหาและทำการแมปใหม่ด้วยเหตุผลอื่นเช่นการปรับระดับการสวมใส่ แต่สิ่งเหล่านี้เล็กน้อยมากเมื่อเทียบกับ HDD ...
Notice how it needs to look for every single byte?
:: แทนที่byte
ด้วยblock
(และเปลี่ยนตัวอย่างตาม) ไดรฟ์ค้นหาส่วน 4k (ซึ่งอาจเพิ่มเติมต่อไปแยกเป็น 512bytes อัน แต่ไม่ต่ำกว่านี้มันไม่ค้นหาระหว่างทุกไบต์! มันจะค้นหาระหว่างทุก ๆ บล็อกถ้าบล็อกถัดไปไม่ถูกต้อง ดิสก์ที่กระจัดกระจาย) และการค้นหา (เลื่อนหัวไปรอบ ๆ แผ่นเสียงและรอให้บล็อกผ่านด้านล่าง) เป็นสิ่งที่ใช้เวลานานมาก (ไม่กี่มิลลิวินาที)
ตามที่ระบุไว้แล้วโดยคำตอบอื่น ๆ "4K" เกือบจะแน่นอนหมายถึงการเข้าถึงแบบสุ่มในบล็อกขนาด 4 KiB
ทุกครั้งที่มีการขอให้อ่านหรือเขียนข้อมูลในฮาร์ดดิสก์ (ไม่ใช่ SSD) มีความล่าช้าที่สำคัญสองประการ:
ทั้งสองนี้มีระยะเวลาค่อนข้างคงที่สำหรับไดรฟ์ที่กำหนด แสวงหาเวลาแฝงเป็นฟังก์ชั่นว่าสามารถเคลื่อนย้ายหัวได้เร็วแค่ไหนและต้องเคลื่อนย้ายไปไกลแค่ไหนและเวลาแฝงในการหมุนเป็นหน้าที่ของความเร็วในการหมุนของแผ่นเสียง ยิ่งไปกว่านั้นพวกเขาไม่ได้เปลี่ยนแปลงอะไรมากมายในช่วงสองสามทศวรรษที่ผ่านมา ผู้ผลิตเคยใช้เวลาค้นหาโดยเฉลี่ยเช่นในโฆษณา พวกเขาหยุดทำเช่นนั้นเมื่อมีการพัฒนาน้อยหรือไม่มีเลยในพื้นที่ ไม่มีผู้ผลิตโดยเฉพาะอย่างยิ่งในสภาพแวดล้อมที่มีการแข่งขันสูงต้องการให้ผลิตภัณฑ์ของพวกเขาดูไม่ดีไปกว่าคู่แข่ง
ฮาร์ดดิสก์เดสก์ท็อปทั่วไปหมุนที่ 7200 รอบต่อนาทีในขณะที่ไดรฟ์แล็ปท็อปทั่วไปอาจหมุนที่ประมาณ 5000 รอบต่อนาที ซึ่งหมายความว่าในแต่ละวินาทีมันจะผ่านการปฏิวัติ 120 ครั้ง (เดสก์ท็อปไดรฟ์) หรือประมาณ 83 รอบ (แล็ปท็อปไดรฟ์) เนื่องจากโดยเฉลี่ยแล้วดิสก์จะต้องหมุนครึ่งรอบก่อนที่เซกเตอร์ที่ต้องการจะผ่านใต้หัวหมายความว่าเราสามารถคาดหวังให้ดิสก์สามารถให้บริการได้ประมาณสองเท่าของการร้องขอ I / O ต่อวินาทีโดยสมมติว่า
ดังนั้นเราควรคาดหวังว่าจะสามารถดำเนินการตามลำดับ 200 I / O ต่อวินาทีหากข้อมูลที่ถูกขอให้เข้าถึง (สำหรับการอ่านหรือการเขียน) นั้นมีการแปลเป็นภาษาท้องถิ่นค่อนข้างส่งผลให้เวลาแฝงในการหมุนเป็นปัจจัย จำกัด ในกรณีทั่วไปเราคาดว่าไดรฟ์จะสามารถทำงานได้ตามลำดับที่ 100 I / O ต่อวินาทีหากข้อมูลถูกกระจายไปทั่วแผ่นเสียงหรือจานซึ่งต้องการการค้นหามากและทำให้เวลาในการค้นหานั้นเป็นปัจจัย จำกัด . ในเงื่อนไขการจัดเก็บนี่คือ " IOPSประสิทธิภาพ "ของฮาร์ดดิสก์นี่ไม่ใช่ประสิทธิภาพต่อเนื่องของ I / O ซึ่งเป็นปัจจัย จำกัด ในระบบจัดเก็บข้อมูลในโลกแห่งความเป็นจริง (นี่คือเหตุผลใหญ่ที่ SSD ใช้งานเร็วกว่ามาก: กำจัดความล่าช้าในการหมุนและ ลดความล่าช้าในการค้นหาอย่างมากเนื่องจากการเคลื่อนไหวทางกายภาพของหัวอ่าน / เขียนกลายเป็นการค้นหาตารางในตารางเลเยอร์การแมปแฟลชซึ่งจัดเก็บแบบอิเล็กทรอนิกส์)
โดยทั่วไปการเขียนจะช้าลงเมื่อมีแคชที่เกี่ยวข้อง ตามปกติระบบปฏิบัติการและฮาร์ดดิสก์จะพยายามเรียงลำดับการเขียนแบบสุ่มเพื่อเปลี่ยน I / O แบบสุ่มเป็น I / O ตามลำดับหากทำได้เพื่อปรับปรุงประสิทธิภาพ หากมีแคชล้างหรือเขียนอุปสรรคอย่างชัดเจนการเพิ่มประสิทธิภาพนี้จะถูกกำจัดเพื่อจุดประสงค์ในการตรวจสอบให้แน่ใจว่าสถานะของข้อมูลในที่จัดเก็บข้อมูลถาวรสอดคล้องกับสิ่งที่ซอฟต์แวร์คาดหวัง โดยพื้นฐานแล้วการใช้เหตุผลแบบเดียวกันนั้นเกิดขึ้นระหว่างการอ่านเมื่อไม่มีดิสก์แคชที่เกี่ยวข้องเนื่องจากไม่มีอยู่ในปัจจุบัน (ผิดปกติในระบบสไตล์เดสก์ท็อป) หรือเพราะซอฟต์แวร์จงใจข้ามมัน (ซึ่งมักจะทำเมื่อวัดประสิทธิภาพ I / O) ทั้งสองอย่างลดประสิทธิภาพ IOPS ที่เป็นไปได้สูงสุดให้กับกรณีที่มองโลกในแง่ร้ายมากกว่าหรือ 120 IOPS สำหรับไดรฟ์ 7200 รอบต่อนาที
ซึ่งเพิ่งเกิดขึ้นเพื่อให้ตรงกับตัวเลขของคุณเกือบจะแน่นอน I / O แบบสุ่มที่มีขนาดบล็อกเล็ก ๆ เป็นตัวฆ่าประสิทธิภาพที่สมบูรณ์สำหรับฮาร์ดดิสก์แบบหมุนได้ซึ่งเป็นสาเหตุที่ทำให้เป็นเมตริกที่เกี่ยวข้อง
สำหรับ I / O ตามลำดับล้วนๆปริมาณงานในช่วง 150 MB / s นั้นไม่ได้ไร้เหตุผลสำหรับฮาร์ดดิสก์แบบหมุนได้ในปัจจุบัน แต่ในโลกแห่งความเป็นจริง I / O น้อยมากนั้นมีการเรียงลำดับอย่างเคร่งครัดดังนั้นในสถานการณ์ส่วนใหญ่ประสิทธิภาพของ I / O ที่ต่อเนื่องล้วนๆกลายเป็นแบบฝึกหัดทางวิชาการมากกว่าการบ่งชี้ถึงประสิทธิภาพในโลกแห่งความเป็นจริง
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 ที่เร็วกว่าเพื่อให้ประสิทธิภาพสูงขึ้น ช้าลงอย่างมากเมื่อบัฟเฟอร์นั้นเต็ม)