शीर्ष पर VSIZE का मान ps में VSZ (वर्चुअल सेट आकार) के मान से अलग क्यों है?


9

मुझे पता है कि VSZ psऐप के लिए आवंटित कुल पता स्थान के लिए है और कभी-कभी vsize ( psलिनक्स पर मैन पेज में उल्लिखित ) के रूप में अलियास किया जाता है, लेकिन इसमें VSIZE की परिभाषा क्या है top? IPhone से यह शीर्ष आउटपुट लिनक्स पर शीर्ष से अलग है:

 PID COMMAND      %CPU   TIME   #TH #PRTS #MREGS  RPRVT  RSHRD  RSIZE  VSIZE
 1875 emma         0.0%  0:30.83   7   139    932 17868K  5328K    29M   181M

root# ps -eo pid,rss,vsz|grep 1875
 1875  29324   441324

मैं अपनी किसी भी डार्विन मशीन पर इसे पुन: पेश नहीं कर सकता। यह मुझे लगता है कि खोल कि वे iphone पर सेटअप एक अजीब blockize सेट था?
बहुपद

वे RSIZE / rss की उसी तरह गणना करते दिखते हैं, लेकिन ps एक vsz 2.5x की रिपोर्ट कर रहे हैं जो शीर्ष द्वारा रिपोर्ट की गई तुलना में बड़ी है। हो सकता है topकि IOS पर साझा की गई चीज़ों को vsize या किसी चीज़ में शामिल न किया जाए।
टिम कैनेडी

"IPhone से यह शीर्ष आउटपुट लिनक्स पर शीर्ष से अलग है" - आश्चर्य की बात नहीं है, है?
13'13

जवाबों:


5

लिनक्स मेमोरी सिस्टम मेमोरी ऑप्टिमाइज़ेशन यूटिलिटीज और मेमोरी शेयरिंग के कई रूटों से भरा हुआ है, जिससे यह पता चलता है कि मेमोरी को कैसे साझा किया जाता है और किसके बीच उपभोग किया जाता है, एक बोझिल दृष्टिकोण। ps और अन्य ps संबंधित कमांड के आउटपुट सभी डेटा से अपने आउटपुट का काम करते हैं। /procफाइल सिस्टम के तहत । विशेष रूप सेps, RSS (निवासी आकार मेमोरी) और VSIZE (वर्चुअल मेमोरी साइज़) दोनों महत्वपूर्ण हैं, हालाँकि VSIZE मेमोरी का सही उपयोग नहीं दिखाता है और VSIZE और rss के बीच अंतर वास्तव में अभिप्रेत है और आरंभीकरण के दौरान कार्यक्रम के लिए आवंटित किया गया है, लेकिन अभी तक संदर्भित नहीं किया जा सकता है। जैसे कार्यक्रम में बहुत सारे पुस्तकालय जुड़े हो सकते हैं, लेकिन वे अभी तक लोड नहीं किए गए हैं क्योंकि वे वास्तविक प्रोग्राम रनटाइम में अभी तक संदर्भित नहीं हैं। RSS वास्तव में प्रोग्राम द्वारा उपयोग की जाने वाली कुल मेमोरी देता है, लेकिन मेमोरी की खपत की सही तस्वीर नहीं दे सकता है, क्योंकि आवंटित की गई अधिकांश मेमोरी उसी प्रक्रिया या अन्य प्रक्रियाओं के अन्य उदाहरणों के साथ साझा की जा सकती है। नीचे देखने से /proc/<processid>/mapsयह अंदाजा लगाया जा सकता है कि किस तरह से मेमोरी का उपयोग किया गया है, लेकिन वे शांत हो सकते हैं। उपयोगpmap -x <pid> कमांडलाइन से, स्प्रेडअप को देखने के लिए उपयोगी है।

अक्सर बेहतर उपयोगिताओं freeऔर हैं vmstatfreeआपको संपूर्ण वर्तमान मेमोरी खपत विवरण देगा और vmstat का उपयोग यह देखने के लिए किया जा सकता है कि इसे कितनी बार अपडेट किया जा रहा है।


एक और कारण या विचारपूर्ण स्पष्टीकरण क्यों पीएस को सही प्रक्रिया स्मृति उपयोग देने के लिए नहीं माना जाना चाहिए। इसे virtualthreads.blogspot.com/2006/02/…
निखिल मुल्ले

2
इस उत्तर का पोस्टर जो कहना चाहता है वह यह है कि उपयोग की जाने वाली स्मृति की परिभाषा जटिल और विविध है। कर्नेल में कोई एकल स्थान नहीं है जहां इसे ट्रैक और रिपोर्ट किया गया हो। उपयोगिताओं कर्नेल द्वारा रिपोर्ट किए गए कई आँकड़ों की अपनी व्याख्या करते हैं।
जोहान
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.