আপনি কীভাবে কাঁটাচামচ প্রক্রিয়াগুলির সেটগুলির মেমরির পদচিহ্নগুলি পরিমাপ করবেন?


8

বলুন আমি 200MB মেমরি ব্যবহার করে একটি প্রক্রিয়া পেয়েছি এবং এটি কাঁটাচামচ:

python -c "import os; data='x'*200000000; os.fork(); raw_input()"

'শীর্ষ' এর মতো প্রোগ্রামগুলি খুব কম এসএইচআরডি মেমরির সাথে 200MB ব্যবহার করে প্রতিটি প্রক্রিয়া দেখায়, সুতরাং এটি প্রদর্শিত হয় যেন প্রক্রিয়াগুলি মোট 400 এমবি ব্যবহার করছে। তবে, যেহেতু কাঁটাচামচ (প্রক্রিয়াটির মেমোরি পৃষ্ঠাগুলির জন্য কপি অন-রাইটিং (সিওডাব্লু) প্রয়োগ করে, বাস্তবতা হ'ল প্রক্রিয়াগুলি কেবলমাত্র 200MB ব্যবহার করে)।

কেন শীর্ষগুলি মেমরির কোন ভগ্নাংশ COW দেখায় না? এটি করার কোনও উপায় আছে? বা এর পরিবর্তে আমি অন্য কোনও আদেশ ব্যবহার করতে পারি?

দ্রষ্টব্য: ওএসএক্সের 'শীর্ষ' তে একটি আরএসএইচআরডি কলাম রয়েছে বলে মনে হচ্ছে যা আমি প্রত্যাশা করি। আমার প্রশ্ন লিনাক্সের জন্য।

উত্তর:


5

আপনি প্রবেশের /proc/<pid>/smapsআকারে প্রতিটি প্রক্রিয়াটির জন্য ফাইল থেকে এই ধরণের তথ্য পেতে পারেন Pss("সমানুপাতিক শেয়ারের আকারের জন্য সংক্ষিপ্ত)"।

উপরোক্ত উদাহরণে 200MB দুটি প্রসেসের মধ্যে "ভাগ" করা হয়েছে, প্রতিটি প্রক্রিয়া সেই ম্যাপিংয়ের জন্য পিএসএস এন্ট্রিতে 100MB দেখায়, অর্থাৎ মেমরিটি ভাগ করে নেওয়ার প্রক্রিয়াগুলির মধ্যে সমানভাবে বিতরণ করা হয় (যতক্ষণ না এটি উভয় প্রক্রিয়া দ্বারা অনুলিপি করা হয় এবং ভাগ না করা হয়)।

আপনি যা পোস্ট করেছেন তার মতো কিছু চালানো থেকে এখানে একটি নির্যাস দেওয়া হয়েছে:

$ top
...
30986 me        20   0  790m 769m 2200 S    0  4.8   0:00.48 python3.2
30987 me        20   0  790m 767m  224 S    0  4.8   0:00.00 python3.2
$ cat /proc/30986/smaps
...
0119a000-015b7000 rw-p 00000000 00:00 0                                  [heap]
Size:               4212 kB
Rss:                3924 kB
Pss:                1992 kB
...
7fa06b020000-7fa09ab11000 rw-p 00000000 00:00 0 
Size:             781252 kB
Rss:              781252 kB
Pss:              390626 kB
...
7fff8e45a000-7fff8e489000 rw-p 00000000 00:00 0                          [stack]
Size:                192 kB
Rss:                 160 kB
Pss:                  82 kB
...

(এই ফাইলগুলিতে প্রচুর স্টাফ রয়েছে, অনেকগুলি প্রক্রিয়াগুলির মধ্যে ভাগ করে নেওয়া ভাগ করা লাইব্রেরিগুলির ম্যাপিং সহ, এবং এইভাবে প্রতিটি প্রক্রিয়া তার পিএসএস এন্ট্রিতে সামান্য পরিমাণে জড়িত))

এটি সম্পর্কে একটি সুন্দর নিবন্ধ এখানে: ইসিএল: অ্যাপ্লিকেশনগুলি আসলে কতটা মেমরি ব্যবহার করছে?

আমি এই তথ্যটি প্রদর্শনের জন্য কোনও শীর্ষের মতো সাধারণ সরঞ্জাম সম্পর্কে জানি না এবং psদুর্ভাগ্যক্রমে এটি দেখানোর বিকল্প রয়েছে বলে আমি মনে করি না । নিবন্ধটি pagemapম্যাট ম্যাকল কলযুক্ত পাইথন স্ক্রিপ্টগুলির সাথে একটি সংগ্রহস্থলের দিকে ইঙ্গিত করেছে যা আপনি যদিও ব্যবহার করতে বা মানিয়ে নিতে পারেন।

লজ্জাজনক প্লাগ: আপনি ইউএসিক্স এবং পিএসএস সম্পর্কে লিনাক্স এবং smapsফাইলের বিষয়ে আগ্রহী কিছু পোস্ট পাবেন ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.