2009-03-05 11 views
6

मैं अपनी परियोजना के लिए कैशिंग लागू करने की प्रक्रिया में हूं। कैश निर्देशिका संरचनाओं को देखने के बाद, मैंने कई उदाहरण देखे हैं जैसे:कैश निर्देशिका संरचना

cache 
cache/a 
cache/a/a/ 
cache/a/... 
cache/a/z 
cache/... 
cache/z 
... 

आपको यह विचार मिलता है। फ़ाइलों को संग्रहीत करने के लिए एक और उदाहरण है, मान लें कि हमारे फ़ाइल IMG_PARTY.JPG नाम पर है, एक आम तरीका नामक एक निर्देशिका में डाल दिया है करते हैं: मन के लिए आते हैं

files/i/m/IMG_PARTY.JPG 

कुछ विचार है, लेकिन मैं के लिए असली कारणों जानना चाहते हैं इस।

  • रैखिक लुकअप करने वाले फाइल सिस्टम फ़ाइलों को तेज़ी से ढूंढते हैं जब निर्देशिका में उनमें से कम होता है। ऐसी संरचना फाइलों को पतली फैलती है।

  • ऊपर गड़बड़ नहीं * rm तरह nix उपयोगिताओं, जो तर्क की एक सीमित संख्या लें और उन फ़ाइलों की बड़ी संख्या को हटाने जा hacky जाता

(होने यह हालांकि find आदि पारित करने के लिए) के लिए

असली कारण क्या है? "अच्छी" कैश निर्देशिका संरचना क्या है और क्यों?

उत्तर

3

हर बार जब मैंने इसे किया है, तो यह फाइल सिस्टम में धीमी रैखिक खोजों से बचने के लिए किया गया है। सौभाग्य से, कम से कम लिनक्स पर, यह अतीत की बात बन रहा है।

हालांकि, आज भी, बी-पेड़ आधारित निर्देशिकाओं के साथ, एक बहुत बड़ी निर्देशिका का सामना करना मुश्किल होगा, क्योंकि यह हमेशा के लिए ले जाएगा और एक दिन सिर्फ सभी फाइलों की सूची प्राप्त करने के लिए, सही नहीं ढूंढने पर कभी ध्यान न दें फ़ाइल।

+0

आह, सोचा कि इसका इसके साथ कुछ संबंध था। यह जानना अच्छा लगेगा कि कौन सा एफएस अभी भी रैखिक खोज का उपयोग करता है। स्वीकार्य के रूप में चयन करने से पहले मैं अधिक उत्तरों की प्रतीक्षा करूंगा, धन्यवाद! – Karolis

+1

लिनक्स पर, ext2 और ext3 रैखिक खोज का उपयोग करते हैं, जब तक कि फाइल सिस्टम के लिए dir_index विकल्प सक्षम नहीं है (यह अब थोड़ी देर के लिए डिफ़ॉल्ट है)। आम तौर पर, पुराने फाइल सिस्टम रैखिक का उपयोग करते हैं, नए पेड़ों का उपयोग करते हैं। –

2

बस तिथियों का उपयोग करें। चूंकि आप तिथि से हटा देंगे। :)

+0

मेरा अनुभव यह है कि यदि आपको कभी भी कैश को मैन्युअल रूप से साफ़ करने की आवश्यकता होती है, तो यह प्रदर्शन समस्याएं पैदा कर सकता है - क्योंकि कैश को प्रीवार्म करके, या जब कुछ लोकप्रिय पृष्ठों को हिट करते हैं) के बाद तुरंत बनाई गई सभी फाइलें निकट-समान टाइमस्टैम्प होंगी। –

2

यदि आप ls -l करते हैं, तो सभी फ़ाइलों को विवरण प्राप्त करने के लिए stat() एड होना आवश्यक है, जो लिस्टिंग समय में काफी जोड़ता है - ऐसा होता है कि एफएस हैश या रैखिक संरचनाओं का उपयोग करता है या नहीं।

इसलिए भले ही एफएस अविश्वसनीय रूप से बड़े निर्देशिका आकार के साथ मुकाबला करने की क्षमता है, वहाँ अच्छे कारणों के बड़े फ्लैट संरचनाओं के लिए नहीं

मैं GFS2 बेंचमार्क है (उन्होंने यह भी बैकअप लेने के लिए एक सुअर कर रहे हैं) कर रहे हैं (क्लस्टर्ड) एक निर्देशिका में 32,000 फाइलों के साथ या एक वृक्ष संरचना में व्यवस्थित - रिकर्सिव लिस्टिंग एक समतल संरचना में सभी होने पर 300 गुना तेजी से होती है (निर्देशिका सूची प्राप्त करने में 10 मिनट तक लग सकती है)

EXT4 ने समान अनुपात दिखाए लेकिन अंतिम बिंदु केवल कुछ सेकंड था, अधिकांश लोग ध्यान नहीं देंगे।

संबंधित मुद्दे