कहते हैं कि आप एक खाली स्लेट के साथ शुरू करते हैं, यानी आपने फाइल सिस्टम को बिल्कुल एक्सेस नहीं किया है। अब कहते हैं कि आप स्टेट ("/ कुछ / dir / फ़ाइल") चलाते हैं। पहले कर्नेल को फ़ाइल ढूंढनी होती है, जिसे तकनीकी शब्दों में इनोड कहा जाता है। यह फाइलसिस्टम सुपरब्लॉक में देखकर शुरू होता है, जो रूट डायरेक्टरी के इनकोड को स्टोर करता है। फिर यह रूट डायरेक्टरी को खोलता है, "कुछ" पाता है, जो खोलता है, "dir" को ढूंढता है, आदि अंततः फाइल के लिए इनोड ढूंढता है।
फिर आपको वास्तव में इनोड डेटा पढ़ना होगा। पहले पढ़ने के बाद यह भी रैम में कैश किया जाता है। इसलिए, एक रीड को केवल एक बार ही होना है।
एक पुराने रिकॉर्ड प्लेयर की तरह HD के बारे में सोचो, एक बार जब आप सुई के साथ सही जगह पर होते हैं तो आप सामान को तेजी से पढ़ सकते हैं क्योंकि यह घूमता है। हालाँकि, एक बार जब आप एक अलग जगह पर जाना चाहते हैं, तो "मांग" कहा जाता है कि आप कुछ बहुत अलग कर रहे हैं। आपको हाथ को शारीरिक रूप से स्थानांतरित करने की आवश्यकता है, फिर जब तक सही जगह सुई के नीचे न हो, तब तक स्पिन करने के लिए प्रतीक्षा करें। इस तरह की शारीरिक गति स्वाभाविक रूप से धीमी होती है, इसलिए डिस्क के लिए समय बहुत अधिक होता है।
तो, हम कब चाहते हैं? यह निश्चित रूप से फाइलसिस्टम लेआउट पर निर्भर करता है। फाइलसिस्टम फाइल के प्रदर्शन को बढ़ाने के लिए लगातार फाइलों को स्टोर करने की कोशिश करते हैं, और वे आम तौर पर एक-दूसरे के पास एक निर्देशिका के लिए इनोड्स को स्टोर करने की कोशिश करते हैं, लेकिन यह सब उन चीजों पर निर्भर करता है जैसे फाइलें लिखी जाती हैं, फाइलसिस्टम का विखंडन, आदि। स्थिति, एक फ़ाइल के प्रत्येक स्टेटमेंट में एक सीक का कारण होगा और फिर फाइल के प्रत्येक ओपन में एक दूसरी खोज होगी। तो, यही कारण है कि चीजों को इतना लंबा समय लगता है जब कुछ भी कैश नहीं होता है।
कुछ फाइलसिस्टम दूसरों की तुलना में बेहतर हैं, डीफ़्रैग्मेन्टेशन मदद कर सकता है। आप ऐप्स में कुछ चीजें कर सकते हैं। उदाहरण के लिए, जीआईओ ने रीडिर () से प्राप्त इनोड्स को यह बताते हुए सॉर्ट किया कि यह उम्मीद है कि इनोड संख्या का डिस्क क्रम (यह आम तौर पर होता है) से किसी प्रकार का संबंध है और इस तरह से रैंडम सीक्स को आगे-पीछे करना कम करता है।
एक महत्वपूर्ण बात यह है कि मांग को कम करने के लिए अपने डेटा स्टोरेज और ऐप्स को डिज़ाइन करें। उदाहरण के लिए, यही कारण है कि Nautilus पढ़ने / usr / बिन धीमा है, क्योंकि वहाँ की फ़ाइलों में आम तौर पर कोई विस्तार नहीं होता है हमें प्रत्येक के लिए जादू सूँघने की आवश्यकता होती है। इसलिए, हमें प्रत्येक फ़ाइल => एक फ़ाइल प्रति तलाश => स्लोवू को खोलने की आवश्यकता है। एक और उदाहरण ऐसे ऐप हैं जो बहुत सारी छोटी फ़ाइलों में जानकारी संग्रहीत करते हैं, जैसे कि gconf करते थे, यह भी एक बुरा विचार है। वैसे भी, व्यवहार में मुझे नहीं लगता कि आप बहुत कुछ कर सकते हैं सिवाय विलंबता को छिपाने की कोशिश के।