দ্বি-গণনা ভাগ করে নেওয়া এবং অনুলিপি-রচনামূলক পৃষ্ঠা ছাড়াই কীভাবে কোনও মোট আরএসএস মেমরির (ফরকড) প্রক্রিয়াগুলির সেট দ্বারা পরিমাপ করা যায়?
দ্বি-গণনা ভাগ করে নেওয়া এবং অনুলিপি-রচনামূলক পৃষ্ঠা ছাড়াই কীভাবে কোনও মোট আরএসএস মেমরির (ফরকড) প্রক্রিয়াগুলির সেট দ্বারা পরিমাপ করা যায়?
উত্তর:
আমি এর জন্য আমার নিজস্ব ইউটিলিটি লিখে শেষ করেছি: https://gist.github.com/Eugeny/04ccfe8accf4bc74b0ca
আমি এটি init
পরীক্ষার জন্য (পিড 1) এর বিপরীতে চালিয়েছি এবং মোট রিপোর্ট করা মোট শারীরিক ভেড়ার ব্যবহারের সমান (এইচটিপি অনুযায়ী), তাই আমি অনুমান করি যে এটি কিছুটা সঠিক।
উদাহরণ ব্যবহার:
~ » pstree -ap 15897
zsh,15897
└─sudo,9783 make rundev
└─make,9784 rundev
└─sh,9785 -c cd ajenti-panel && ./ajenti-panel -v --autologin --plugins ../plugins --dev
└─python ./ajenti,9786
├─./ajenti-panel ,9834
├─./ajenti-panel ,9795
└─{python ./ajenti},9796
~ » sudo ./memuse.py 15897
PID Commandline Frames (+unique) VMEM
- 15897 (/usr/bin/zsh ): 1776 +1776 7104 KB
- 9783 (sudo make rundev ): 608 +408 2432 KB
- 9784 (make rundev ): 261 +98 1044 KB
- 9785 (/bin/sh -c cd ajenti-panel && ): 166 +48 664 KB
- 9786 (python ./ajenti-panel -v --aut): 9279 +8977 37116 KB
- 9795 (./ajenti-panel worker [restric): 7637 +1334 30548 KB
- 9834 (./ajenti-panel worker [session): 8972 +2639 35888 KB
----------------------------------------------------------------------------------------
TOTAL: 15280 61120 KB
সমস্ত ম্যাপিংস এবং ঠিকানাগুলির তুলনা করে কোনও প্রক্রিয়া কোন মানচিত্রকে ভাগ করে নিচ্ছে সে সম্পর্কে আমি জানি এমন কোনও সরঞ্জামে নির্ধারণের কোনও সুস্পষ্টভাবে নির্ধারিত উপায় নেই।
যাইহোক, লিনাক্স আনুষাঙ্গিক সেট আকার হিসাবে পরিচিত যুক্তিসঙ্গত প্রাক্কলন অফার করে না । এটি / proc / [pid]> / মানচিত্রে প্রতিবেদন করা হয়েছে।
এই মানটি হ'ল ম্যাপিংয়ের আকার একই ম্যাপিং খোলা সহ ভাইবোন / পিতামাতার প্রক্রিয়া সংখ্যার দ্বারা বিভক্ত।
সুতরাং, এমন একটি প্রোগ্রামের সাথে যেখানে 1MiB ম্যাপিং খোলা রয়েছে, এবং 4 টি অন্যান্য প্রক্রিয়ার সাথে 1MiB ভাগ করা আছে, আনুপাতিক সেট আকারটি 1MiB + (1Mib / 4) বা 1.250 MiB হয়। আরএসএস এই ক্ষেত্রে 2MiB হবে।
চারদিকে ভাসমান হ্যাপের জন্য একটি প্যাচ রয়েছে যা ব্যবহারের ক্ষেত্রে প্রকৃত মেমরির একটি 'ভাল অনুমান' গণনা করতে পিএসএস ব্যবহার করবে।
/proc/*/map
ফাইলগুলির গভীরতর বিশ্লেষণের মাধ্যমে এটি সম্ভব হওয়া উচিত , যদিও আমি এর আগে এমন কোনও সরঞ্জাম পাইনি যা এই কাজটি করতে পারে। মূল সমস্যাটি হ'ল এটি অনুসরণ করা ডেটা স্ট্রাকচারগুলি আরও জটিল বলে মনে হয়। আপনি যদি এখানে একটি সুন্দর উত্তর না পান তবে আপনি ইউনিক্স এসইও চেষ্টা করতে পারেন।