फ़्लैश कैश

Flashcache, Linux कर्नेल के लिए एक कैश (कंप्यूटिंग) घटक है, जिसे शुरू में अप्रैल 2010 से Facebook द्वारा विकसित किया गया था, और 2011 में खुला स्त्रोत  के रूप में जारी किया गया था। जनवरी 2013 से, Flashcache का एक फोर्क है, जिसका नाम एन्हांसियो है और इसे sTec, Inc. द्वारा विकसित किया गया है। 2015 के बाद से वह कांटा अनुरक्षित हो गया और इसे फिर से फोर्क किया गया और व्यक्तियों द्वारा बनाए रखा गया। फ्लैश कैश फ्लैश मेमोरी, एक उ स बी फ्लैश ड्राइव,  सुरक्षित डिजिटल कार्ड , कॉम्पैक्ट फ़्लैश फ्लैश या किसी भी प्रकार के पोर्टेबल फ्लैश मास स्टोरेज सिस्टम को राइट-बैक परसिस्टेंट कैश के रूप में उपयोग करके काम करता है। प्रदर्शन बढ़ाने के लिए एक आंतरिक  ठोस राज्य ड्राइव  का भी उपयोग किया जा सकता है।

सिंहावलोकन
कैशिंग के लिए फ्लैश मेमोरी (एनएएनडी फ्लैश डिवाइस) का उपयोग करने से लिनक्स कर्नेल कैश के बिना बेहतर प्रदर्शन के साथ रैंडम डिस्क आईओ को सर्विस करने की अनुमति देता है। यह कैशिंग सभी डिस्क सामग्री पर लागू होती है, न कि केवल पृष्ठ फ़ाइल या सिस्टम बायनेरिज़ पर। फ्लैश मेमोरी आधारित डिवाइस आमतौर पर रैंडम आईओ के लिए एचडीडी स्पिन करने की तुलना में बहुत तेज होते हैं, लेकिन कम लाभ के साथ या अनुक्रमिक पढ़ने/लिखने में भी धीमे होते हैं। डिफ़ॉल्ट रूप से, फ्लैशकैच सभी पूर्ण ब्लॉक आकार के आईओ को कैश करता है, लेकिन अनुक्रमिक आईओ को अनदेखा करते हुए केवल यादृच्छिक आईओ को कैश करने के लिए कॉन्फ़िगर किया जा सकता है। इसी तरह की तकनीक माइक्रोसॉफ़्ट विंडोज़  में विंडोज विस्टा के बाद से रेडी बूस्ट के रूप में मौजूद है।

कार्यान्वयन
Flashcache को Linux कर्नेल के डिवाइस मैपर के ऊपर बनाया गया है। कैश की डेटा संरचना एक सेट साहचर्य   हैश तालिका  है, जिसमें ब्लॉक खोजने के लिए एक सेट के भीतर रैखिक जांच का उपयोग करके कैश को कई निश्चित आकार के सेट (बकेट) में विभाजित किया जाता है। डिवाइस मैपर लेयर सभी I/O रिक्वेस्ट को कैश लेयर में रिक्वेस्ट पास करने से पहले ब्लॉक साइज चंक्स में तोड़ देती है।

जब एक लिखित अनुरोध होता है, तो संबंधित कैश ब्लॉक को गंदा चिह्नित किया जाता है; गंदी कैश ब्लॉक पृष्ठभूमि में डिस्क पर आलसी ढंग से लिखे गए हैं। वापस लिखना  पॉलिसी को नियंत्रित करने के लिए कुछ पैरामीटर हैं: गंदे-दहलीज, आलस्य और अन्य गंदे ब्लॉकों के साथ निकटता जो वापस लिखे जाने वाले हैं।

सीमाएं
फ़्लैश कैशे के कार्यान्वयन द्वारा लगाई गई कुछ सीमाएँ हैं:


 * परमाणुता
 * कैश ब्लॉक लेखन वर्तमान में गैर-परमाणु हैं।


 * ट्रिम समर्थन
 * एटीए ट्रिम (कंप्यूटिंग) कमांड फ्लैश मेमोरी को अनुकूलित करने के लिए अभी तक समर्थित नहीं हैं।


 * कैश प्रदूषण संरक्षण
 * फ्लैशकैच को उसके अनुरोधों को कैश करने से रोकने के लिए एक प्रक्रिया को गैर-कैचेबल के रूप में चिह्नित किया जा सकता है; हालाँकि, अगर एक प्रक्रिया जो खुद को गैर-कैचेबल के रूप में चिह्नित करती है, मर जाती है, तो फ्लैश कैश को साफ करने का कोई तरीका नहीं है।


 * संरेखण
 * डिवाइस मैपर पर भरोसा करने के परिणामस्वरूप कैशिंग प्रदर्शन संबंधी समस्याएं हुईं और राइट्स की कैशिंग नहीं हुई जो कि 4 KiB के गुणक नहीं हैं। मुख्य रूप से, यह Xen हाइपरविजर को प्रभावित करता है। इस प्रकार, एन्हांसियो डिवाइस मैपर एकीकरण से दूर चला गया है, जो कि इष्टतम उपयोग के मामलों के लिए उच्च प्रदर्शन प्रदान करता है।


 * राइट-अराउंड रीड लेटेंसी प्रभाव
 * राइट-अराउंड मोड में सभी राइट्स उच्च स्थिरता के लिए कैश को बायपास करते हैं। वर्तमान कार्यान्वयन एसएसडी डिवाइस के माध्यम से पढ़ता है और फिर उन्हें वास्तविक पाठक तक पहुंचाता है। इसका मतलब यह है कि पहले से अनकैश किए गए ब्लॉक को हमेशा पहले एसएसडी डिवाइस में जाने की जरूरत होगी, जिससे लगातार आईओ लिखा जा सकेगा। फ़ेसबुक द्वारा उपयोग किए जाने वाले एंटरप्राइज़ SSD या Highend PCIe उपकरणों पर कोई समस्या नहीं है, लेकिन निचले सिरे SSD पर प्रदर्शन को कम करता है।


 * राइट-अराउंड रीड कैश वार्म-अप चरण
 * राइट-अराउंड मोड में FlashCache के पास डिस्क वाले पृष्ठों की तुलना में संचित पृष्ठों की आयु की तुलना करने के लिए कोई जानकारी नहीं है। (1) क्योंकि डिवाइस को फ्लैशकैच के बाहर माउंट किया जा सकता था (2) क्योंकि इस मोड में कोई भी लिखा हुआ ट्रैक नहीं किया जाता है। इसका परिणाम प्रत्येक वॉल्यूम सक्रियण (यानी: रिबूट) के बाद एक खाली कैश में होता है। जब तक सभी गर्म क्षेत्रों को कैश नहीं किया जाता तब तक प्रदर्शन कम हो जाएगा।

यह भी देखें

 * बी.सी.ए
 * डीएम-कैश
 * कैश त्वरण सॉफ्टवेयर (इंटेल का उत्पाद)

बाहरी संबंध

 * Performance Comparison among EnhanceIO, bcache and dm-cache (LKML)
 * EnhanceIO, Bcache & DM-Cache Benchmarked
 * Flashcache at Facebook: From 2010 to 2013 and beyond
 * Facebook Releases Flashcache 3.0