FreeBSDのRAM使用量の謎を解明

मूल शीर्षक: FreeBSD ate my RAM

यह क्यों महत्वपूर्ण है

OS की memory management को समझना सिस्टम administrators और developers के लिए server optimization में अत्यंत आवश्यक है।

ब्रूनो क्रोसी ने अपने FreeBSD सर्वर माइग्रेशन के दौरान RAM उपयोग में विसंगति पाई। fastfetch और btop के बीच अलग-अलग आंकड़े देखकर उन्होंने इसकी गहन जांच की और पाया कि OS डिस्क डेटा को RAM में cache करता है।

ब्रूनो क्रोसी ने पुराने Ubuntu सर्वर से FreeBSD पर माइग्रेशन के दौरान fastfetch और btop में RAM उपयोग के अलग-अलग आंकड़े देखे। Hacker News पर इस पर चर्चा हुई, जिसके बाद उन्होंने इस विषय पर गहन शोध किया।

मुख्य कारण यह है कि FreeBSD (और अन्य आधुनिक OS) डिस्क डेटा को RAM में cache करके सिस्टम की performance बेहतर बनाते हैं। यह cache volatile होता है और जब अधिक memory की जरूरत होती है, तो यह स्वतः खाली हो जाता है।

FreeBSD का Virtual Memory (VM) system physical memory को 4KiB के pages में विभाजित करता है। इन pages को विभिन्न queues में रखा जाता है:

- **Active**: userland processes द्वारा सक्रिय रूप से उपयोग किए जा रहे pages

- **Inactive**: जो pages कुछ समय से access नहीं हुए

- **Laundry**: swap में लिखे जाने वाले pages

- **Wired**: kernel द्वारा उपयोग, VM द्वारा प्रबंधित नहीं

- **Free**: पूरी तरह खाली memory

जब inactive pages को swap में लिखा जाता है और फिर process द्वारा मांगा जाता है, तो वे पुनः inactive से active queue में आ जाते हैं। Linux, OpenBSD, NetBSD और DragonFlyBSD में भी इसी तरह की व्यवस्था होती है। top कमांड इन सभी categories को विस्तार से दिखाता है, जो यह समझने में मदद करता है कि reported memory usage क्यों भ्रामक लग सकती है।

स्रोत

crocidb.com — मूल लेख पढ़ें →