অনুলিপি পৃষ্ঠাগুলি ছাড়াই মেমরি কীভাবে পরিমাপ করবেন?


8

দ্বি-গণনা ভাগ করে নেওয়া এবং অনুলিপি-রচনামূলক পৃষ্ঠা ছাড়াই কীভাবে কোনও মোট আরএসএস মেমরির (ফরকড) প্রক্রিয়াগুলির সেট দ্বারা পরিমাপ করা যায়?


1
অত্যন্ত আকর্ষণীয় প্রশ্ন, +1 - /proc/*/mapফাইলগুলির গভীরতর বিশ্লেষণের মাধ্যমে এটি সম্ভব হওয়া উচিত , যদিও আমি এর আগে এমন কোনও সরঞ্জাম পাইনি যা এই কাজটি করতে পারে। মূল সমস্যাটি হ'ল এটি অনুসরণ করা ডেটা স্ট্রাকচারগুলি আরও জটিল বলে মনে হয়। আপনি যদি এখানে একটি সুন্দর উত্তর না পান তবে আপনি ইউনিক্স এসইও চেষ্টা করতে পারেন।
পিটারহ - মনিকা

উত্তর:


4

আমি এর জন্য আমার নিজস্ব ইউটিলিটি লিখে শেষ করেছি: 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

2

সমস্ত ম্যাপিংস এবং ঠিকানাগুলির তুলনা করে কোনও প্রক্রিয়া কোন মানচিত্রকে ভাগ করে নিচ্ছে সে সম্পর্কে আমি জানি এমন কোনও সরঞ্জামে নির্ধারণের কোনও সুস্পষ্টভাবে নির্ধারিত উপায় নেই।

যাইহোক, লিনাক্স আনুষাঙ্গিক সেট আকার হিসাবে পরিচিত যুক্তিসঙ্গত প্রাক্কলন অফার করে না । এটি / proc / [pid]> / মানচিত্রে প্রতিবেদন করা হয়েছে।

এই মানটি হ'ল ম্যাপিংয়ের আকার একই ম্যাপিং খোলা সহ ভাইবোন / পিতামাতার প্রক্রিয়া সংখ্যার দ্বারা বিভক্ত।

সুতরাং, এমন একটি প্রোগ্রামের সাথে যেখানে 1MiB ম্যাপিং খোলা রয়েছে, এবং 4 টি অন্যান্য প্রক্রিয়ার সাথে 1MiB ভাগ করা আছে, আনুপাতিক সেট আকারটি 1MiB + (1Mib / 4) বা 1.250 MiB হয়। আরএসএস এই ক্ষেত্রে 2MiB হবে।

চারদিকে ভাসমান হ্যাপের জন্য একটি প্যাচ রয়েছে যা ব্যবহারের ক্ষেত্রে প্রকৃত মেমরির একটি 'ভাল অনুমান' গণনা করতে পিএসএস ব্যবহার করবে।

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