अनुकूली प्रतिस्थापन कैश: Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
 
(10 intermediate revisions by 3 users not shown)
Line 1: Line 1:
एडेप्टिव रिप्लेसमेंट कैश (एआरसी) [[ पृष्ठ प्रतिस्थापन एल्गोरिथ्म ]] है
'''अनुकूली प्रतिस्थापन कैश''' ('''एआरसी''') एलआरयू (कम से कम वर्तमान में उपयोग किए गए) की तुलना में श्रेष्ठ प्रदर्शन<ref>One Up on LRU, [https://www.usenix.org/publications/login/august-2003-volume-28-number-4/one-lru Usenix :login; August 2003]</ref> के साथ एक [[ पृष्ठ प्रतिस्थापन एल्गोरिथ्म |पृष्ठ प्रतिस्थापन एल्गोरिथ्म]] है। यह अधिकांश उपयोग किए जाने वाले और वर्तमान में उपयोग किए गए पृष्ठों के साथ-साथ दोनों के लिए वर्तमान में निष्कासन इतिहास का ट्रैक रखने के द्वारा पूरा किया जाता है। एल्गोरिथम<ref>[[Nimrod Megiddo]] and [[Dharmendra Modha]],  [https://web.archive.org/web/20100329071954/http://www.almaden.ibm.com/StorageSystems/projects/arc/ 2010-03-09 archive of the ARC home page], with pointers to several articles</ref> आईबीएम [[अल्माडेन रिसर्च सेंटर]] में विकसित किया गया था। 2006 में आईबीएम को [https://web.archive.org/web/20170624055115/http://patft1.uspto.gov/netacgi/nph-Parser?patentnumber=6996676 अनुकूली प्रतिस्थापन कैश नीति के लिए पेटेंट] प्रदान किया गया था।
बेहतर प्रदर्शन<ref>One Up on LRU, [https://www.usenix.org/publications/login/august-2003-volume-28-number-4/one-lru Usenix :login; August 2003]</ref> [[कैश एल्गोरिदम]] की तुलना में (कम से कम हाल ही में उपयोग किया गया)। यह अक्सर उपयोग किए जाने वाले और हाल ही में उपयोग किए गए पृष्ठों के साथ-साथ दोनों के लिए हाल ही में निष्कासन इतिहास का ट्रैक रखने के द्वारा पूरा किया जाता है। एल्गोरिदम विकसित किया गया था<ref>[[Nimrod Megiddo]] and [[Dharmendra Modha]],  [https://web.archive.org/web/20100329071954/http://www.almaden.ibm.com/StorageSystems/projects/arc/ 2010-03-09 archive of the ARC home page], with pointers to several articles</ref> आईबीएम [[अल्माडेन रिसर्च सेंटर]] में। 2006 में, IBM को [https://web.archive.org/web/20170624055115/http://patft1.uspto.gov/netacgi/nph-Parser?patentnumber=6996676 अनुकूली प्रतिस्थापन कैश नीति के लिए पेटेंट] दिया गया था।


== सारांश ==
== सारांश ==
बेसिक एलआरयू कैश में संसाधन प्रविष्टियों की आदेशित सूची (कैश निर्देशिका) रखता है, जिसमें सबसे हालिया पहुंच के समय के आधार पर क्रमबद्ध क्रम होता है। नीचे की प्रविष्टि को बेदखल करने के बाद सूची के शीर्ष पर नई प्रविष्टियाँ जोड़ी जाती हैं। कैशे हिट अन्य सभी प्रविष्टियों को नीचे धकेलते हुए शीर्ष पर चले जाते हैं।
बेसिक एलआरयू कैश में संसाधन प्रविष्टियों की एक आदेशित सूची (कैश निर्देशिका) रखता है, जिसमें सबसे नवीनतम पहुंच के समय के आधार पर क्रमबद्ध क्रम होता है। नीचे की प्रविष्टि को निष्कासित करने के बाद सूची के शीर्ष पर नई प्रविष्टियाँ जोड़ी जाती हैं। कैशे हिट अन्य सभी प्रविष्टियों को नीचे धकेलते हुए शीर्ष पर चले जाते हैं।


एआरसी हाल ही में और अक्सर संदर्भित प्रविष्टियों के लिए कैश निर्देशिका को दो सूचियों, टी 1 और टी 2 में विभाजित करके बुनियादी एलआरयू रणनीति में सुधार करता है। बदले में, इनमें से प्रत्येक को भूत सूची (बी1 या बी2) के साथ विस्तारित किया जाता है, जो दो सूचियों के नीचे से जुड़ी होती है। ये भूत सूचियां हाल ही में निकाले गए कैश प्रविष्टियों के इतिहास का ट्रैक रखकर स्कोरकार्ड के रूप में कार्य करती हैं, और एल्गोरिदम संसाधन उपयोग में हालिया परिवर्तन के अनुकूल होने के लिए घोस्ट हिट का उपयोग करता है। ध्यान दें कि घोस्ट सूचियों में केवल मेटाडेटा (प्रविष्टियों के लिए कुंजियाँ) होते हैं और स्वयं संसाधन डेटा नहीं होते हैं, यानी किसी प्रविष्टि को घोस्ट सूची में बेदखल कर दिया जाता है, इसके डेटा को छोड़ दिया जाता है। संयुक्त कैश निर्देशिका को चार LRU सूचियों में व्यवस्थित किया गया है:
एआरसी वर्तमान में और अधिकांश संदर्भित प्रविष्टियों के लिए कैश निर्देशिका को दो सूचियों, T1 और T2 में विभाजित करके मूलभूत एलआरयू रणनीति में सुधार करता है। बदले में, इनमें से प्रत्येक को घोस्ट सूची (B1 या B2) के साथ विस्तारित किया जाता है, जो दो सूचियों के नीचे से जुड़ी होती है। ये घोस्ट सूचियां वर्तमान में निकाले गए कैश प्रविष्टियों के इतिहास का ट्रैक रखकर स्कोरकार्ड के रूप में कार्य करती हैं, और एल्गोरिदम संसाधन उपयोग में नवीनतम परिवर्तन के अनुकूल होने के लिए घोस्ट हिट का उपयोग करता है। ध्यान दें कि घोस्ट सूचियों में केवल मेटाडेटा (प्रविष्टियों के लिए कुंजियाँ) होते हैं और स्वयं संसाधन डेटा नहीं होते हैं, अर्थात् किसी प्रविष्टि को घोस्ट सूची में निष्कासित कर दिया जाता है, इसके डेटा को छोड़ दिया जाता है। संयुक्त कैश निर्देशिका को चार एलआरयू सूचियों में व्यवस्थित किया गया है:


# T1, हाल की कैश प्रविष्टियों के लिए।
# T1, वर्तमान की कैश प्रविष्टियों के लिए।
# T2, लगातार प्रविष्टियों के लिए, कम से कम दो बार संदर्भित।
# T2, निरंतर प्रविष्टियों के लिए, कम से कम दो बार संदर्भित।
# बी 1, हाल ही में टी 1 कैश से बेदखल की गई भूत प्रविष्टियां, लेकिन अभी भी ट्रैक की जाती हैं।
# B1, वर्तमान में T1 कैश से निष्कासित की गई घोस्ट प्रविष्टियां, किन्तु अभी भी ट्रैक की जाती हैं।
# बी2, समान घोस्ट एंट्री, लेकिन टी2 से बेदखल।
# B2, समान घोस्ट प्रविष्टियों, किन्तु T2 से निष्कासित।


T1 और B1 को साथ L1 के रूप में संदर्भित किया जाता है, हाल ही के एकल संदर्भों का संयुक्त इतिहास।
T1 और B1 को एक साथ L1 के रूप में संदर्भित किया जाता है, जो वर्तमान के एकल संदर्भों का संयुक्त इतिहास हैं। इसी प्रकार, L2 T2 और B2 का संयोजन है।
इसी तरह, L2 T2 और B2 का संयोजन है।


संपूर्ण कैश निर्देशिका को पंक्ति में देखा जा सकता है:
संपूर्ण कैश निर्देशिका को पंक्ति में देखा जा सकता है:<syntaxhighlight lang="d">
. . . [  B1  <-[    T1    <-!->      T2  ]->  B2  ] . .
      [ . . . . [ . . . . . . ! . .^. . . . ] . . . . ]
                [  fixed cache size (c)    ]
</syntaxhighlight>आंतरिक '[' ']' कोष्ठक वास्तविक कैश को निरुपित करता है, जो आकार में निश्चित होने के अतिरिक्त B1 और B2 इतिहास में स्वतंत्र रूप से स्थानांतरित हो सकता है।


. . . '[' B1 <-'[' T1 <-'!'-> T2 ']'-> B2 ']' । .
L1 अब '!' मार्कर द्वारा दर्शाए गए शीर्ष पर दाएँ से बाएँ प्रदर्शित होता है। '^' T1 के लिए लक्षित आकार को निरुपित करता है, और वास्तविक आकार (जैसा कि '!' द्वारा निरुपित किया गया है) के बराबर, उससे छोटा या बड़ा हो सकता है।
      '['। . . . '['। . . . . . '!' . '^'। . . . ']'। . . . ']'
                '[' निश्चित कैश आकार (सी) ']'
 
आंतरिक '[' ']' कोष्ठक वास्तविक कैश को इंगित करता है, जो हालांकि आकार में तय है, B1 और B2 इतिहास में स्वतंत्र रूप से स्थानांतरित हो सकता है।
 
L1 अब दाएँ से बाएँ प्रदर्शित होता है, शीर्ष से प्रारंभ होकर, '!' द्वारा दर्शाया जाता है मार्कर। '^' T1 के लिए लक्षित आकार को इंगित करता है, और वास्तविक आकार के बराबर, उससे छोटा या बड़ा हो सकता है (जैसा कि '!' द्वारा इंगित किया गया है)


* नई प्रविष्टियाँ '!' के बाईं ओर T1 में प्रवेश करती हैं, और धीरे-धीरे बाईं ओर धकेल दी जाती हैं, अंततः T1 से B1 में निकाल दी जाती हैं, और अंत में पूरी तरह से बाहर हो जाती हैं।
* नई प्रविष्टियाँ '!' के बाईं ओर T1 में प्रवेश करती हैं, और धीरे-धीरे बाईं ओर धकेल दी जाती हैं, अंततः T1 से B1 में निकाल दी जाती हैं, और अंत में पूरी तरह से बाहर हो जाती हैं।
* L1 में कोई भी प्रविष्टि जो  बार फिर से संदर्भित हो जाती है, उसे और मौका मिलता है, और L2 में प्रवेश करती है, ठीक केंद्रीय '!' मार्कर। वहां से, इसे फिर से बाहर की ओर धकेला जाता है, T2 से B2 में। L2 में प्रविष्टियां जो और हिट प्राप्त करती हैं, इसे अनिश्चित काल तक दोहरा सकती हैं, जब तक कि वे अंत में B2 के दूर दाईं ओर से बाहर नहीं निकल जातीं।
* L1 में कोई भी प्रविष्टि जिसे एक बार फिर से संदर्भित किया जाता है, उसे एक और मौका मिलता है और L2 में केंद्रीय '!' मार्कर के ठीक दाईं ओर प्रवेश करता है। वहां से इसे फिर से T2 से B2 में बाहर की ओर धकेला जाता है। L2 में प्रविष्टियां जो और हिट प्राप्त करती हैं, इसे अनिश्चित काल तक दोहरा सकती हैं, जब तक कि वे अंत में B2 के दूर दाईं ओर से बाहर नहीं निकल जातीं हैं।


===प्रतिस्थापन ===
===प्रतिस्थापन ===
कैश (T1, T2) में प्रवेश करने वाली प्रविष्टियाँ (पुनः-) कारण होंगी ! लक्ष्य मार्कर ^ की ओर बढ़ने के लिए। यदि संचय में कोई रिक्त स्थान मौजूद नहीं है, तो यह चिह्नक यह भी निर्धारित करता है कि क्या T1 या T2 में से कोई प्रविष्टि निकालेगा।
कैश (T1, T2) में प्रवेश करने वाली प्रविष्टियाँ (पुनः-) लक्ष्य मार्कर ^ की ओर बढ़ने का कारण ! बनेंगी। यदि संचय में कोई रिक्त स्थान उपस्थित नहीं है, तो यह चिह्नक यह भी निर्धारित करता है कि क्या T1 या T2 में से कोई प्रविष्टि निकालेगा।


* B1 में हिट करने से T1 का आकार बढ़ जाएगा, ^ को दाईं ओर धकेल दिया जाएगा। T2 में अंतिम प्रविष्टि B2 में बेदखल है।
*B1 में हिट करने से T1 का आकार बढ़ जाएगा, और ^ को दाईं ओर धकेल दिया जाएगा। T2 में अंतिम प्रविष्टि B2 में निष्कासित है।
* B2 में हिट ^ को वापस बाईं ओर धकेलते हुए T1 को सिकोड़ देगा। T1 में अंतिम प्रविष्टि अब B1 में बेदखल कर दी गई है।
* B2 में हिट T1 को ^ पीछे बाईं ओर धकेलते हुए सिकुड़ जाता है। T1 में अंतिम प्रविष्टि अब B1 में निष्कासित कर दी गई है।
* कैश मिस ^ को प्रभावित नहीं करेगा, लेकिन ! सीमा ^ के करीब जाएगी।
*कैश मिस ^ को प्रभावित नहीं करेगा, किन्तु ! सीमा ^ के निकट जाएगी।


== परिनियोजन ==
== परिनियोजन ==
ARC वर्तमान में IBM के DS6000/[[IBM DS8000]] भंडारण नियंत्रकों में परिनियोजित है।
एआरसी वर्तमान में आईबीएम के DS6000/[[IBM DS8000]] भंडारण नियंत्रकों में परिनियोजित है।


[[सन माइक्रोसिस्टम्स]] का स्केलेबल फ़ाइल सिस्टम [[ZFS]] संस्करण का उपयोग करता है<ref>comments in Solaris ZFS [https://archive.today/20130703061815/http://java.net/projects/solaris/sources/on-src/content/usr/src/uts/common/fs/zfs/arc.c?rev=13149 arc.c ] source file explains differences with original work</ref> वर्चुअल मेमोरी में पारंपरिक [[सोलारिस (ऑपरेटिंग सिस्टम)]] फाइल सिस्टम पेज कैश के विकल्प के रूप में एआरसी का। इसे लॉक किए गए पृष्ठों की अनुमति देने के लिए संशोधित किया गया है जो वर्तमान में उपयोग में हैं और खाली नहीं किए जा सकते हैं।
[[सन माइक्रोसिस्टम्स|सन माइक्रोप्रणाली्स]] का स्केलेबल फाइल प्रणाली [[ZFS|ज़ेडएफएस]] वर्चुअल मेमोरी में पारंपरिक [[सोलारिस (ऑपरेटिंग सिस्टम)|सोलारिस (ऑपरेटिंग प्रणाली)]] फाइलसिस्टम पेज कैश के विकल्प के रूप में एआरसी के एक प्रकार<ref>comments in Solaris ZFS [https://archive.today/20130703061815/http://java.net/projects/solaris/sources/on-src/content/usr/src/uts/common/fs/zfs/arc.c?rev=13149 arc.c ] source file explains differences with original work</ref> का उपयोग करता है। इसे लॉक किए गए पृष्ठों की अनुमति देने के लिए संशोधित किया गया है जो वर्तमान में उपयोग में हैं और खाली नहीं किए जा सकते हैं।


[[PostgreSQL]] ने थोड़े समय के लिए अपने बफर मैनेजर में ARC का उपयोग किया (संस्करण 8.0.0), लेकिन जल्दी से इसे दूसरे एल्गोरिथम से बदल दिया,
[[PostgreSQL|पोस्टग्रेएसक्यूएल]] ने कुछ समय (संस्करण 8.0.0) के लिए अपने बफर मैनेजर में एआरसी का उपयोग किया, किन्तु एआरसी पर आईबीएम पेटेंट पर चिंताओं का हवाला देते हुए इसे जल्दी से दूसरे एल्गोरिथम से बदल दिया।<ref>Article in Postgresql General Bits, [https://archive.today/20130205145832/http://www.varlena.com/GeneralBits/96.php "The Saga of the ARC Algorithm and Patent"], published 6 February 2005</ref>
एआरसी पर आईबीएम पेटेंट पर चिंताओं का हवाला देते हुए।<ref>Article in Postgresql General Bits, [https://archive.today/20130205145832/http://www.varlena.com/GeneralBits/96.php "The Saga of the ARC Algorithm and Patent"], published 6 February 2005</ref>
 
[[VMware]] का vSAN (पूर्व में वर्चुअल SAN) VMware द्वारा विकसित हाइपर-कन्वर्ज्ड, सॉफ़्टवेयर-डिफ़ाइंड स्टोरेज (SDS) उत्पाद है। यह अपने कैशिंग एल्गोरिदम में एआरसी के प्रकार का उपयोग करता है। <ref>Reference document, [https://www.storagehub.vmware.com/t/vmware-vsan/vmware-vsan-caching-algorithms/ "VMware vSAN Caching Algorithms"]{{Dead link|date=June 2020 |bot=InternetArchiveBot |fix-attempted=yes }}</ref>
[[VMware|वीएमवेयर]] का vSAN (पूर्व में वर्चुअल एसएएन) वीएमवेयर द्वारा विकसित हाइपर-कन्वर्ज्ड, सॉफ़्टवेयर-डिफ़ाइंड स्टोरेज (एसडीएस) उत्पाद है। यह अपने कैशिंग एल्गोरिदम में एआरसी के प्रकार का उपयोग करता है। <ref>Reference document, [https://www.storagehub.vmware.com/t/vmware-vsan/vmware-vsan-caching-algorithms/ "VMware vSAN Caching Algorithms"]{{Dead link|date=June 2020 |bot=InternetArchiveBot |fix-attempted=yes }}</ref>
[[OpenZFS]] रीड कैश के रूप में बहु-स्तरीय कैश में ARC और L2ARC का उपयोग करने का समर्थन करता है।
 
OpenZFS में, डिस्क रीड अक्सर ARC का उपयोग करके RAM में प्रथम स्तर के डिस्क कैश को हिट करता है।
[[OpenZFS|ओपनजेडएफएस]] रीड कैश के रूप में बहु-स्तरीय कैश में एआरसी और L2ARC का उपयोग करने का समर्थन करता है।
यदि दूसरे स्तर के डिस्क कैश को स्टोर करने के लिए SSD स्थापित किया गया है, तो इसे L2ARC कहा जाता है। L2ARC समान ARC एल्गोरिद्म का उपयोग करता है, लेकिन कैश्ड डेटा को RAM में संग्रहीत करने के बजाय, L2ARC कैश्ड डेटा को तेज़ SSD में संग्रहीत करता है।<ref>
 
ओपनजेडएफएस में, डिस्क रीड अधिकांश एआरसी का उपयोग करके रैम में प्रथम स्तर के डिस्क कैश को हिट करता है।
 
यदि दूसरे स्तर के डिस्क कैश को स्टोर करने के लिए एसएसडी स्थापित किया गया है, तो इसे L2ARC कहा जाता है। L2ARC समान एआरसी एल्गोरिद्म का उपयोग करता है, किन्तु कैश्ड डेटा को रैम में संग्रहीत करने के अतिरिक्त, L2ARC कैश्ड डेटा को तेज़ एसएसडी में संग्रहीत करता है।<ref>
[https://www.45drives.com/community/articles/zfs-caching/ "ZFS Caching"].
[https://www.45drives.com/community/articles/zfs-caching/ "ZFS Caching"].
</ref><ref>
</ref><ref>
Line 62: Line 61:
[https://linuxhint.com/configuring-zfs-cache/ "Adaptive Replacement Cache (ARC) and L2ARC"].
[https://linuxhint.com/configuring-zfs-cache/ "Adaptive Replacement Cache (ARC) and L2ARC"].
</ref>
</ref>




Line 73: Line 73:


==बाहरी संबंध==
==बाहरी संबंध==
*[http://citeseer.ist.psu.edu/viewdoc/summary?doi=10.1.1.13.5210 ARC: A Self-Tuning, Low Overhead Replacement Cache (2003) by Nimrod Megiddo, Dharmendra Modha]
*[http://citeseer.ist.psu.edu/viewdoc/summary?doi=10.1.1.13.5210 ARC: A Self-Tuning, Low Overhead Replacement Cache (2003) by Nimrod Megiddo, Dharmendra Modha]
*[http://linux-mm.org/AdvancedPageReplacement Linux Memory Management Wiki]
*[http://linux-mm.org/AdvancedPageReplacement Linux Memory Management Wiki]
*Bourbonnais, Roch. [https://web.archive.org/web/20120902124517/https://blogs.oracle.com/roch/date/20060621 ZFS Dynamics]
*Bourbonnais, Roch. [https://web.archive.org/web/20120902124517/https://blogs.oracle.com/roch/date/20060621 ZFS Dynamics]
*[http://code.activestate.com/recipes/576532/ Python implementation, recipe 576532]
*[http://code.activestate.com/recipes/576532/ Python implementation, recipe 576532]
*[http://www.cs.biu.ac.il/~wiseman/2os/2os/os2.pdf Comparison of LRU, ARC and others]
*[http://www.cs.biu.ac.il/~wiseman/2os/2os/os2.pdf Comparison of LRU, ARC and others]
[[Category: मेमोरी प्रबंधन एल्गोरिदम]] [[Category: आभासी मेमोरी]]


[[Category: Machine Translated Page]]
[[Category:All articles with dead external links]]
[[Category:Articles with dead external links from June 2020]]
[[Category:Articles with permanently dead external links]]
[[Category:Created On 10/06/2023]]
[[Category:Created On 10/06/2023]]
[[Category:Machine Translated Page]]
[[Category:Templates Vigyan Ready]]
[[Category:आभासी मेमोरी]]
[[Category:मेमोरी प्रबंधन एल्गोरिदम]]

Latest revision as of 20:30, 19 June 2023

अनुकूली प्रतिस्थापन कैश (एआरसी) एलआरयू (कम से कम वर्तमान में उपयोग किए गए) की तुलना में श्रेष्ठ प्रदर्शन[1] के साथ एक पृष्ठ प्रतिस्थापन एल्गोरिथ्म है। यह अधिकांश उपयोग किए जाने वाले और वर्तमान में उपयोग किए गए पृष्ठों के साथ-साथ दोनों के लिए वर्तमान में निष्कासन इतिहास का ट्रैक रखने के द्वारा पूरा किया जाता है। एल्गोरिथम[2] आईबीएम अल्माडेन रिसर्च सेंटर में विकसित किया गया था। 2006 में आईबीएम को अनुकूली प्रतिस्थापन कैश नीति के लिए पेटेंट प्रदान किया गया था।

सारांश

बेसिक एलआरयू कैश में संसाधन प्रविष्टियों की एक आदेशित सूची (कैश निर्देशिका) रखता है, जिसमें सबसे नवीनतम पहुंच के समय के आधार पर क्रमबद्ध क्रम होता है। नीचे की प्रविष्टि को निष्कासित करने के बाद सूची के शीर्ष पर नई प्रविष्टियाँ जोड़ी जाती हैं। कैशे हिट अन्य सभी प्रविष्टियों को नीचे धकेलते हुए शीर्ष पर चले जाते हैं।

एआरसी वर्तमान में और अधिकांश संदर्भित प्रविष्टियों के लिए कैश निर्देशिका को दो सूचियों, T1 और T2 में विभाजित करके मूलभूत एलआरयू रणनीति में सुधार करता है। बदले में, इनमें से प्रत्येक को घोस्ट सूची (B1 या B2) के साथ विस्तारित किया जाता है, जो दो सूचियों के नीचे से जुड़ी होती है। ये घोस्ट सूचियां वर्तमान में निकाले गए कैश प्रविष्टियों के इतिहास का ट्रैक रखकर स्कोरकार्ड के रूप में कार्य करती हैं, और एल्गोरिदम संसाधन उपयोग में नवीनतम परिवर्तन के अनुकूल होने के लिए घोस्ट हिट का उपयोग करता है। ध्यान दें कि घोस्ट सूचियों में केवल मेटाडेटा (प्रविष्टियों के लिए कुंजियाँ) होते हैं और स्वयं संसाधन डेटा नहीं होते हैं, अर्थात् किसी प्रविष्टि को घोस्ट सूची में निष्कासित कर दिया जाता है, इसके डेटा को छोड़ दिया जाता है। संयुक्त कैश निर्देशिका को चार एलआरयू सूचियों में व्यवस्थित किया गया है:

  1. T1, वर्तमान की कैश प्रविष्टियों के लिए।
  2. T2, निरंतर प्रविष्टियों के लिए, कम से कम दो बार संदर्भित।
  3. B1, वर्तमान में T1 कैश से निष्कासित की गई घोस्ट प्रविष्टियां, किन्तु अभी भी ट्रैक की जाती हैं।
  4. B2, समान घोस्ट प्रविष्टियों, किन्तु T2 से निष्कासित।

T1 और B1 को एक साथ L1 के रूप में संदर्भित किया जाता है, जो वर्तमान के एकल संदर्भों का संयुक्त इतिहास हैं। इसी प्रकार, L2 T2 और B2 का संयोजन है।

संपूर्ण कैश निर्देशिका को पंक्ति में देखा जा सकता है:

. . . [   B1  <-[     T1    <-!->      T2   ]->  B2   ] . .
      [ . . . . [ . . . . . . ! . .^. . . . ] . . . . ]
                [   fixed cache size (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 में निष्कासित कर दी गई है।
  • कैश मिस ^ को प्रभावित नहीं करेगा, किन्तु ! सीमा ^ के निकट जाएगी।

परिनियोजन

एआरसी वर्तमान में आईबीएम के DS6000/IBM DS8000 भंडारण नियंत्रकों में परिनियोजित है।

सन माइक्रोप्रणाली्स का स्केलेबल फाइल प्रणाली ज़ेडएफएस वर्चुअल मेमोरी में पारंपरिक सोलारिस (ऑपरेटिंग प्रणाली) फाइलसिस्टम पेज कैश के विकल्प के रूप में एआरसी के एक प्रकार[3] का उपयोग करता है। इसे लॉक किए गए पृष्ठों की अनुमति देने के लिए संशोधित किया गया है जो वर्तमान में उपयोग में हैं और खाली नहीं किए जा सकते हैं।

पोस्टग्रेएसक्यूएल ने कुछ समय (संस्करण 8.0.0) के लिए अपने बफर मैनेजर में एआरसी का उपयोग किया, किन्तु एआरसी पर आईबीएम पेटेंट पर चिंताओं का हवाला देते हुए इसे जल्दी से दूसरे एल्गोरिथम से बदल दिया।[4]

वीएमवेयर का vSAN (पूर्व में वर्चुअल एसएएन) वीएमवेयर द्वारा विकसित हाइपर-कन्वर्ज्ड, सॉफ़्टवेयर-डिफ़ाइंड स्टोरेज (एसडीएस) उत्पाद है। यह अपने कैशिंग एल्गोरिदम में एआरसी के प्रकार का उपयोग करता है। [5]

ओपनजेडएफएस रीड कैश के रूप में बहु-स्तरीय कैश में एआरसी और L2ARC का उपयोग करने का समर्थन करता है।

ओपनजेडएफएस में, डिस्क रीड अधिकांश एआरसी का उपयोग करके रैम में प्रथम स्तर के डिस्क कैश को हिट करता है।

यदि दूसरे स्तर के डिस्क कैश को स्टोर करने के लिए एसएसडी स्थापित किया गया है, तो इसे L2ARC कहा जाता है। L2ARC समान एआरसी एल्गोरिद्म का उपयोग करता है, किन्तु कैश्ड डेटा को रैम में संग्रहीत करने के अतिरिक्त, L2ARC कैश्ड डेटा को तेज़ एसएसडी में संग्रहीत करता है।[6][7][8][9][10][11]


यह भी देखें

संदर्भ

  1. One Up on LRU, Usenix :login; August 2003
  2. Nimrod Megiddo and Dharmendra Modha, 2010-03-09 archive of the ARC home page, with pointers to several articles
  3. comments in Solaris ZFS arc.c source file explains differences with original work
  4. Article in Postgresql General Bits, "The Saga of the ARC Algorithm and Patent", published 6 February 2005
  5. Reference document, "VMware vSAN Caching Algorithms"[permanent dead link]
  6. "ZFS Caching".
  7. "ZFS Primer".
  8. Jim Salter. "Persistent L2ARC might be coming to ZFS on Linux". 2020.
  9. "Cache: L2ARC accesses".
  10. Brendan Gregg. "ZFS L2ARC".
  11. Ranvir Singh. "Adaptive Replacement Cache (ARC) and L2ARC".


बाहरी संबंध