กลับไปหน้าบทความ

อ่าน 3 นาที

แคชทดแทนแบบปรับได้

แคชทดแทนแบบปรับได้ ( ARC ) เป็น อัลกอริทึมการแทนที่หน้าเว็บ ที่มีประสิทธิภาพดีกว่า [ 1 ] เมื่อเทียบกับ LRU (ใช้งานล่าสุดน้อยที่สุด)...

แคชทดแทนแบบปรับได้

แคชทดแทนแบบปรับได้ ( ARC ) เป็นอัลกอริทึมการแทนที่หน้าเว็บที่มีประสิทธิภาพดีกว่า[ 1 ]เมื่อเทียบกับLRU (ใช้งานล่าสุดน้อยที่สุด) ซึ่งทำได้โดยการติดตามทั้งหน้าเว็บที่ใช้งานบ่อยและหน้าเว็บที่ใช้งานล่าสุด รวมถึงประวัติการลบออกล่าสุดสำหรับทั้งสองอย่าง อัลกอริทึมนี้ได้รับการพัฒนา[ 2 ] ที่ ศูนย์วิจัย IBM Almaden ในปี 2549 IBM ได้รับสิทธิบัตรสำหรับนโยบายแคชทดแทนแบบปรับได้

สรุป

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

ARC ปรับปรุงกลยุทธ์ LRU พื้นฐานโดยการแบ่งไดเร็กทอรีแคชออกเป็นสองรายการ คือ T1 และ T2 สำหรับรายการที่ถูกอ้างอิงล่าสุดและบ่อยครั้ง จากนั้นแต่ละรายการจะถูกขยายด้วย รายการ ผี (B1 หรือ B2) ซึ่งแนบไว้ที่ด้านล่างของสองรายการหลัก รายการ ผี เหล่านี้ ทำหน้าที่เหมือนบัตรคะแนนโดยการติดตามประวัติของรายการแคชที่ถูกลบออกไปเมื่อเร็วๆ นี้ และอัลกอริทึมจะใช้ข้อมูลจากรายการผีเพื่อปรับให้เข้ากับการเปลี่ยนแปลงล่าสุดในการใช้งานทรัพยากร โปรดทราบว่า รายการ ผีมีเฉพาะเมตาเดตา (คีย์สำหรับรายการ) เท่านั้น ไม่ใช่ข้อมูลทรัพยากร กล่าวคือ เมื่อรายการถูกลบออกไปอยู่ใน รายการ ผีข้อมูลของรายการนั้นจะถูกทิ้งไป ไดเร็กทอรีแคชที่รวมกันจะถูกจัดระเบียบเป็นสี่รายการ LRU:

  1. T1 สำหรับรายการแคชล่าสุด
  2. T2 สำหรับรายการที่ปรากฏบ่อย ซึ่งมีการอ้างอิงอย่างน้อยสองครั้ง
  3. B1 คือ รายการ ผีที่ถูกลบออกจากแคช T1 เมื่อไม่นานมานี้ แต่ยังคงถูกติดตามอยู่
  4. B2 มีรายการ ผี ที่คล้ายกัน แต่ถูกขับไล่ออกจาก T2 แล้ว

T1 และ B1 รวมกันเรียกว่า L1 ซึ่งเป็นประวัติที่รวบรวมจากเอกสารอ้างอิงเดี่ยวล่าสุด ในทำนองเดียวกัน L2 คือการรวมกันของ T2 และ B2

ไดเร็กทอรีแคชทั้งหมดสามารถแสดงได้ในบรรทัดเดียว:

. . . [ B1 <- [ T1 <- ! -> T2 ] -> B2 ] . . [ . . . . [ . . . . . . ! . . ^ . . . . ] . . . . ] [ ขนาดแคชคงที่ (c) ]

วงเล็บเหลี่ยม ด้านใน[ ]แสดงถึงแคชจริง ซึ่งแม้จะมีขนาดคงที่ แต่สามารถเคลื่อนย้ายได้อย่างอิสระในประวัติ B1 และ B2

ขณะนี้ L1 จะแสดงจากขวาไปซ้าย โดยเริ่มจากด้านบนซึ่งระบุด้วยเครื่องหมาย ! ^ระบุขนาดเป้าหมายสำหรับ T1 ซึ่งอาจเท่ากับ เล็กกว่า หรือใหญ่กว่าขนาดจริง (ตามที่ระบุด้วยเครื่องหมาย! )

  • รายการใหม่จะเข้าสู่ T1 ทางด้านซ้ายของ!และจะถูกผลักไปทางซ้ายเรื่อยๆ จนกระทั่งถูกขับออกจาก T1 ไปยัง B1 และในที่สุดก็ถูกคัดออกไปทั้งหมด
  • รายการใดๆ ใน L1 ที่ถูกอ้างอิงอีกครั้ง จะได้รับโอกาสอีกครั้ง และเข้าสู่ L2 ทางด้านขวาของเครื่องหมาย! ตรงกลาง จากนั้นจะถูกผลักออกไปด้านนอกอีกครั้ง จาก T2 ไปยัง B2 รายการใน L2 ที่ได้รับการเรียกอีกครั้งสามารถทำซ้ำกระบวนการนี้ได้เรื่อยๆ จนกว่าจะหายไปทางด้านขวาสุดของ B2 ในที่สุด

ทดแทน

รายการที่ (กลับ) เข้าสู่แคช (T1, T2) จะทำให้เครื่องหมาย!เคลื่อนที่ไปยังเครื่องหมายเป้าหมาย^หากไม่มีพื้นที่ว่างในแคช เครื่องหมายนี้จะกำหนดด้วยว่า T1 หรือ T2 จะลบรายการนั้นออก

  • การเข้าชมใน B1 จะเพิ่มขนาดของ T1 โดยดัน^ไปทางขวา รายการสุดท้ายใน T2 จะถูกย้ายไปยัง B2
  • การโจมตีใน B2 จะทำให้ T1 หดตัวลง ผลัก^กลับไปทางซ้าย รายการสุดท้ายใน T1 จะถูกย้ายไปยัง B1 แล้ว
  • การพลาดแคชจะไม่ส่งผลกระทบต่อ^แต่ ขอบเขต !จะขยับเข้าใกล้^ มาก ขึ้น

การปรับใช้

ปัจจุบัน ARC ถูกนำไปใช้งานใน คอนโทรลเลอร์จัดเก็บข้อมูล DS6000/ DS8000ของ IBM

ระบบไฟล์ที่ปรับขนาดได้ ZFSของSun Microsystemsใช้ ARC เวอร์ชันหนึ่ง[ 3 ]เป็นทางเลือกแทนแคชเพจของระบบไฟล์Solaris แบบดั้งเดิม ในหน่วยความจำเสมือน โดยได้รับการดัดแปลงเพื่อให้สามารถล็อกเพจที่กำลังใช้งานอยู่และไม่สามารถปล่อยว่างได้

PostgreSQLใช้ ARC ในตัวจัดการบัฟเฟอร์เป็นระยะเวลาสั้นๆ (เวอร์ชัน 8.0.0) แต่ได้เปลี่ยนไปใช้อัลกอริธึมอื่นอย่างรวดเร็ว โดยอ้างถึงความกังวลเกี่ยวกับสิทธิบัตรของ IBM เกี่ยวกับ ARC [ 4 ]

vSAN ของVMware (เดิมชื่อ Virtual SAN) เป็นผลิตภัณฑ์ จัดเก็บข้อมูลแบบซอฟต์แวร์กำหนด (SDS) ที่มีการรวมระบบหลายตัว ซึ่งพัฒนาโดย VMware โดยใช้ ARC เวอร์ชันหนึ่งในอัลกอริธึมการแคช[ 5 ]

OpenZFSรองรับการใช้ ARC และ L2ARC ในแคชหลายระดับเป็นแคชสำหรับการอ่าน ใน OpenZFS การอ่านดิสก์มักจะเข้าถึงแคชดิสก์ระดับแรกใน RAM โดยใช้ ARC หากมีการตั้งค่า SSD เพื่อจัดเก็บแคชดิสก์ระดับที่สอง จะเรียกว่า L2ARC L2ARC ใช้ขั้นตอนวิธี ARC เดียวกัน แต่แทนที่จะจัดเก็บข้อมูลแคชใน RAM L2ARC จะจัดเก็บข้อมูลแคชใน SSD ที่มีความเร็วสูง[ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ]

ดูเพิ่มเติม

  • ARC: แคชทดแทนแบบปรับแต่งตัวเองได้และมีค่าใช้จ่ายต่ำ (2003) โดย Nimrod Megiddo และ Dharmendra Modha
  • วิกิการจัดการหน่วยความจำ Linux
  • บูร์บอนเนส, โรช. แซดเอฟเอส ไดนามิกส์
  • การใช้งานด้วยภาษา Python สูตรที่ 576532
  • การเปรียบเทียบ LRU, ARC และอื่นๆ
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Adaptive_replacement_cache&oldid=1343941238 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ แคชทดแทนแบบปรับได้

แคชทดแทนแบบปรับได้ ( ARC ) เป็น อัลกอริทึมการแทนที่หน้าเว็บ ที่มีประสิทธิภาพดีกว่า [ 1 ] เมื่อเทียบกับ LRU (ใช้งานล่าสุดน้อยที่สุด)...

สรุป

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

ทดแทน

รายการที่ (กลับ) เข้าสู่แคช (T1, T2) จะทำให้เครื่องหมาย ! เคลื่อนที่ไปยังเครื่องหมายเป้าหมาย ^ หากไม่มีพื้นที่ว่างในแคช เครื่องหมายนี้จะกำหนดด้วยว่า T1 หรือ T2 จะลบรายการนั้นออก

การปรับใช้

ปัจจุบัน ARC ถูกนำไปใช้งานใน คอนโทรลเลอร์จัดเก็บข้อมูล DS6000/ DS8000 ของ IBM