अनुकूली प्रतिस्थापन कैश: Difference between revisions
No edit summary |
No edit summary |
||
(8 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 में आईबीएम को [https://web.archive.org/web/20170624055115/http://patft1.uspto.gov/netacgi/nph-Parser?patentnumber=6996676 अनुकूली प्रतिस्थापन कैश नीति के लिए पेटेंट] प्रदान किया गया था। | ||
== सारांश == | == सारांश == | ||
बेसिक एलआरयू कैश में संसाधन प्रविष्टियों की आदेशित सूची (कैश निर्देशिका) रखता है, जिसमें सबसे | बेसिक एलआरयू कैश में संसाधन प्रविष्टियों की एक आदेशित सूची (कैश निर्देशिका) रखता है, जिसमें सबसे नवीनतम पहुंच के समय के आधार पर क्रमबद्ध क्रम होता है। नीचे की प्रविष्टि को निष्कासित करने के बाद सूची के शीर्ष पर नई प्रविष्टियाँ जोड़ी जाती हैं। कैशे हिट अन्य सभी प्रविष्टियों को नीचे धकेलते हुए शीर्ष पर चले जाते हैं। | ||
एआरसी वर्तमान में और अधिकांश संदर्भित प्रविष्टियों के लिए कैश निर्देशिका को दो सूचियों, | एआरसी वर्तमान में और अधिकांश संदर्भित प्रविष्टियों के लिए कैश निर्देशिका को दो सूचियों, T1 और T2 में विभाजित करके मूलभूत एलआरयू रणनीति में सुधार करता है। बदले में, इनमें से प्रत्येक को घोस्ट सूची (B1 या B2) के साथ विस्तारित किया जाता है, जो दो सूचियों के नीचे से जुड़ी होती है। ये घोस्ट सूचियां वर्तमान में निकाले गए कैश प्रविष्टियों के इतिहास का ट्रैक रखकर स्कोरकार्ड के रूप में कार्य करती हैं, और एल्गोरिदम संसाधन उपयोग में नवीनतम परिवर्तन के अनुकूल होने के लिए घोस्ट हिट का उपयोग करता है। ध्यान दें कि घोस्ट सूचियों में केवल मेटाडेटा (प्रविष्टियों के लिए कुंजियाँ) होते हैं और स्वयं संसाधन डेटा नहीं होते हैं, अर्थात् किसी प्रविष्टि को घोस्ट सूची में निष्कासित कर दिया जाता है, इसके डेटा को छोड़ दिया जाता है। संयुक्त कैश निर्देशिका को चार एलआरयू सूचियों में व्यवस्थित किया गया है: | ||
# T1, | # T1, वर्तमान की कैश प्रविष्टियों के लिए। | ||
# T2, | # T2, निरंतर प्रविष्टियों के लिए, कम से कम दो बार संदर्भित। | ||
# | # B1, वर्तमान में T1 कैश से निष्कासित की गई घोस्ट प्रविष्टियां, किन्तु अभी भी ट्रैक की जाती हैं। | ||
# | # B2, समान घोस्ट प्रविष्टियों, किन्तु T2 से निष्कासित। | ||
T1 और B1 को साथ L1 के रूप में संदर्भित किया जाता है, वर्तमान के एकल संदर्भों का संयुक्त | T1 और B1 को एक साथ L1 के रूप में संदर्भित किया जाता है, जो वर्तमान के एकल संदर्भों का संयुक्त इतिहास हैं। इसी प्रकार, L2 T2 और B2 का संयोजन है। | ||
इसी | |||
संपूर्ण कैश निर्देशिका को पंक्ति में देखा जा सकता है: | संपूर्ण कैश निर्देशिका को पंक्ति में देखा जा सकता है:<syntaxhighlight lang="d"> | ||
. . . [ B1 <-[ T1 <-!-> T2 ]-> B2 ] . . | |||
[ . . . . [ . . . . . . ! . .^. . . . ] . . . . ] | |||
[ fixed cache size (c) ] | |||
</syntaxhighlight>आंतरिक '[' ']' कोष्ठक वास्तविक कैश को निरुपित करता है, जो आकार में निश्चित होने के अतिरिक्त B1 और B2 इतिहास में स्वतंत्र रूप से स्थानांतरित हो सकता है। | |||
L1 अब '!' मार्कर द्वारा दर्शाए गए शीर्ष पर दाएँ से बाएँ प्रदर्शित होता है। '^' T1 के लिए लक्षित आकार को निरुपित करता है, और वास्तविक आकार (जैसा कि '!' द्वारा निरुपित किया गया है) के बराबर, उससे छोटा या बड़ा हो सकता है। | |||
* नई प्रविष्टियाँ '!' के बाईं ओर T1 में प्रवेश करती हैं, और धीरे-धीरे बाईं ओर धकेल दी जाती हैं, अंततः T1 से B1 में निकाल दी जाती हैं, और अंत में पूरी तरह से बाहर हो जाती हैं। | * नई प्रविष्टियाँ '!' के बाईं ओर T1 में प्रवेश करती हैं, और धीरे-धीरे बाईं ओर धकेल दी जाती हैं, अंततः T1 से B1 में निकाल दी जाती हैं, और अंत में पूरी तरह से बाहर हो जाती हैं। | ||
* L1 में कोई भी प्रविष्टि | * L1 में कोई भी प्रविष्टि जिसे एक बार फिर से संदर्भित किया जाता है, उसे एक और मौका मिलता है और L2 में केंद्रीय '!' मार्कर के ठीक दाईं ओर प्रवेश करता है। वहां से इसे फिर से T2 से B2 में बाहर की ओर धकेला जाता है। L2 में प्रविष्टियां जो और हिट प्राप्त करती हैं, इसे अनिश्चित काल तक दोहरा सकती हैं, जब तक कि वे अंत में B2 के दूर दाईं ओर से बाहर नहीं निकल जातीं हैं। | ||
===प्रतिस्थापन === | ===प्रतिस्थापन === | ||
कैश (T1, T2) में प्रवेश करने वाली प्रविष्टियाँ (पुनः-) | कैश (T1, T2) में प्रवेश करने वाली प्रविष्टियाँ (पुनः-) लक्ष्य मार्कर ^ की ओर बढ़ने का कारण ! बनेंगी। यदि संचय में कोई रिक्त स्थान उपस्थित नहीं है, तो यह चिह्नक यह भी निर्धारित करता है कि क्या T1 या T2 में से कोई प्रविष्टि निकालेगा। | ||
* B1 में हिट करने से T1 का आकार बढ़ जाएगा, ^ को दाईं ओर धकेल दिया जाएगा। T2 में अंतिम प्रविष्टि B2 में | *B1 में हिट करने से T1 का आकार बढ़ जाएगा, और ^ को दाईं ओर धकेल दिया जाएगा। T2 में अंतिम प्रविष्टि B2 में निष्कासित है। | ||
* B2 में हिट ^ | * B2 में हिट T1 को ^ पीछे बाईं ओर धकेलते हुए सिकुड़ जाता है। T1 में अंतिम प्रविष्टि अब B1 में निष्कासित कर दी गई है। | ||
* कैश मिस ^ को प्रभावित नहीं करेगा, | *कैश मिस ^ को प्रभावित नहीं करेगा, किन्तु ! सीमा ^ के निकट जाएगी। | ||
== परिनियोजन == | == परिनियोजन == | ||
एआरसी वर्तमान में आईबीएम के 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> का उपयोग करता है। इसे लॉक किए गए पृष्ठों की अनुमति देने के लिए संशोधित किया गया है जो वर्तमान में उपयोग में हैं और खाली नहीं किए जा सकते हैं। | ||
[[PostgreSQL]] ने | [[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> | ||
एआरसी पर आईबीएम पेटेंट पर चिंताओं का हवाला देते | |||
[[VMware]] का vSAN (पूर्व में वर्चुअल | [[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]] रीड कैश के रूप में बहु-स्तरीय कैश में | |||
[[OpenZFS|ओपनजेडएफएस]] रीड कैश के रूप में बहु-स्तरीय कैश में एआरसी और L2ARC का उपयोग करने का समर्थन करता है। | |||
यदि दूसरे स्तर के डिस्क कैश को स्टोर करने के लिए | |||
ओपनजेडएफएस में, डिस्क रीड अधिकांश एआरसी का उपयोग करके रैम में प्रथम स्तर के डिस्क कैश को हिट करता है। | |||
यदि दूसरे स्तर के डिस्क कैश को स्टोर करने के लिए एसएसडी स्थापित किया गया है, तो इसे 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 61: | 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 77: | Line 78: | ||
*[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: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) के साथ विस्तारित किया जाता है, जो दो सूचियों के नीचे से जुड़ी होती है। ये घोस्ट सूचियां वर्तमान में निकाले गए कैश प्रविष्टियों के इतिहास का ट्रैक रखकर स्कोरकार्ड के रूप में कार्य करती हैं, और एल्गोरिदम संसाधन उपयोग में नवीनतम परिवर्तन के अनुकूल होने के लिए घोस्ट हिट का उपयोग करता है। ध्यान दें कि घोस्ट सूचियों में केवल मेटाडेटा (प्रविष्टियों के लिए कुंजियाँ) होते हैं और स्वयं संसाधन डेटा नहीं होते हैं, अर्थात् किसी प्रविष्टि को घोस्ट सूची में निष्कासित कर दिया जाता है, इसके डेटा को छोड़ दिया जाता है। संयुक्त कैश निर्देशिका को चार एलआरयू सूचियों में व्यवस्थित किया गया है:
- T1, वर्तमान की कैश प्रविष्टियों के लिए।
- T2, निरंतर प्रविष्टियों के लिए, कम से कम दो बार संदर्भित।
- B1, वर्तमान में T1 कैश से निष्कासित की गई घोस्ट प्रविष्टियां, किन्तु अभी भी ट्रैक की जाती हैं।
- 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]
यह भी देखें
संदर्भ
- ↑ One Up on LRU, Usenix :login; August 2003
- ↑ Nimrod Megiddo and Dharmendra Modha, 2010-03-09 archive of the ARC home page, with pointers to several articles
- ↑ comments in Solaris ZFS arc.c source file explains differences with original work
- ↑ Article in Postgresql General Bits, "The Saga of the ARC Algorithm and Patent", published 6 February 2005
- ↑ Reference document, "VMware vSAN Caching Algorithms"[permanent dead link]
- ↑ "ZFS Caching".
- ↑ "ZFS Primer".
- ↑ Jim Salter. "Persistent L2ARC might be coming to ZFS on Linux". 2020.
- ↑ "Cache: L2ARC accesses".
- ↑ Brendan Gregg. "ZFS L2ARC".
- ↑ Ranvir Singh. "Adaptive Replacement Cache (ARC) and L2ARC".