![ไม่นะ! พี่แป้งแพ้ท้อง](https://i.ytimg.com/vi/EQZrx4DVN6c/hqdefault.jpg)
เนื้อหา
- เขียนบริเวณใกล้เคียง
- เขียนผ่าน
- ไม่มีข้อบกพร่องไม่มีความเครียด - คู่มือแบบเป็นขั้นตอนเพื่อสร้างซอฟต์แวร์ที่เปลี่ยนแปลงชีวิตโดยไม่ทำลายชีวิตของคุณ
- เขียนกลับ
ที่มา: Kgtoh / Dreamstime.com
Takeaway:
ความเร็วของแอปพลิเคชันส่วนใหญ่ขึ้นอยู่กับความเร็วของแคช I / O ที่นี่เราเปรียบเทียบวิธีแคช I / O ที่แตกต่างกัน
ประสิทธิภาพการทำงานของแอพพลิเคชั่นนั้นฝังรากด้วยความเร็ว - ความเร็วในการดำเนินการตามคำขออ่านและเขียนที่แอพพลิเคชั่นของคุณต้องการจากโครงสร้างพื้นฐานของคุณ พื้นที่จัดเก็บรับผิดชอบความเร็วของการส่งคืนคำขอ I / O (อินพุต / เอาต์พุต) และวิธีที่เลือกเพื่อส่งการเขียนและส่งมอบการอ่านมีผลกระทบอย่างมากต่อประสิทธิภาพการทำงานของแอปพลิเคชัน วิธีการทั่วไปในอุตสาหกรรมปัจจุบันคือการใช้ SSD สำหรับการแคชในการจัดเก็บดิสก์แบบหมุนอาร์เรย์ไฮบริดหรืออาร์เรย์แฟลชทั้งหมด โซลูชันแคชส่วนใหญ่มีการเร่งการอ่านแอปพลิเคชัน แต่คำถามจริงยังคงอยู่“ การเขียนใดถูกต้อง”
มาดูกันว่าทำไมการเพิ่มประสิทธิภาพการเขียนมีผลต่อประสิทธิภาพการใช้งานของคุณอย่างมาก เขียน I / O หมายความว่าเป็นข้อมูลใหม่ที่ไม่ได้เขียนในที่เก็บข้อมูลของคุณ ในหน่วยเก็บข้อมูล SAN ดั้งเดิมตัวอย่างเช่นการเขียนจะถูกเขียนโดยตรงบนที่เก็บข้อมูลพื้นฐานแล้วส่งกลับไปที่แอปพลิเคชัน ด้วยแอปพลิเคชันที่เขียนข้อมูลใหม่อย่างต่อเนื่องเป็นหลักแอปพลิเคชันฐานข้อมูลขนาดใหญ่ (SQL ฯลฯ ) ดิสก์แบบหมุนไม่สามารถติดตามได้ การแคชบน SSD กลายเป็นโซลูชันที่อนุญาตให้เขียนเพื่อเขียนภายในเครื่องและแคชตามความถี่ของความต้องการใช้งาน อย่างไรก็ตามมีหลายวิธีในความสัมพันธ์ของแคชการเขียนกับที่จัดเก็บข้อมูลอ้างอิงที่ทำให้ประสิทธิภาพแตกต่างกันมาก
นี่คือการเขียน I / O 3 รูปแบบ:
- เขียนรอบ (รอบแคช)
- เขียนผ่าน (ผ่านแคช)
- เขียนกลับ (จากแคช)
ทั้งสามรูปแบบมีประโยชน์ที่แตกต่างกันซึ่งขึ้นอยู่กับประเภทของข้อมูลที่ถูกเขียนเป็นหลัก: เรียงตามลำดับกับแบบสุ่ม Sequential I / O เป็นดิสก์ที่ได้รับการปรับให้เหมาะสมที่สุด (ไฟล์หรือสตรีมวิดีโอเป็นต้น) ในขณะที่แคช I / O แบบสุ่มได้รับการปรับให้เหมาะสม อุปกรณ์แคชส่วนใหญ่ไม่มีความฉลาดแบบไดนามิกเพื่อเปลี่ยนรูปแบบของเทคโนโลยีการเขียนตามประเภทของข้อมูล มาทำความเข้าใจความแตกต่างระหว่างการเขียน I / O สามรูปแบบ
เขียนบริเวณใกล้เคียง
การเขียนรอบ ๆ หรือที่เรียกว่าโหมดแคชแบบอ่านอย่างเดียวมีประโยชน์อย่างยิ่งต่อการเพิ่มพื้นที่ว่างในการอ่านแคช I / O ที่เข้ามาจะไม่ส่งผลกระทบต่อแคช I / O ถูกเขียนไปยังที่เก็บข้อมูลถาวรโดยตรงโดยไม่ต้องแคชข้อมูลใด ๆ
สิ่งที่อาจเป็นประโยชน์ของแคชหากไม่ได้ใช้ ช่วยลดแคชที่มีน้ำท่วมด้วยการเขียน I / O ที่จะไม่ถูกอ่านซ้ำในภายหลัง แต่มีข้อเสียที่คำขอการอ่านสำหรับข้อมูลที่เพิ่งเขียนจะสร้าง "แคชมิส" และต้องอ่านจากที่เก็บข้อมูลจำนวนมากช้าลงและ พบความล่าช้าที่สูงขึ้น หากแอปพลิเคชันของคุณเป็นธุรกรรมเนื่องจากแอปพลิเคชันที่สำคัญต่อภารกิจคือความเร็วของแอปพลิเคชันจะช้าลงและคิว I / O จะเพิ่มขึ้น โดยพื้นฐานแล้วค่าของโหมดนี้จะเป็นกรณีใช้งานที่หายากเพราะใช้เวลานานช้าและไม่ได้ทำงาน
เขียนผ่าน
วิธีนี้ใช้กันอย่างแพร่หลายในแคชและโซลูชั่นการจัดเก็บข้อมูลไฮบริดในปัจจุบัน การเขียนผ่านเรียกว่าโหมดการแคชการอ่านหมายความว่าข้อมูลทั้งหมดจะถูกเขียนไปยังแคชและหน่วยเก็บข้อมูลพื้นฐานในเวลาเดียวกัน การเขียนนั้นจะถือว่าสมบูรณ์เท่านั้นเมื่อมีการเขียนไปยังที่เก็บข้อมูลของคุณ ฟังดูสวยปลอดภัยจริง ๆ … แต่มีข้อเสียเปรียบความเร็ว
นี่คือปัญหา: การดำเนินการเขียนทุกครั้งทำได้สองครั้งในแคชและจากนั้นในที่เก็บข้อมูลถาวร ก่อนที่แอปพลิเคชันจะสามารถดำเนินการต่อได้ที่จัดเก็บข้อมูลถาวรจะต้องส่งคืน I / O ที่ส่งกลับไปยังแคชจากนั้นกลับสู่แอปพลิเคชัน วิธีการนี้มักจะใช้เพื่อความยืดหยุ่นของความล้มเหลวและเพื่อหลีกเลี่ยงการใช้กลยุทธ์ failover หรือ HA กับแคชเพราะข้อมูลอยู่ในทั้งสองตำแหน่ง อย่างไรก็ตามการเขียนผ่านทำให้เกิดความหน่วงแฝงเนื่องจาก I / O ส่งข้อมูลถูกกำหนดโดยความเร็วของที่เก็บข้อมูลถาวรซึ่งไม่ตรงกับความเร็วของ CPU และระบบเครือข่าย คุณเร็วเท่ากับส่วนประกอบที่ช้าที่สุดและการเขียนผ่านสามารถลดความเร็วของแอปพลิเคชันลงได้อย่างมาก
ไม่มีข้อบกพร่องไม่มีความเครียด - คู่มือแบบเป็นขั้นตอนเพื่อสร้างซอฟต์แวร์ที่เปลี่ยนแปลงชีวิตโดยไม่ทำลายชีวิตของคุณ
คุณไม่สามารถพัฒนาทักษะการเขียนโปรแกรมของคุณเมื่อไม่มีใครใส่ใจคุณภาพของซอฟต์แวร์
เขียนกลับ
การเขียนกลับช่วยปรับปรุงผลของระบบในแง่ของความเร็ว - เนื่องจากระบบไม่จำเป็นต้องรอให้การเขียนเพื่อไปยังที่เก็บข้อมูลพื้นฐาน
เมื่อข้อมูลถูกเขียนเขียนกลับจะใส่ข้อมูลลงในแคช“ เสร็จเรียบร้อยแล้ว” และเก็บข้อมูลสำหรับเขียนลงดิสก์จัดเก็บข้อมูลในภายหลัง
วิธีนี้จะช่วยแก้ปัญหาความล่าช้าได้มากเนื่องจากระบบไม่ต้องรอการเขียนที่ลึกล้ำ
ด้วยการสนับสนุนที่เหมาะสม Write-Back สามารถเป็นวิธีที่ดีที่สุดสำหรับการแคชแบบหลายขั้นตอน ช่วยเมื่อแคชมีหน่วยความจำจำนวนมาก (เช่นหน่วยความจำที่วัดเป็นเทราไบต์ไม่ใช่กิกะไบต์) เพื่อจัดการกิจกรรมจำนวนมาก ระบบที่ซับซ้อนจะต้องใช้ไดรฟ์โซลิดสเตตมากกว่าหนึ่งตัวซึ่งสามารถเพิ่มต้นทุนได้ เป็นเรื่องสำคัญอย่างยิ่งที่จะต้องพิจารณาสถานการณ์ต่างๆเช่นไฟฟ้าขัดข้องหรือสถานการณ์อื่น ๆ ซึ่งข้อมูลสำคัญอาจสูญหายได้ แต่ด้วยการป้องกันแคชที่ถูกต้อง Write-Back สามารถเพิ่มความเร็วให้กับสถาปัตยกรรมที่มีข้อเสียน้อยมาก ตัวอย่างเช่นระบบการเขียนกลับสามารถใช้ประโยชน์จาก RAID หรือการออกแบบซ้ำซ้อนเพื่อรักษาข้อมูลให้ปลอดภัย
ระบบที่ซับซ้อนยิ่งขึ้นจะช่วยให้แคชและ SAN หรือดิสก์หน่วยเก็บข้อมูลพื้นฐานทำงานร่วมกันในฐานะ“ ตามความจำเป็นพื้นฐาน” การมอบหมายการเขียนไปยังที่เก็บข้อมูลลึกหรือแคชขึ้นอยู่กับปริมาณงานของดิสก์
ปรัชญาการออกแบบของ Write-Back เป็นสิ่งที่สะท้อนให้เห็นถึงการแก้ปัญหาที่ระบบการจัดการข้อมูลขั้นสูงในทุกวันนี้นำมาซึ่งงานที่ยิ่งใหญ่ โดยการสร้างสถาปัตยกรรมที่ซับซ้อนมากขึ้นและการใช้แคชอย่างซับซ้อนการเขียนกลับทำลายปัญหาความล่าช้าและแม้ว่ามันอาจต้องใช้ค่าใช้จ่ายมากขึ้นก็ช่วยให้การเจริญเติบโตของระบบดีขึ้นและปวดน้อยลง