การเขียนใดถูก ดูที่วิธีการแคช I / O

ผู้เขียน: Laura McKinney
วันที่สร้าง: 1 เมษายน 2021
วันที่อัปเดต: 25 มิถุนายน 2024
Anonim
ไม่นะ! พี่แป้งแพ้ท้อง
วิดีโอ: ไม่นะ! พี่แป้งแพ้ท้อง

เนื้อหา


ที่มา: Kgtoh / Dreamstime.com

Takeaway:

ความเร็วของแอปพลิเคชันส่วนใหญ่ขึ้นอยู่กับความเร็วของแคช I / O ที่นี่เราเปรียบเทียบวิธีแคช I / O ที่แตกต่างกัน

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

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


นี่คือการเขียน I / O 3 รูปแบบ:

  1. เขียนรอบ (รอบแคช)
  2. เขียนผ่าน (ผ่านแคช)
  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 เป็นสิ่งที่สะท้อนให้เห็นถึงการแก้ปัญหาที่ระบบการจัดการข้อมูลขั้นสูงในทุกวันนี้นำมาซึ่งงานที่ยิ่งใหญ่ โดยการสร้างสถาปัตยกรรมที่ซับซ้อนมากขึ้นและการใช้แคชอย่างซับซ้อนการเขียนกลับทำลายปัญหาความล่าช้าและแม้ว่ามันอาจต้องใช้ค่าใช้จ่ายมากขึ้นก็ช่วยให้การเจริญเติบโตของระบบดีขึ้นและปวดน้อยลง