मैं एक निश्चित प्रक्रिया के स्मृति उपयोग के बारे में एक सुराग प्राप्त करने के लिए /proc/[pid]/statm
से डेटा पार्स करता हूं। man proc
बताता है कि निवासी सेट आकार ('पृष्ठों' में मापा गया) /proc/[pid]/status
में VmRSS (KB ??) जैसा ही है। चूंकि उनके पास अलग-अलग मूल्य हैं, इसलिए मैं इन मानों के बीच कनेक्शन को समझना चाहता हूं। क्या कोई ऐसा कारक है जो मैं /proc
में कहीं पढ़ सकता हूं (मैंने वीएमपीटीई के बारे में सोचा था लेकिन इसके sth। Else ...)? किसी निश्चित प्रक्रिया के लिए प्रयुक्त मेमोरी का आकार प्राप्त करने के लिए मुझे दोनों में से कौन सा विश्लेषण करना चाहिए?वीएमआरएसएस और निवासी सेट आकार कैसे मेल खाता है?
#ex 1782 = firefox
~$ cat /proc/1782/statm
224621 46703 9317 11 0 98637 0
# \--- resident set size
~$ cat /proc/1782/status | grep Vm
VmPeak: 935584 kB
VmSize: 898484 kB
VmLck: 0 kB
VmHWM: 257608 kB
VmRSS: 186812 kB
VmData: 394328 kB
VmStk: 220 kB
VmExe: 44 kB
VmLib: 61544 kB
VmPTE: 1224 kB
VmSwap: 0 kB
है मैं कहाँ proc से मूल्य प्राप्त करने के पता नहीं है, लेकिन मुझे लगता है मेरी pagesize 4KB है। मैं वीएमपीटीई द्वारा उलझन में था। ऐसा लगता है कि 'पृष्ठ तालिका के [पिड] भाग का आकार', फिर 'बफर प्रविष्टि का आकार' :) – lupz
हां, इनमें से बहुत से मूल्य सिस्टम-निर्भर हैं। कुछ प्रणालियों में मैंने काम किया है, उनमें से कुछ मान हमेशा 0 दे देंगे क्योंकि समर्थन कर्नेल में संकलित नहीं किया गया है। तो हाँ, विश्वास न करें कि मेरे आदमी पेज क्या कहते हैं क्योंकि वे आपके सिस्टम के लिए प्रासंगिक नहीं हो सकते हैं। – Ray
दरअसल, वर्चुअल मेमोरी = डिस्क में भाग + डिस्क पर भाग + वर्चुअल एड्रेस स्पेस भौतिक मेमोरी में मैप नहीं किया गया है + मेमोरी मैप की गई फाइलें + साझा मेमोरी। तो स्मृति खपत को मापने के लिए, VmSize बहुत बेकार है। Http://stackoverflow.com/questions/13308684/increase-of-virtual-memory-without-increse-of-vmsize – vcarel