free कमांड के इस्तेमाल, बफर/कैश और उपलब्ध मेमोरी का गहन विश्लेषण

प्रस्तावना

लिनक्स तथा उबंटू सर्वर वातावरण में संसाधनों के प्रदर्शन का आकलन करते समय सिस्टम एडमिनिस्ट्रेटर सबसे पहले जिस मूलभूत यूटिलिटी का रुख करते हैं, वह free कमांड है। इस मार्गदर्शिका में हम डेटा यूनिट्स बदलने वाले स्विचों से लेकर, available और buff/cache मेट्रिक्स के बीच के सूक्ष्म अंतर, तथा लाइव वर्कलोड के दौरान रैम की स्थिति पर निरंतर नजर रखने के व्यावहारिक तरीकों को गहराई से समझेंगे।

1. मेमोरी उपयोग का प्राथमिक अवलोकन और रीडेबिलिटी बढ़ाने वाले विकल्प (-h, -m, -g)

लिनक्स कर्नेल के अंतर्गत कुल फिजिकल रैम (RAM) तथा स्वैप स्पेस (Swap) के उपभोग, खाली पड़े ब्लॉक और रिज़र्व क्षेत्रों की तात्कालिक स्थिति जांचने के लिए free कमांड एक सर्वोपरि टूल है।
यदि इसे बिना किसी अतिरिक्त फ्लैग के चलाया जाए, तो टर्मिनल पर आंकड़े डिफ़ॉल्ट रूप से किबीबाइट (KiB) में दिखाई देते हैं, जिससे पहली नज़र में सटीक क्षमता का त्वरित अनुमान लगाना थोड़ा असहज हो सकता है।
⚙️ [महत्वपूर्ण कमांड विकल्प]

-b : मेमोरी के सभी आंकड़ों को सीधे बाइट्स (Bytes) के रूप में प्रदर्शित करता है।
-k : परिणाम को किबीबाइट (KiB) पैमाने पर दिखाता है (यह सिस्टम का डिफ़ॉल्ट व्यवहार है)।
-m : आउटपुट की गणना मेगाबाइट (MiB) के आधार पर प्रस्तुत करता है।
-g : सभी मैट्रिक्स को गीगाबाइट (GiB) के पैमाने में बदल देता है।
--mega : बाइनरी (1024) के स्थान पर दशमलव प्रणाली (1MB = 1,000,000B) के आधार पर मेगाबाइट मान दिखाता है।
--giga : 1000 के गुणक (1GB = 1,000,000,000B) का प्रयोग करके गीगाबाइट आंकड़े तैयार करता है।
-h : मानव-पठनीय (Human-readable) प्रारूप सक्षम करता है, जिससे मान के आकारानुसार उपयुक्त इकाइयां (B, Ki, Mi, Gi, Ti) स्वतः जुड़ जाती हैं।
-w : विस्तृत (wide) व्यू सक्रिय करता है, जिसमें बफ़र्स और पेज कैश को एकल कॉलम में मिलाने के बजाय पृथक-पृथक दिखाया जाता है।
-c [संख्या] : स्क्रीन पर मेमोरी के आंकड़ों को निर्धारित चक्रों तक बार-बार प्रिंट करता है।
-s [सेकंड] : दिए गए समयांतराल (सेकंडों में) के अनुसार आउटपुट को लगातार रिफ्रेश करता रहता है।
-t : फिजिकल रैम तथा स्वैप मेमोरी का कुल योग दर्शाने वाली एक अतिरिक्त सारांश पंक्ति (Total) जोड़ता है।

free कमांड का बुनियादी आउटपुट

सिस्टम पर free -h निष्पादित करने पर डेटा स्वतः ऐसे स्वरूप में बदल जाता है जिसे बिना किसी जटिल गणना के तुरंत समझा जा सकता है।
संख्या के परिमाण के अनुसार टर्मिनल अपने आप GiB, MiB अथवा KiB जैसे लेबल जोड़ देता है, इसी कारण दैनिक सर्वर रखरखाव में इंजीनियर्स इस विकल्प को सर्वाधिक प्राथमिकता देते हैं।

free -h मानव-पठनीय आउटपुट

जब आप free -m रन करते हैं, तो समस्त मेमोरी आंकड़े मानकीकृत रूप से मेगाबाइट (MiB) में संरेखित हो जाते हैं।
संख्यात्मक मान बिना किसी अक्षर प्रत्यय के शुद्ध अंकों में मिलते हैं, जिससे ऑटोमेशन बैश स्क्रिप्ट्स में मानों की पार्सिंग करना या सटीक थ्रेसहोल्ड की तुलना करना बेहद सुगम हो जाता है।

free -m मेगाबाइट आउटपुट

2. आउटपुट मेट्रिक्स का तकनीकी विश्लेषण: free बनाम available तथा बफर/कैश का विभाजन

जब free -h का परिणाम स्क्रीन पर आता है, तो कई अलग-अलग कॉलम दिखाई देते हैं जिनका सही तकनीकी अर्थ समझना आवश्यक है।
यहां free कॉलम उस स्मृति खंड को दर्शाता है जो इस समय पूर्णतः अप्रयुक्त है और जिसमें कोई भी सक्रिय या निष्क्रिय डेटा मौजूद नहीं है।
इसके विपरीत, available कॉलम उस अनुमानित मेमोरी क्षमता को इंगित करता है जिसे कोई नया ऐप्लिकेशन अनुरोध करने पर कर्नेल तुरंत उपलब्ध करा सकता है—भले ही वह वर्तमान में अस्थायी कैश या बफर के रूप में व्यस्त क्यों न दिख रही हो।
अतः लिनक्स आर्किटेक्चर में वास्तविक रूप से बची हुई कार्यशील मेमोरी का सही पैमाना free नहीं, बल्कि available का मान होता है।

free और available कॉलम का तुलनात्मक दृश्य

-w स्विच के साथ free -h -w कमांड देने पर संयुक्त buff/cache श्रेणी दो स्वतंत्र हिस्सों—buffers एवं cache—में बंटकर प्रदर्शित होती है।
buffers ब्लॉक डिवाइसों के I/O ऑपरेशनों तथा फाइलसिस्टम मेटाडेटा के लेन-देन को सुगम बनाने हेतु कर्नेल द्वारा उपयोग किया जाने वाला अस्थायी बफर है।
वहीं cache (पेज कैश) वह क्षेत्र है जहां डिस्क से पढ़ी गई फाइलों को रैम में सुरक्षित रखा जाता है ताकि भविष्य के रीड ऑपरेशनों को अत्यधिक तीव्र बनाया जा सके।
सिस्टम पर नए प्रोसेस का दबाव बढ़ते ही ऑपरेटिंग सिस्टम इन दोनों क्षेत्रों से डेटा तुरंत हटाकर नए प्रोग्रामों को रैम सौंपने में पूरी तरह सक्षम होता है।

बफ़र्स और कैश का पृथक विवरण

कर्नेल जिस आंतरिक मेमोरी अकाउंटिंग के आधार पर निर्णय लेता है, उस मूल डेटा का सीधा निरीक्षण करने के लिए head -n 10 /proc/meminfo का प्रयोग किया जा सकता है।
वास्तव में free टूल द्वारा दर्शाए जाने वाले MemTotal, MemFree, MemAvailable, Buffers और Cached जैसे आंकड़े इसी स्यूडों-फाइल सिस्टम के कच्चे डेटा से परिकलित किए जाते हैं।
जब भी किसी ऑटोमेशन पाइपलाइन में कमांड के आउटपुट की प्रमाणिकता जांचनी हो या कर्नेल स्तर पर मेमोरी का गहन ऑडिट करना हो, यह फाइल सबसे भरोसेमंद स्रोत साबित होती है।

proc meminfo की शीर्ष पंक्तियां

3. रीयल-टाइम मेमोरी ट्रैकिंग और संयुक्त योग पंक्ति (Total) का प्रदर्शन (-s, -c, -t)

free -h -t का निष्पादन करने पर आउटपुट के अंत में एक अतिरिक्त पंक्ति जुड़ जाती है, जो भौतिक रैम (Mem) और डिस्क-आधारित स्वैप (Swap) दोनों का कुल जोड़ (Total) स्पष्ट करती है।
इस संयुक्त योग से इन्फ्रास्ट्रक्चर एडमिनिस्ट्रेटर को मशीन की कुल मेमोरी सीमा और समूचे सिस्टम स्तर पर चल रहे लोड का एकमुश्त जायजा लेने में अत्यधिक आसानी होती है।

फिजिकल और स्वैप मेमोरी का कुल योग

free -h -s 2 -c 3 कमांड प्रत्येक 2 सेकंड के अंतराल (-s 2) पर सिस्टम की स्थिति का परीक्षण करती है और कुल 3 बार (-c 3) परिणाम स्क्रीन पर प्रिंट करके समाप्त हो जाती है।
जब किसी विशिष्ट बैकएंड जॉब, बैच स्क्रिप्ट या डेटाबेस क्वेरी के चलने के दौरान मेमोरी में होने वाले उतार-चढ़ाव की निगरानी करनी हो, तब यह तकनीक अत्यंत उपयोगी सिद्ध होती है।

समयबद्ध अंतराल पर मेमोरी मॉनिटरिंग

4. मेमोरी स्ट्रेस टेस्टिंग के जरिए गतिशील खपत का प्रत्यक्ष परीक्षण

सिस्टम रैम पर कृत्रिम दबाव डालकर व्यवहार की पुष्टि करने हेतु सबसे पहले लोड जनरेशन टूल stress को इंस्टॉल किया जाता है।

stress पैकेज की स्थापना प्रक्रिया

अतिरिक्त वर्कलोड शुरू करने से पहले सिस्टम की आधारभूत स्थिति (बेसलाइन) का रिकॉर्ड रखने के लिए free -h रन किया जाता है।
इस प्रारंभिक अवस्था में used 5.2GiB, अप्रयुक्त free 1.2GiB तथा नए अनुप्रयोगों हेतु available 2.0GiB पर स्थिर दिख रहा है, जो सामान्य परिचालन स्थिति को दर्शाता है।

स्ट्रेस से पूर्व की मेमोरी स्थिति

इसके बाद stress --vm 1 --vm-bytes 256M --timeout 5s कमांड के माध्यम से 5 सेकंड की अवधि के लिए 256MB रैम आवंटित करने वाला 1 वर्कर थ्रेड सक्रिय किया जाता है।
इस कृत्रिम वर्कलोड के सक्रिय होते ही ऑपरेटिंग सिस्टम के मेमोरी एलोकेशन तंत्र में क्षणिक बदलाव घटित होता है।

मेमोरी पर सिंथेटिक वर्कलोड का निष्पादन

दबाव परीक्षण पूर्ण होते ही वास्तविक प्रभावों की जांच हेतु पुनः free -h से स्थिति की समीक्षा की जाती है।
शुरुआती माप की तुलना में सक्रिय खपत used 5.2GiB से बढ़कर 5.3GiB पर पहुंच गई, जबकि free घटकर 1.0GiB और available संकुचित होकर 1.9GiB रह गई—जो यह स्पष्ट प्रमाण प्रस्तुत करता है कि वर्कलोड के अनुरोध पर रैम का तत्काल पुनर्वितरण हुआ है।

स्ट्रेस टेस्ट के उपरांत मेमोरी खपत के आंकड़े

इस लेख के माध्यम से हमने लिनक्स सर्वर पर मेमोरी की कमी की स्थिति से निपटने के लिए free कमांड के व्यावहारिक उपयोग, उसके प्रमुख मापदंडों तथा आंतरिक बफर और पेज कैश के सटीक विश्लेषण को विस्तार से समझा।
इन विश्लेषणात्मक तकनीकों और फ़िल्टरों का दैनिक परिचालन में उपयोग करके आप अपने उत्पादन परिवेश (Production Environment) में रैम से संबंधित समस्याओं का त्वरित और सटीक निवारण कर सकते हैं।