কোনও অ্যাপ্লিকেশন বা প্রক্রিয়াটির আসল মেমরি ব্যবহার কীভাবে পরিমাপ করা যায়?


712

এই প্রশ্নটি এখানে মহান বিবরণে আচ্ছাদিত ।

আপনি লিনাক্সে কোনও অ্যাপ্লিকেশন বা প্রক্রিয়াটির মেমরির ব্যবহারটি কীভাবে পরিমাপ করবেন?

ব্লগ নিবন্ধ থেকে লিনাক্স বোঝাপড়া মেমোরি ব্যবহার , psএই অভিপ্রায় জন্য ব্যবহার করতে একটি সঠিক টুল নয়।

কেন ps"ভুল"

আপনি কীভাবে এটি তাকান তার উপর নির্ভর করে psপ্রক্রিয়াগুলির আসল মেমরির ব্যবহারের প্রতিবেদন করে না। এটি সত্যিই কী করছে তা দেখানো হচ্ছে যদি কেবলমাত্র এটিই চলত তবে প্রতিটি প্রক্রিয়াটি কতটা সত্যিকারের স্মৃতি গ্রহণ করবে । অবশ্যই, একটি লিনাক্স লিনাক্স মেশিনে যে কোনও সময়ে বেশ কয়েকটি ডজন প্রসেস চলমান, যার অর্থ ভিএসজেড এবং আরএসএসের সংখ্যাগুলি psপ্রায় নিশ্চিতভাবেই ভুল


6
এই প্রশ্নটি সম্ভবত আজকাল পরিবর্তে সার্ভারফল্ট ডটকমের অন্তর্গত, যদিও এটি আমাকে বলছে যে এটি "মাইগ্রেট করার পক্ষে খুব পুরানো" " যদিও এটি বন্ধ করতে চাইবেন না ...
থোমাসরুতার

এই প্রশ্নটি দেখুন। stackoverflow.com/questions/669438/…
ব্লাডমুন

2
প্রকৃতপক্ষে psএমনকি এটিও দেখায় না - এটি ভার্চুয়াল এবং আবাসিক মেমরি সংখ্যাগুলি দেখায়, যেখানে ভার্চুয়াল সর্বাধিক পরিমাণ মেমরি প্রক্রিয়াটি তাত্ত্বিকভাবে এটি ব্যবহার করতে পারে এটি একমাত্র প্রক্রিয়া (কখনই হয় না), বরাদ্দকৃত প্রতিটি পৃষ্ঠা ব্যবহার করে (কখনও ঘটে না) এবং কোনও পৃষ্ঠা মানচিত্র বা আনম্যাপ করা হয়নি (সম্ভাব্য)। যদিও বাসিন্দা দেখায় এখনই কতটা ভার্চুয়াল মেমরি ম্যাপ করা আছে। সাধারণত virt > usage > res64-বিট সিস্টেমে virt ~= res*10এটি খুব বিস্তৃত পরিসীমা।
দিমা তিস্নেক

5
লিঙ্কযুক্ত নিবন্ধের অংশটি মোট বোকা। আরএসএস আসলে ব্যবহৃত শারীরিক স্মৃতি এবং ভিএসজেড শারীরিক স্মৃতি ব্যবহারে অনুবাদ বা নাও করতে পারে যদিও প্রক্রিয়াটি কেবলমাত্র একটি চলমান ছিল।
ডেভিড শোয়ার্টজ

উত্তর:


356

সঙ্গে psঅনুরূপ সরঞ্জাম অথবা আপনি ওনলি মেমোরি পৃষ্ঠাগুলি প্রক্রিয়া দ্বারা বরাদ্দ পরিমাণ পাবেন। এই সংখ্যাটি সঠিক, তবে:

  • অ্যাপ্লিকেশন দ্বারা ব্যবহৃত মেমরির আসল পরিমাণ প্রতিফলিত করে না, কেবল এটির জন্য মেমরির পরিমাণ সংরক্ষণ করা

  • পৃষ্ঠাগুলি ভাগ করা থাকলে বিভ্রান্তিকর হতে পারে, উদাহরণস্বরূপ বেশ কয়েকটি থ্রেড দ্বারা বা গতিশীল লিঙ্কযুক্ত লাইব্রেরি ব্যবহার করে

আপনার অ্যাপ্লিকেশনটি আসলে কী পরিমাণ মেমরি ব্যবহার করে তা যদি আপনি সত্যিই জানতে চান তবে আপনাকে এটি কোনও প্রোফাইলারের মধ্যে চালানো দরকার। উদাহরণস্বরূপ, valgrindআপনাকে ব্যবহৃত মেমরির পরিমাণ এবং আরও গুরুত্বপূর্ণভাবে আপনার প্রোগ্রামে মেমরির সম্ভাব্য সম্ভাবনা সম্পর্কে অন্তর্দৃষ্টি দিতে পারে। ভালগ্রাইন্ডের হিপ প্রোফাইলার সরঞ্জামটিকে 'ম্যাসিফ' বলা হয়:

ম্যাসিফ হিপ প্রোফাইলার। এটি কোনও প্রোগ্রামের হ্যাপের নিয়মিত স্ন্যাপশট নিয়ে বিশদ হিপ প্রোফাইলিং সম্পাদন করে। প্রোগ্রামের কোন অংশটি সর্বাধিক মেমরির বরাদ্দের জন্য দায়ী তা সম্পর্কিত তথ্য সহ এটি সময়ের সাথে সাথে হিপ ব্যবহার দেখাচ্ছে এমন একটি গ্রাফ তৈরি করে। গ্রাফটি এমন কোনও পাঠ্য বা এইচটিএমএল ফাইল দ্বারা পরিপূরক করা হয়েছে যেখানে সর্বাধিক মেমরি বরাদ্দ করা হচ্ছে তা নির্ধারণের জন্য আরও তথ্য অন্তর্ভুক্ত। মাসিফ প্রায় 20x স্বাভাবিকের চেয়ে ধীরে ধীরে প্রোগ্রাম পরিচালনা করে।

ভালগ্রাইন্ড ডকুমেন্টেশনে যেমন ব্যাখ্যা করা হয়েছে , আপনাকে প্রোগ্রামটি ভালগ্রাইন্ডের মাধ্যমে চালানো দরকার:

valgrind --tool=massif <executable> <arguments>

ম্যাসিফ মেমরি ব্যবহারের স্ন্যাপশটগুলির একটি ডাম্প লিখেছেন (উদাঃ massif.out.12345)। এগুলি (1) মেমরির ব্যবহারের একটি টাইমলাইন, (2) প্রতিটি স্ন্যাপশটের জন্য, আপনার প্রোগ্রামের মেমরিটি কোথায় বরাদ্দ করা হয়েছিল তার একটি রেকর্ড সরবরাহ করে। এই ফাইলগুলি বিশ্লেষণের জন্য দুর্দান্ত গ্রাফিকাল সরঞ্জাম হ'ল ম্যাসিফ-ভিজুয়ালাইজার । তবে আমি পেয়েছি ms_print, ভালগ্রাইন্ডের সাথে পাঠানো একটি সাধারণ পাঠ্য-ভিত্তিক সরঞ্জাম, ইতিমধ্যে প্রচুর সহায়তার জন্য।

মেমরি ফাঁস খুঁজে পেতে, memcheckভ্যালগ্রাইন্ডের (ডিফল্ট) সরঞ্জামটি ব্যবহার করুন ।


44
ভালগ্রাইন্ড দ্বারা উত্পাদিত ফলাফলগুলি ব্যাখ্যা করতে, আমি আলিওপকে সুপারিশ করতে পারি। এটি খুব অভিনব নয়, এবং ফাঁসের উত্সগুলি সনাক্ত করতে আপনার যা জানা দরকার তা কেবল আপনাকে জানায়। ইউটিলিটির একটি দুর্দান্ত জুড়ি।
ড্যান

6
আইটেম (ক) সঠিক। ব্যবহৃত পৃষ্ঠাগুলি এবং মেলোকে (), নতুন ইত্যাদির মাধ্যমে অ্যাপ্লিকেশন দ্বারা বরাদ্দ করা মেমরির মধ্যে পার্থক্য রয়েছে The
jcoffland

63
এটি কীভাবে ভ্যালগ্র্যান্ড ব্যবহার করে মেমরির ব্যবহার পাবেন?
ম্যাট জয়েনার

11
ডিফল্ট ভালগ্রাইন্ড সরঞ্জাম, মেমচেক মেমরি ফাঁস সনাক্তকরণের জন্য দরকারী তবে এটি আসলে কোনও মেমরি প্রোফাইলার নয়। তার জন্য, আপনি ভালগ্রাইন্ড - টোল = ম্যাসিফ চান।
টড মুক্ত

3
@ ডেভিডশওয়ার্টজ আমি দেখতে পাচ্ছি না যে আপনার বিবৃতি আমার সাথে বিরোধিতা করছে। আমার অনুভূতি আছে যে আমি আসলে যা বলছি তা পড়ার চেয়ে আপনি আমাকে "ভুল" হওয়ার বিষয়ে আপনার দৃষ্টিভঙ্গি নিয়ে খুব উদ্বিগ্ন। আমার এখানে সম্পূর্ণ বক্তব্যটি হ'ল আরএসএস হ'ল অ্যাপ্লিকেশনটির বাস্তব মেমরির ব্যবহারের জন্য একটি অযৌক্তিক পদক্ষেপ এবং আপনি আপনার শেষ দুটি বাক্যে একই পয়েন্টটি তৈরি করছেন। সত্যিই, আপনি এমনকি আমার কাছে আরএসএস সংকোচনের বিষয়টি প্রথম স্থানে আনার কারণ কী বলে মনে করেছিলেন? যাতে আপনি যে বিষয়টি উল্লেখ করছি ঠিক তা দিয়ে আমাকে "ভুল" প্রমাণ করার জন্য আপনি এটি আমার কাছে আবার বানান করলেন? আমার প্রতি আপনার মনোভাব ক্লান্তিকর।
ypnos

280

ব্যবহার করে দেখুন pmap কমান্ড প্রয়োগ করুন:

sudo pmap -x <process pid>

45
sudo দিয়ে চালান বা এটি কোনও ত্রুটি দেয় না এবং মেমরি গ্রাসিত দেখায় না।
ম্যাট


3
এটাই প্রশ্নের পুরো উত্তর! পুনশ্চ. আমার শেলের মধ্যে, পিএমএপি sudo ছাড়া প্রক্রিয়াটি পড়তে পারে।
মাস্টারকন্ট্রোল প্রোগ্রাম

7
পুনরায় OS X এর (আপাতদৃষ্টিতে না ওপি উদ্বিগ্নতা তুলে ধরে), আপনি vmmap ব্যবহার (1) কিছু অনুরূপ ডেটা দেখতে পারেন
jrg

দ্রষ্টব্য: থেকে সম্পূর্ণ ভিন্ন উত্তর দেয়gnome-system-monitor
ribamar

190

নিশ্চিত করে বলা শক্ত, তবে এখানে দুটি "ঘনিষ্ঠ" জিনিসগুলি সহায়তা করতে পারে।

$ ps aux 

আপনাকে ভার্চুয়াল আকার (VSZ) দেবে

আপনি / প্রো ফাইল ফাইল-সিস্টেম থেকে গিয়ে বিশদ পরিসংখ্যানগুলিও পেতে পারেন /proc/$pid/status

সর্বাধিক গুরুত্বপূর্ণ হ'ল ভিএম সাইজ, যা দেবে তার কাছাকাছি হওয়া উচিত ps aux

/ proc / 19420 $ বিড়ালের স্থিতি
নাম: ফায়ারফক্স
রাজ্য: এস (ঘুমন্ত)
টিজিড: 19420
পিড: 19420
পিপিড: ১
ট্রেসারপিড: 0
Uid: 1000 1000 1000 1000
গিড: 1000 1000 1000 1000
এফডিএসাইজ: 256
দলগুলি: 4 6 20 24 25 29 30 44 46 107 109 115 124 1000 
ভিএমপিক: 222956 কেবি
ভিএম সাইজ: 212520 কেবি
ভিএমএলক: 0 কেবি
ভিএমএইচডাব্লুএম: 127912 কেবি
ভিএমআরএসএস: 118768 কেবি
ভিএমডেটা: 170180 কেবি
ভিএমস্টেক: 228 কেবি
ভিএমএক্সি: 28 কেবি
ভিএমলিব: 35424 কেবি
ভিএমপিটিই: 184 কেবি
থ্রেড: 8
সিগকিউ: 0/16382
সিগপেন্ড: 0000000000000000
ShdPnd: 0000000000000000
সিগব্লক: 0000000000000000
সিগআইগন: 0000000020001000
সিগসিজিটি: 000000018000442f
ক্যাপআইএন: 0000000000000000
ক্যাপপ্রিম: 0000000000000000
ক্যাপএফ: 0000000000000000
সিপাস_নয়েড: ০ 03
মেমস_গ্রেড: ১
স্বেচ্ছাসেবী_সামগ্রী_দ্বারা: 63422
অবিচ্ছিন্ন_সামগ্রী_সুইচগুলি: 7171


21
আমি কিছু অনুপস্থিত করছি? প্রশ্নে জিজ্ঞাসা করা হয়েছিল যে কীভাবে কোনও প্রক্রিয়া দ্বারা মেমরির ব্যবহার আরও ভালভাবে পরিমাপ করা যায়, প্রদত্ত ভিএসজেড এবং আরএসএস বিএস-এ বিভ্রান্তকারী। আপনার উত্তরের বিবরণে কীভাবে ভিএসজেড সন্ধান করা যায় - একই মান যা বিভ্রান্তিকর বলে উল্লেখ করা হয়েছিল।
thomasrutter

16
@ থোমাস্রুটটার হ্যাঁ, আপনি আসল প্রশ্নটি মিস করছেন (রেভ 1), এটি বেশ কয়েকবার সম্পাদিত হয়েছে এবং বেশ পুরানো (২০০৮)। মূল প্রশ্নটি কেবল একটি প্রক্রিয়াটির মেমরির ব্যবহার কীভাবে পরিমাপ করতে হবে তা জানতে চেয়েছিল। প্রশ্নগুলি এবং উত্তরগুলি সম্পাদনা করতে দ্বিধা বোধ করুন, যদিও জিনিসগুলি পুরানো। :)
ডাস্টিনবি

1
দ্রষ্টব্য: থেকে সম্পূর্ণ ভিন্ন উত্তর দেয়gnome-system-monitor
ribamar

131

লিনাক্সের সাম্প্রতিক সংস্করণগুলিতে, এসএমএসের সাবসিস্টেমটি ব্যবহার করুন । উদাহরণস্বরূপ, 1234 এর পিআইডি সহ একটি প্রক্রিয়া:

cat /proc/1234/smaps

এটি আপনাকে জানায় যে এটি ঠিক কতটা স্মৃতি ব্যবহার করছে। আরও গুরুত্বপূর্ণ, এটি মেমোরিটিকে ব্যক্তিগত এবং ভাগ করা হিসাবে ভাগ করে দেবে, যাতে আপনি প্রোগ্রামটির একাধিক উদাহরণের মধ্যে ভাগ করা মেমরিকে বাদ দিয়ে প্রোগ্রামটির উদাহরণটি আপনার কতটা মেমরি ব্যবহার করছে তা বলতে পারবেন ।


আমার ধারণা pmapএটির জন্য একটি সহজ ইন্টারফেস।
ribamar

126

এটি গণনা করার কোনও সহজ উপায় নেই। তবে কিছু লোক কিছু ভাল উত্তর পাওয়ার চেষ্টা করেছে:


মেমরি এবং প্রক্রিয়াটির একটি পরিষ্কার তালিকা সুন্দর ফলাফল
রুবায়াস্টিক

বেশ স্মার্ট গ্রুপিং সহ খুব সুন্দর।
রোহমার 20

ইয়াপ, সত্যিই বেশ সুন্দর। আমি শেষ ব্যবহারকারী ব্যবস্থাগুলির জন্য খুঁজে পেয়েছি ps_memএবং smemখুব দরকারী, যেমন। pmapএর অত্যন্ত বিস্তৃত আউটপুটটি ডেভসের দিকে গিয়ার করা হয়েছে ... প্রতিটি ফন্ট, অ্যাডনস এবং লিব্সের জন্য ফায়ারফক্সের মেমরির ব্যবহার পুনরুদ্ধার করতে দেয়। আপনাকে সমস্ত এক্সপ্রেস ধন্যবাদ। @ ব্যাশ, @ থোমাস্রুথার
tuk0z

এই এখন পর্যন্ত একমাত্র একgnome-system-monitor
আউটপুটটি

110

ব্যবহারের smem , যা একটি বিকল্প PS যা প্রক্রিয়া প্রতি ইউএসএস এবং PSS হিসাব করে। আপনি যা চান তা সম্ভবত পিএসএস।

  • ইউএসএস - স্বতন্ত্র সেট আকার। এটি সেই অংশবিহীন মেমরির পরিমাণ যা এই প্রক্রিয়াটির জন্য স্বতন্ত্র (এটিকে অনন্য মেমরির জন্য ইউ হিসাবে ভাবেন )। এতে ভাগ করা মেমরি অন্তর্ভুক্ত নয়। সুতরাং এটি কোনও প্রক্রিয়া ব্যবহার করে এমন পরিমাণ মেমরির নীচে- প্রতিবেদন করবে তবে আপনি যখন ভাগ করা মেমরি উপেক্ষা করতে চান তখন সহায়ক is

  • পিএসএস - আনুপাতিক সেট আকার। এটাই তুমি চাও. এটি একসাথে অনন্য মেমরি (ইউএসএস) যুক্ত করে, তার মেমরি ভাগ করে নেওয়ার প্রক্রিয়াগুলির সংখ্যা দ্বারা বিভক্ত তার ভাগ করা মেমরির একটি অনুপাতের সাথে। সুতরাং এটি আপনাকে প্রক্রিয়া অনুযায়ী প্রকৃত শারীরিক মেমরির কতটা ব্যবহার করা হচ্ছে তার সঠিক প্রতিনিধিত্ব দেবে - ভাগ করে নেওয়া মেমরিটিকে সত্যিকার অর্থে ভাগ করে নেওয়া হয়েছে। শারীরিক স্মৃতির জন্য পি থাকার কথা ভাবুন ।

এটি কীভাবে পিএস এবং অন্যান্য ইউটিলিটিগুলির দ্বারা রিপোর্ট করা RSS এর সাথে তুলনা করে :

  • আরএসএস - আবাসিক সেট আকার। এটি প্রতিটি প্রক্রিয়া দ্বারা ভাগ করা মেমরি প্লাস ভাগ না করা মেমরির পরিমাণ। যদি কোনও প্রক্রিয়া মেমরি ভাগ করে, তবে এটি প্রকৃতপক্ষে ব্যবহৃত মেমরির পরিমাণকে বেশি করে রিপোর্ট করবে কারণ একই ভাগ করা মেমরিটি একাধিকবার গণনা করা হবে - একই স্মৃতি ভাগ করে নেওয়ার পরস্পর প্রক্রিয়ায় আবার উপস্থিত হবে। সুতরাং এটি মোটামুটি অবিশ্বাস্য, বিশেষত যখন উচ্চ-মেমরির প্রক্রিয়াগুলিতে প্রচুর কাঁটাচামচ থাকে - যা সার্ভারে অ্যাপাচি বা পিএইচপি (ফাস্টসিজি / এফপিএম) প্রক্রিয়াগুলির মতো জিনিসগুলির মধ্যে সাধারণ।

বিজ্ঞপ্তি: গন্ধ পাই (চার্জযুক্ত) আউটপুট গ্রাফ যেমন পাই চার্ট এবং এর মতো করতে পারে। আইএমও আপনার কোনও প্রয়োজন নেই। আপনি যদি কেবল কমান্ড লাইন থেকে PS -A v ব্যবহার করতে চান তবে এটি আপনাকে পাইথন-ম্যাটপ্ল্লোলিব প্রস্তাবিত নির্ভরতা ইনস্টল করতে হবে না।


2
আরএসএস সম্পর্কে একটি সমালোচনামূলক বিষয় হ'ল আজকাল বেশিরভাগ অ্যাপ্লিকেশনগুলি প্রচুর কোড পৃষ্ঠা ভাগ করে। প্রতিটি ভাগ করা লাইব্রেরি (যেমন libc এবং libstdc ++) এটি ব্যবহার করে প্রতিটি প্রক্রিয়ার জন্য গণনা করা হবে। এবং যদি কোনও প্রক্রিয়া চলমান হওয়ার একাধিক উদাহরণ থাকে, তবে সমস্ত কোড দ্বিগুণ হবে।
ডেভিড সি

1
অবিকল, এই কারণেই আরএসএস প্রক্রিয়া অনুসারে প্রকৃত শারীরিক মেমরির মেয়াদে অতিরিক্ত রিপোর্ট করে।
thomasrutter

3
গন্ধ আমার প্রয়োজন। এটি প্রতিবার চালানোর মাধ্যমে আমি যখনই কোনও নতুন প্রক্রিয়া উদাহরণ শুরু করি, আমি প্রতিটি দৃষ্টান্ত গ্রাহিত মেমরিটি দেখতে পারি। ক্রোমের জন্য: গন্ধ-টি-পি '/ অপ্ট / গুগল / ক্রোম'
xtian

গন্ধের জন্য ডকুমেন্টেশন খুঁজে পেতে আমার খুব কষ্ট হচ্ছে ... এটি কি বাইট, কিলোবাইট বা মেগাবাইটে ডিফল্টরূপে আউটপুট দেয় ??
জেডএন 13

4
টিএল; ডিআর: ইউএসএস = শারীরিক মেমরির পরিমাণ যা প্রক্রিয়াটি মারা গেলে মুক্তি দেওয়া হবে, পিএসএস = এই প্রসেসটি সিস্টেম থেকে প্রয়োজনীয় কোনও শারীরিক মেমরির পরিমাণ যদি কোনও বিদ্যমান প্রক্রিয়া মারা না যায়, আরএসএস = শারীরিক মেমরির পরিমাণ যা অ্যাক্সেসযোগ্য এই প্রক্রিয়া (তবে সর্বদা একচেটিয়া অ্যাক্সেস নয়)।
মিক্কো রেন্টালাইনেন

95
ps -eo size,pid,user,command --sort -size | \
    awk '{ hr=$1/1024 ; printf("%13.2f Mb ",hr) } { for ( x=4 ; x<=NF ; x++ ) { printf("%s ",$x) } print "" }' |\
    cut -d "" -f2 | cut -d "-" -f1

এটি রুট হিসাবে ব্যবহার করুন এবং আপনি প্রতিটি প্রক্রিয়া দ্বারা মেমরির ব্যবহারের জন্য একটি পরিষ্কার আউটপুট পেতে পারেন।

আউটপুট উদাহরণ:

     0.00 Mb COMMAND 
  1288.57 Mb /usr/lib/firefox
   821.68 Mb /usr/lib/chromium/chromium 
   762.82 Mb /usr/lib/chromium/chromium 
   588.36 Mb /usr/sbin/mysqld 
   547.55 Mb /usr/lib/chromium/chromium 
   523.92 Mb /usr/lib/tracker/tracker
   476.59 Mb /usr/lib/chromium/chromium 
   446.41 Mb /usr/bin/gnome
   421.62 Mb /usr/sbin/libvirtd 
   405.11 Mb /usr/lib/chromium/chromium 
   302.60 Mb /usr/lib/chromium/chromium 
   291.46 Mb /usr/lib/chromium/chromium 
   284.56 Mb /usr/lib/chromium/chromium 
   238.93 Mb /usr/lib/tracker/tracker
   223.21 Mb /usr/lib/chromium/chromium 
   197.99 Mb /usr/lib/chromium/chromium 
   194.07 Mb conky 
   191.92 Mb /usr/lib/chromium/chromium 
   190.72 Mb /usr/bin/mongod 
   169.06 Mb /usr/lib/chromium/chromium 
   155.11 Mb /usr/bin/gnome
   136.02 Mb /usr/lib/chromium/chromium 
   125.98 Mb /usr/lib/chromium/chromium 
   103.98 Mb /usr/lib/chromium/chromium 
    93.22 Mb /usr/lib/tracker/tracker
    89.21 Mb /usr/lib/gnome
    80.61 Mb /usr/bin/gnome
    77.73 Mb /usr/lib/evolution/evolution
    76.09 Mb /usr/lib/evolution/evolution
    72.21 Mb /usr/lib/gnome
    69.40 Mb /usr/lib/evolution/evolution
    68.84 Mb nautilus
    68.08 Mb zeitgeist
    60.97 Mb /usr/lib/tracker/tracker
    59.65 Mb /usr/lib/evolution/evolution
    57.68 Mb apt
    55.23 Mb /usr/lib/gnome
    53.61 Mb /usr/lib/evolution/evolution
    53.07 Mb /usr/lib/gnome
    52.83 Mb /usr/lib/gnome
    51.02 Mb /usr/lib/udisks2/udisksd 
    50.77 Mb /usr/lib/evolution/evolution
    50.53 Mb /usr/lib/gnome
    50.45 Mb /usr/lib/gvfs/gvfs
    50.36 Mb /usr/lib/packagekit/packagekitd 
    50.14 Mb /usr/lib/gvfs/gvfs
    48.95 Mb /usr/bin/Xwayland :1024 
    46.21 Mb /usr/bin/gnome
    42.43 Mb /usr/bin/zeitgeist
    42.29 Mb /usr/lib/gnome
    41.97 Mb /usr/lib/gnome
    41.64 Mb /usr/lib/gvfs/gvfsd
    41.63 Mb /usr/lib/gvfs/gvfsd
    41.55 Mb /usr/lib/gvfs/gvfsd
    41.48 Mb /usr/lib/gvfs/gvfsd
    39.87 Mb /usr/bin/python /usr/bin/chrome
    37.45 Mb /usr/lib/xorg/Xorg vt2 
    36.62 Mb /usr/sbin/NetworkManager 
    35.63 Mb /usr/lib/caribou/caribou 
    34.79 Mb /usr/lib/tracker/tracker
    33.88 Mb /usr/sbin/ModemManager 
    33.77 Mb /usr/lib/gnome
    33.61 Mb /usr/lib/upower/upowerd 
    33.53 Mb /usr/sbin/gdm3 
    33.37 Mb /usr/lib/gvfs/gvfsd
    33.36 Mb /usr/lib/gvfs/gvfs
    33.23 Mb /usr/lib/gvfs/gvfs
    33.15 Mb /usr/lib/at
    33.15 Mb /usr/lib/at
    30.03 Mb /usr/lib/colord/colord 
    29.62 Mb /usr/lib/apt/methods/https 
    28.06 Mb /usr/lib/zeitgeist/zeitgeist
    27.29 Mb /usr/lib/policykit
    25.55 Mb /usr/lib/gvfs/gvfs
    25.55 Mb /usr/lib/gvfs/gvfs
    25.23 Mb /usr/lib/accountsservice/accounts
    25.18 Mb /usr/lib/gvfs/gvfsd 
    25.15 Mb /usr/lib/gvfs/gvfs
    25.15 Mb /usr/lib/gvfs/gvfs
    25.12 Mb /usr/lib/gvfs/gvfs
    25.10 Mb /usr/lib/gnome
    25.10 Mb /usr/lib/gnome
    25.07 Mb /usr/lib/gvfs/gvfsd 
    24.99 Mb /usr/lib/gvfs/gvfs
    23.26 Mb /usr/lib/chromium/chromium 
    22.09 Mb /usr/bin/pulseaudio 
    19.01 Mb /usr/bin/pulseaudio 
    18.62 Mb (sd
    18.46 Mb (sd
    18.30 Mb /sbin/init 
    18.17 Mb /usr/sbin/rsyslogd 
    17.50 Mb gdm
    17.42 Mb gdm
    17.09 Mb /usr/lib/dconf/dconf
    17.09 Mb /usr/lib/at
    17.06 Mb /usr/lib/gvfs/gvfsd
    16.98 Mb /usr/lib/at
    16.91 Mb /usr/lib/gdm3/gdm
    16.86 Mb /usr/lib/gvfs/gvfsd
    16.86 Mb /usr/lib/gdm3/gdm
    16.85 Mb /usr/lib/dconf/dconf
    16.85 Mb /usr/lib/dconf/dconf
    16.73 Mb /usr/lib/rtkit/rtkit
    16.69 Mb /lib/systemd/systemd
    13.13 Mb /usr/lib/chromium/chromium 
    13.13 Mb /usr/lib/chromium/chromium 
    10.92 Mb anydesk 
     8.54 Mb /sbin/lvmetad 
     7.43 Mb /usr/sbin/apache2 
     6.82 Mb /usr/sbin/apache2 
     6.77 Mb /usr/sbin/apache2 
     6.73 Mb /usr/sbin/apache2 
     6.66 Mb /usr/sbin/apache2 
     6.64 Mb /usr/sbin/apache2 
     6.63 Mb /usr/sbin/apache2 
     6.62 Mb /usr/sbin/apache2 
     6.51 Mb /usr/sbin/apache2 
     6.25 Mb /usr/sbin/apache2 
     6.22 Mb /usr/sbin/apache2 
     3.92 Mb bash 
     3.14 Mb bash 
     2.97 Mb bash 
     2.95 Mb bash 
     2.93 Mb bash 
     2.91 Mb bash 
     2.86 Mb bash 
     2.86 Mb bash 
     2.86 Mb bash 
     2.84 Mb bash 
     2.84 Mb bash 
     2.45 Mb /lib/systemd/systemd
     2.30 Mb (sd
     2.28 Mb /usr/bin/dbus
     1.84 Mb /usr/bin/dbus
     1.46 Mb ps 
     1.21 Mb openvpn hackthebox.ovpn 
     1.16 Mb /sbin/dhclient 
     1.16 Mb /sbin/dhclient 
     1.09 Mb /lib/systemd/systemd 
     0.98 Mb /sbin/mount.ntfs /dev/sda3 /media/n0bit4/Data 
     0.97 Mb /lib/systemd/systemd 
     0.96 Mb /lib/systemd/systemd 
     0.89 Mb /usr/sbin/smartd 
     0.77 Mb /usr/bin/dbus
     0.76 Mb su 
     0.76 Mb su 
     0.76 Mb su 
     0.76 Mb su 
     0.76 Mb su 
     0.76 Mb su 
     0.75 Mb sudo su 
     0.75 Mb sudo su 
     0.75 Mb sudo su 
     0.75 Mb sudo su 
     0.75 Mb sudo su 
     0.75 Mb sudo su 
     0.74 Mb /usr/bin/dbus
     0.71 Mb /usr/lib/apt/methods/http 
     0.68 Mb /bin/bash /usr/bin/mysqld_safe 
     0.68 Mb /sbin/wpa_supplicant 
     0.66 Mb /usr/bin/dbus
     0.61 Mb /lib/systemd/systemd
     0.54 Mb /usr/bin/dbus
     0.46 Mb /usr/sbin/cron 
     0.45 Mb /usr/sbin/irqbalance 
     0.43 Mb logger 
     0.41 Mb awk { hr=$1/1024 ; printf("%13.2f Mb ",hr) } { for ( x=4 ; x<=NF ; x++ ) { printf("%s ",$x) } print "" } 
     0.40 Mb /usr/bin/ssh
     0.34 Mb /usr/lib/chromium/chrome
     0.32 Mb cut 
     0.32 Mb cut 
     0.00 Mb [kthreadd] 
     0.00 Mb [ksoftirqd/0] 
     0.00 Mb [kworker/0:0H] 
     0.00 Mb [rcu_sched] 
     0.00 Mb [rcu_bh] 
     0.00 Mb [migration/0] 
     0.00 Mb [lru
     0.00 Mb [watchdog/0] 
     0.00 Mb [cpuhp/0] 
     0.00 Mb [cpuhp/1] 
     0.00 Mb [watchdog/1] 
     0.00 Mb [migration/1] 
     0.00 Mb [ksoftirqd/1] 
     0.00 Mb [kworker/1:0H] 
     0.00 Mb [cpuhp/2] 
     0.00 Mb [watchdog/2] 
     0.00 Mb [migration/2] 
     0.00 Mb [ksoftirqd/2] 
     0.00 Mb [kworker/2:0H] 
     0.00 Mb [cpuhp/3] 
     0.00 Mb [watchdog/3] 
     0.00 Mb [migration/3] 
     0.00 Mb [ksoftirqd/3] 
     0.00 Mb [kworker/3:0H] 
     0.00 Mb [kdevtmpfs] 
     0.00 Mb [netns] 
     0.00 Mb [khungtaskd] 
     0.00 Mb [oom_reaper] 
     0.00 Mb [writeback] 
     0.00 Mb [kcompactd0] 
     0.00 Mb [ksmd] 
     0.00 Mb [khugepaged] 
     0.00 Mb [crypto] 
     0.00 Mb [kintegrityd] 
     0.00 Mb [bioset] 
     0.00 Mb [kblockd] 
     0.00 Mb [devfreq_wq] 
     0.00 Mb [watchdogd] 
     0.00 Mb [kswapd0] 
     0.00 Mb [vmstat] 
     0.00 Mb [kthrotld] 
     0.00 Mb [ipv6_addrconf] 
     0.00 Mb [acpi_thermal_pm] 
     0.00 Mb [ata_sff] 
     0.00 Mb [scsi_eh_0] 
     0.00 Mb [scsi_tmf_0] 
     0.00 Mb [scsi_eh_1] 
     0.00 Mb [scsi_tmf_1] 
     0.00 Mb [scsi_eh_2] 
     0.00 Mb [scsi_tmf_2] 
     0.00 Mb [scsi_eh_3] 
     0.00 Mb [scsi_tmf_3] 
     0.00 Mb [scsi_eh_4] 
     0.00 Mb [scsi_tmf_4] 
     0.00 Mb [scsi_eh_5] 
     0.00 Mb [scsi_tmf_5] 
     0.00 Mb [bioset] 
     0.00 Mb [kworker/1:1H] 
     0.00 Mb [kworker/3:1H] 
     0.00 Mb [kworker/0:1H] 
     0.00 Mb [kdmflush] 
     0.00 Mb [bioset] 
     0.00 Mb [kdmflush] 
     0.00 Mb [bioset] 
     0.00 Mb [jbd2/sda5
     0.00 Mb [ext4
     0.00 Mb [kworker/2:1H] 
     0.00 Mb [kauditd] 
     0.00 Mb [bioset] 
     0.00 Mb [drbd
     0.00 Mb [irq/27
     0.00 Mb [i915/signal:0] 
     0.00 Mb [i915/signal:1] 
     0.00 Mb [i915/signal:2] 
     0.00 Mb [ttm_swap] 
     0.00 Mb [cfg80211] 
     0.00 Mb [kworker/u17:0] 
     0.00 Mb [hci0] 
     0.00 Mb [hci0] 
     0.00 Mb [kworker/u17:1] 
     0.00 Mb [iprt
     0.00 Mb [iprt
     0.00 Mb [kworker/1:0] 
     0.00 Mb [kworker/3:0] 
     0.00 Mb [kworker/0:0] 
     0.00 Mb [kworker/2:0] 
     0.00 Mb [kworker/u16:0] 
     0.00 Mb [kworker/u16:2] 
     0.00 Mb [kworker/3:2] 
     0.00 Mb [kworker/2:1] 
     0.00 Mb [kworker/1:2] 
     0.00 Mb [kworker/0:2] 
     0.00 Mb [kworker/2:2] 
     0.00 Mb [kworker/0:1] 
     0.00 Mb [scsi_eh_6] 
     0.00 Mb [scsi_tmf_6] 
     0.00 Mb [usb
     0.00 Mb [bioset] 
     0.00 Mb [kworker/3:1] 
     0.00 Mb [kworker/u16:1] 

1
তালিকাটি ফিল্টার করার কোনও উপায় যাতে কেবল 30s এর জন্য 25% মেমরির চেয়ে বেশি ব্যবহার করা প্রক্রিয়া থাকে? আমি পিএইচপিই ক্লিপস ডিবাগার ব্যবহার করার সময় ক্রোম ব্রাউজারের মতো দৌড়ে যাওয়া প্রক্রিয়াগুলি দেখার চেষ্টা করছি।
স্টিফেন

ফিল্টারটি দুর্দান্ত হবে

1
আমি যত তাড়াতাড়ি সম্ভব পোস্ট করব।
লোকেন্দ্র সিং রাওয়াত

2
গ্রেট! তবে লুপটি x=2আউটপুট পিড এবং ব্যবহারকারীর থেকে শুরু হওয়া উচিত ।
বরিস ব্রডস্কি

70

কি হবে time?

না ব্যাশ builtin timeকিন্তু এক আপনার সাথে জানতে পারেন which time, উদাহরণস্বরূপ/usr/bin/time

এটি একটি সাধারণ উপর এটি কভার করে তা এখানে ls:

$ /usr/bin/time --verbose ls
(...)
Command being timed: "ls"
User time (seconds): 0.00
System time (seconds): 0.00
Percent of CPU this job got: 0%
Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.00
Average shared text size (kbytes): 0
Average unshared data size (kbytes): 0
Average stack size (kbytes): 0
Average total size (kbytes): 0
Maximum resident set size (kbytes): 2372
Average resident set size (kbytes): 0
Major (requiring I/O) page faults: 1
Minor (reclaiming a frame) page faults: 121
Voluntary context switches: 2
Involuntary context switches: 9
Swaps: 0
File system inputs: 256
File system outputs: 0
Socket messages sent: 0
Socket messages received: 0
Signals delivered: 0
Page size (bytes): 4096
Exit status: 0

আমিও. এটা তোলে আমি powercron.eu মধ্যে :) প্রফাইল কর্ম করতে ব্যবহার করেন
Moonchild

5
brew install gnu-timeতারপরে gtimeআপনি ম্যাকোজে থাকলে ব্যবহার করুন।
নুবু

4
খসড়া: প্রক্রিয়াটির কার্য সম্পাদন শেষ না হওয়া পর্যন্ত ফলাফল পাবেন না। চলমান প্রক্রিয়াটির রিয়েল-টাইম পর্যবেক্ষণের জন্য ব্যবহার করা যাবে না।
মকেশ

/ usr / বিন / সময় -f '% এম'
ইনফমানিয়াক

1
আপনি এটি \ সময় (শেলটির অভ্যন্তরীণ সময় ব্যবহার না করার জন্য ব্যাকস্ল্যাশ সহ) ব্যবহার করেও আবেদন করতে পারেন।
রাউল সালিনাস-মন্টেইগুডো

39

এটি সরঞ্জাম এবং সমস্যাগুলির একটি দুর্দান্ত সংক্ষিপ্তসার: আর্কাইভ.org লিঙ্ক

আমি এটি উদ্ধৃত করব, যাতে আরও ডেভস আসলে এটি পড়তে পারে।

আপনি যদি পুরো সিস্টেমের মেমরির ব্যবহার বিশ্লেষণ করতে চান বা কোনও অ্যাপ্লিকেশনের মেমরির ব্যবহারের বিশদ বিশ্লেষণ করতে চান (কেবল তার গাদা ব্যবহার নয়) তবে এক্সম্যাপ ব্যবহার করুন । পুরো সিস্টেম বিশ্লেষণের জন্য, সর্বাধিক কার্যকর ব্যবহার সহ প্রক্রিয়াগুলি সন্ধান করুন, তারা অনুশীলনে সর্বাধিক স্মৃতি গ্রহণ করে, সর্বাধিক লিখনযোগ্য ব্যবহারের সাথে প্রক্রিয়াগুলি সন্ধান করে, তারা সর্বাধিক ডেটা তৈরি করে (এবং তাই সম্ভবত লিক হয় বা তাদের ডেটা ব্যবহারে খুব অকার্যকর হয়)। এই জাতীয় অ্যাপ্লিকেশনটি নির্বাচন করুন এবং দ্বিতীয় তালিকাতে এর ম্যাপিংগুলি বিশ্লেষণ করুন। আরও তথ্যের জন্য এক্সম্যাপ বিভাগটি দেখুন। এক্স উত্সগুলির উচ্চ ব্যবহার পরীক্ষা করার জন্য এক্সরেস্টপ ব্যবহার করুন, বিশেষত যদি এক্স সার্ভারের প্রক্রিয়াটিতে প্রচুর স্মৃতি লাগে। বিশদ জানতে এক্সরেস্টপ বিভাগটি দেখুন।

আপনি তথ্য ফাঁসের, ব্যবহার সনাক্ত করতে চান Valgrind বা সম্ভবত kmtrace

আপনি যদি কোনও অ্যাপ্লিকেশনটির হিপ ( মলোক ইত্যাদি) ব্যবহার বিশ্লেষণ করতে চান তবে তা মেমপ্রোফে বা কিমিট্র্যাসের সাহায্যে চালান , অ্যাপ্লিকেশনটির প্রোফাইল দিন এবং বৃহত্তম বরাদ্দের জন্য ফাংশন কল ট্রিটি অনুসন্ধান করুন। আরও বিশদের জন্য তাদের বিভাগগুলি দেখুন।


28

আপনার উত্তরের তালিকাভুক্ত সমাধানগুলির পাশাপাশি, আপনি লিনাক্স কমান্ড "শীর্ষ" ব্যবহার করতে পারেন; এটি চলমান সিস্টেমের একটি গতিশীল রিয়েল-টাইম ভিউ সরবরাহ করে, এটি প্রতিটি প্রোগ্রামের পাশাপাশি পুরো সিস্টেমের জন্য শতাংশ হিসাবে সিপিইউ এবং মেমরির ব্যবহার দেয়:

top

একটি প্রোগ্রাম পিড দ্বারা ফিল্টার:

top -p <PID>

একটি প্রোগ্রামের নাম দ্বারা ফিল্টার করতে:

top | grep <PROCESS NAME>

"শীর্ষ" কিছু ক্ষেত্র সরবরাহ করে যেমন:

VIRT - ভার্চুয়াল চিত্র (কেবি): টাস্ক দ্বারা ব্যবহৃত ভার্চুয়াল মেমরির মোট পরিমাণ

আরইএস - আবাসিক আকার (কেবি): একটি টাস্ক অ-অদলিত শারীরিক মেমরি ব্যবহার করেছে; আরইএস = কোড + ডেটা।

ডেটা - ডেটা + স্ট্যাকের আকার (কেবি): এক্সিকিউটেবল কোড ব্যতীত অন্যদের জন্য উত্সর্গীকৃত শারীরিক মেমরির পরিমাণ, যা 'ডেটা রেসিডেন্ট সেট' আকার বা ডিআরএস হিসাবে পরিচিত।

SHR - শেয়ার্ড মেমের আকার (কেবি): কোনও কার্য দ্বারা ভাগ করা মেমরির পরিমাণ। এটি কেবল মেমরির প্রতিফলন করে যা সম্ভাব্যভাবে অন্যান্য প্রক্রিয়াগুলির সাথে ভাগ করা যায়।

এখানে রেফারেন্স ।


20

এর জন্য একটিও উত্তর নেই কারণ আপনি কোনও প্রক্রিয়া কতটা মেমরি ব্যবহার করেন তা অবিকল পিন করতে পারবেন না। লিনাক্সের অধীনে বেশিরভাগ প্রক্রিয়া ভাগ করে নেওয়া লাইব্রেরি ব্যবহার করে। উদাহরণস্বরূপ, ধরা যাক আপনি 'ls' প্রক্রিয়াটির জন্য মেমরির ব্যবহার গণনা করতে চান। আপনি কি কেবল এক্সিকিউটেবল 'এলএস' দ্বারা ব্যবহৃত স্মৃতি গণনা করেন (যদি আপনি এটি আলাদা করতে পারতেন)? কীভাবে লিবিসি? বা 'Ls' চালানোর জন্য প্রয়োজনীয় এই সমস্ত লিবিস?

linux-gate.so.1 =>  (0x00ccb000)
librt.so.1 => /lib/librt.so.1 (0x06bc7000)
libacl.so.1 => /lib/libacl.so.1 (0x00230000)
libselinux.so.1 => /lib/libselinux.so.1 (0x00162000)
libc.so.6 => /lib/libc.so.6 (0x00b40000)
libpthread.so.0 => /lib/libpthread.so.0 (0x00cb4000)
/lib/ld-linux.so.2 (0x00b1d000)
libattr.so.1 => /lib/libattr.so.1 (0x00229000)
libdl.so.2 => /lib/libdl.so.2 (0x00cae000)
libsepol.so.1 => /lib/libsepol.so.1 (0x0011a000)

আপনি তর্ক করতে পারেন যে এগুলি অন্যান্য প্রক্রিয়া দ্বারা ভাগ করা হয়েছে, তবে সেগুলি লোড না করে 'ls' সিস্টেমে চালানো যাবে না।

এছাড়াও, যদি আপনার দক্ষতা পরিকল্পনার জন্য কোনও প্রক্রিয়াটির কতটা মেমরির প্রয়োজন তা জানতে প্রয়োজন, আপনাকে প্রক্রিয়াটির প্রতিটি অতিরিক্ত অনুলিপি কতটা ব্যবহার করে তা গণনা করতে হবে। আমি মনে করি / প্রোক / পিআইডি / স্থিতি আপনাকে একবারে মেমরির ব্যবহারের পর্যাপ্ত তথ্য দিতে পারে। অন্যদিকে, ভালগ্রাইন্ড আপনাকে প্রোগ্রামটির আজীবন মেমরির ব্যবহারের আরও ভাল প্রোফাইল দেবে


আমি কোনও ভিএম-তে কোনও প্রক্রিয়া কত স্মৃতি গ্রহণ করছে তা চেষ্টা করার চেষ্টা করছি এবং কুবেরনেটে স্মৃতি সীমা নির্ধারণ করতে এটি ব্যবহার করতে চাই, আমি এই উত্তরের সাথে একমত, তাই প্রদর্শিত স্মৃতিটি ব্যবহার করবpmap
দীপক দেওর

16

আপনার কোডটি সি বা সি ++ এ থাকলে আপনি ব্যবহার করতে সক্ষম হতে পারেন getrusage()যা আপনার প্রক্রিয়াটির মেমরি এবং সময় ব্যবহার সম্পর্কে বিভিন্ন পরিসংখ্যান ফিরিয়ে দেয়।

সমস্ত প্ল্যাটফর্মগুলি যদিও এটি সমর্থন করে না এবং মেমরি-ব্যবহার বিকল্পগুলির জন্য 0 টি মান প্রদান করবে।

পরিবর্তে আপনি তৈরি ভার্চুয়াল ফাইলটি দেখতে পারেন /proc/[pid]/statm (যেখানে [pid]আপনার প্রক্রিয়া আইডি দ্বারা প্রতিস্থাপন করা হয়েছে You আপনি এটি থেকে এটি পেতে পারেন getpid())।

এই ফাইলটি 7 টি পূর্ণসংখ্যা সহ একটি পাঠ্য ফাইলের মতো দেখাবে। আপনি সম্ভবত এই ফাইলটিতে প্রথম (সমস্ত মেমরির ব্যবহার) এবং ষষ্ঠ (ডেটা মেমরি ব্যবহার) সংখ্যায় সবচেয়ে আগ্রহী are


নোট করুন যে এটি সমস্ত প্ল্যাটফর্মগুলিতে সমর্থিত নয়।
ক্যাশকো

লিনাক্স ম্যান পৃষ্ঠা অনুসারে ( linux.die.net/man/2/getrusage ) গেট্রাসেজ এসভিআর ৪, ৪.৩ বিএসডি এবং পসিক্স ১.২০০১ স্পেকের অংশ (উল্লেখ করে যে পসিএক্স কেবলমাত্র ইউটিউম এবং স্টাইম ক্ষেত্রগুলি নির্দিষ্ট করে।) I এটি ইউনিক্সবিহীন প্ল্যাটফর্মগুলিতে কাজ করার প্রত্যাশা করবে না (সম্ভবত, সাইগউইনের মতো পরিবেশের মাধ্যমে যা অন্যান্য প্ল্যাটফর্মের জন্য ইউনিক্স ক্ষমতা প্রদান করে।)
ডেভিড সি

@DavidC। ওপি লিনাক্স সম্পর্কে জিজ্ঞাসা করছে।
অ্যালেক্সিস উইলকে

@ ক্যাশকো, আপনার অর্থ কি? getpid()কারণ আমি getprocessid()লিনাক্সের অধীনে সি / সি ++ তে কোন ফাংশন সম্পর্কে জানি না ।
অ্যালেক্সিস উইলকে

12

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

আমি ধরে নিলাম প্রত্যেকে ডাব্লুআরটি "মেমরির ব্যবহার" যা জানতে চায় তা নিম্নলিখিতগুলি ...
লিনাক্সে, একটি একক প্রক্রিয়া যে পরিমাণ শারীরিক মেমরি ব্যবহার করতে পারে তা মোটামুটি নিম্নলিখিত বিভাগগুলিতে বিভক্ত হতে পারে।

  • মা বেনামে ম্যাপ করা স্মৃতি

    • প্রাইভেট
      • .d নোংরা == malloc / mmaped হিপ এবং স্ট্যাক বরাদ্দ এবং লিখিত মেমরি
      • .c পরিষ্কার == ম্যালোক / এমএপড হিপ এবং স্ট্যাক মেমরি একবার বরাদ্দ, লিখিত, পরে মুক্তি দেওয়া, তবে এখনও পুনরুদ্ধার করা হয়নি
    • .s ভাগ করে নিল
      • .d নোংরা == malloc / mmaped হিপ অনুলিপি-রচনা এবং প্রক্রিয়াগুলির মধ্যে ভাগ করা যায় (সম্পাদিত)
      • .c পরিষ্কার == malloc / mmaped হিপ অনুলিপি-রচনা এবং প্রক্রিয়াগুলির মধ্যে ভাগ করা যায় (সম্পাদিত)
  • এমএন নামের ম্যাপ করা মেমরি

    • প্রাইভেট
      • .d নোংরা == ফাইল এমএম্যাপ করা লিখিত মেমরি ব্যক্তিগত private
      • .c পরিষ্কার == ম্যাপ করা প্রোগ্রাম / লাইব্রেরির পাঠ্যের ব্যক্তিগত ম্যাপ করা আছে
    • .s ভাগ করে নিল
      • .d নোংরা == ফাইল এমএম্যাপ করা লিখিত মেমরি ভাগ করা
      • .c পরিষ্কার == ম্যাপযুক্ত লাইব্রেরির পাঠ্য ম্যাপ করা হয়েছে

অ্যান্ড্রয়েড নামের শোডম্যাপে অন্তর্ভুক্ত ইউটিলিটি বেশ কার্যকর

virtual                    shared   shared   private  private
size     RSS      PSS      clean    dirty    clean    dirty    object
-------- -------- -------- -------- -------- -------- -------- ------------------------------
       4        0        0        0        0        0        0 0:00 0                  [vsyscall]
       4        4        0        4        0        0        0                         [vdso]
      88       28       28        0        0        4       24                         [stack]
      12       12       12        0        0        0       12 7909                    /lib/ld-2.11.1.so
      12        4        4        0        0        0        4 89529                   /usr/lib/locale/en_US.utf8/LC_IDENTIFICATION
      28        0        0        0        0        0        0 86661                   /usr/lib/gconv/gconv-modules.cache
       4        0        0        0        0        0        0 87660                   /usr/lib/locale/en_US.utf8/LC_MEASUREMENT
       4        0        0        0        0        0        0 89528                   /usr/lib/locale/en_US.utf8/LC_TELEPHONE
       4        0        0        0        0        0        0 89527                   /usr/lib/locale/en_US.utf8/LC_ADDRESS
       4        0        0        0        0        0        0 87717                   /usr/lib/locale/en_US.utf8/LC_NAME
       4        0        0        0        0        0        0 87873                   /usr/lib/locale/en_US.utf8/LC_PAPER
       4        0        0        0        0        0        0 13879                   /usr/lib/locale/en_US.utf8/LC_MESSAGES/SYS_LC_MESSAGES
       4        0        0        0        0        0        0 89526                   /usr/lib/locale/en_US.utf8/LC_MONETARY
       4        0        0        0        0        0        0 89525                   /usr/lib/locale/en_US.utf8/LC_TIME
       4        0        0        0        0        0        0 11378                   /usr/lib/locale/en_US.utf8/LC_NUMERIC
    1156        8        8        0        0        4        4 11372                   /usr/lib/locale/en_US.utf8/LC_COLLATE
     252        0        0        0        0        0        0 11321                   /usr/lib/locale/en_US.utf8/LC_CTYPE
     128       52        1       52        0        0        0 7909                    /lib/ld-2.11.1.so
    2316       32       11       24        0        0        8 7986                    /lib/libncurses.so.5.7
    2064        8        4        4        0        0        4 7947                    /lib/libdl-2.11.1.so
    3596      472       46      440        0        4       28 7933                    /lib/libc-2.11.1.so
    2084        4        0        4        0        0        0 7995                    /lib/libnss_compat-2.11.1.so
    2152        4        0        4        0        0        0 7993                    /lib/libnsl-2.11.1.so
    2092        0        0        0        0        0        0 8009                    /lib/libnss_nis-2.11.1.so
    2100        0        0        0        0        0        0 7999                    /lib/libnss_files-2.11.1.so
    3752     2736     2736        0        0      864     1872                         [heap]
      24       24       24        0        0        0       24 [anon]
     916      616      131      584        0        0       32                         /bin/bash
-------- -------- -------- -------- -------- -------- -------- ------------------------------
   22816     4004     3005     1116        0      876     2012 TOTAL

10

চেষ্টা করার জন্য আরও তিনটি পদ্ধতি:

  1. ps aux --sort pmem
    এটি আউটপুটটি সাজায় %MEM
  2. ps aux | awk '{print $2, $4, $11}' | sort -k2r | head -n 15
    এটি পাইপ ব্যবহার করে বাছাই করে।
  3. top -a
    এটি শীর্ষে বাছাই শুরু করে %MEM

( এখান থেকে উত্তোলন করা হয়েছে )


2
topএবং সম্ভবত অন্যরা প্রক্রিয়া দ্বারা প্রকৃতপক্ষে ব্যবহৃত মেমরিটির সঠিক প্রতিনিধিত্ব দেয় না। উদাহরণস্বরূপ, আমার কাছে র‌্যামের 64GiB রয়েছে এবং postgresপ্রতিবেদন 16GiB RES এবং 25% এমইএম প্রতিবেদন করার জন্য আমার 10 টি প্রক্রিয়া রয়েছে। অবশ্যই, তারা সবাই 25% ব্যবহার করতে পারে না ... প্রত্যেকের 15 জিআইবি এসআরআর রয়েছে, এবং মনে হয় তারা এটি ভাগ করে নিচ্ছে।
sudo

8
#!/bin/ksh
#
# Returns total memory used by process $1 in kb.
#
# See /proc/NNNN/smaps if you want to do something
# more interesting.
#

IFS=$'\n'

for line in $(</proc/$1/smaps)
do
   [[ $line =~ ^Size:\s+(\S+) ]] && ((kb += ${.sh.match[1]}))
done

print $kb

5
ksh একটি স্ট্যান্ডার্ড শেল। এটি লিনাক্স ডিস্ট্রোজে ডেস্কটপ ব্যবহারকারীদের জন্য বা সংক্ষিপ্ত উদ্দেশ্যগুলির জন্য ইনস্টল করা নাও হতে পারে , তবে এটি প্রায় কোনও ইউনিক্স / লিনাক্স ওএসে কেবল একটি কমান্ডের বাইরে রয়েছে। (অর্থাত্ সমস্ত বিএসডি, সমস্ত বাস্তব ইউনিক্স, আরএইচইল, এসএলএস, ডিবিয়ান, উবুন্টু, ওএসএক্স)
ফ্লোরিয়ান হেইগল

এই ফাইলটি কেবলমাত্র রুট ব্যবহারকারীদের জন্য, ডিফল্টরূপে অ্যাক্সেসযোগ্য।
দিমিত্রি গিনজবার্গ

sed | awkনীচেরটি কেবলমাত্র উপরে লেখা হয়েছে এবং বুসিবক্স v1.23.2 এ কাজ করছে: sed -n 's/^Size:\s\+\(\S\+\) .*/\1/p' /proc/$1/smaps | awk '{s+=$1} END {print s}'
জান সেরেনেক

1
@ ক্যাটসকুল - পসিক্স স্ট্যান্ডার্ডটি তার স্ট্যান্ডার্ড শেলটি কর্ন শেলের একটি কঠোর উপসেট হিসাবে উল্লেখ করেছে, বোর্ন শেলের একটি উন্নত সংস্করণ।
ceph3us

8

আমি ব্যবহার করছি htop; এটি উইন্ডোজ টাস্ক ম্যানেজারের মতো একটি খুব ভাল কনসোল প্রোগ্রাম।


আমি ব্যবহার করেছি htopএবং শীর্ষের চেয়েও ভাল তবে তবুও এটি আপনাকে বিভিন্ন অ্যাপ্লিকেশন থেকে সমস্ত থ্রেডগুলি গোষ্ঠীভুক্ত না করে এটিকে শীর্ষের মতো প্রায় অকেজো করে তুলবে।
sorin

1
top htop -p $ (pgrep <আপনার প্রক্রিয়া নাম> | xargs | tr '' ',')
এএএফারমক্লাব

6

যদি প্রক্রিয়াটি খুব বেশি স্মৃতি ব্যবহার না করে (হয় কারণ আপনি এটির ক্ষেত্রে প্রত্যাশা করছেন, বা অন্য কোনও কমান্ড প্রাথমিক প্রাথমিক ইঙ্গিত দিয়েছে), এবং প্রক্রিয়াটি অল্প সময়ের জন্য থামিয়ে দিতে পারে, আপনি চেষ্টা করতে পারেন gcore কমান্ড ব্যবহার করুন।

gcore <pid>

কোনও নির্দিষ্ট প্রক্রিয়া কতটা মেমরি ব্যবহার করছে তা ভাল ধারণা পেতে উত্পন্ন কোর ফাইলের আকার পরীক্ষা করুন।

প্রক্রিয়াটি কয়েকশ মেগ বা জিগ ব্যবহার করছে তবে এটি খুব ভাল কাজ করবে না কারণ মূল প্রজন্ম I / O পারফরম্যান্সের উপর নির্ভর করে তৈরি হতে কয়েক সেকেন্ড বা মিনিট সময় নিতে পারে। মূল সৃষ্টির সময় প্রক্রিয়াটি মেমোরি পরিবর্তনগুলি রোধ করতে (বা "হিমায়িত") বন্ধ করে দেওয়া হয়। তাই সতর্কতা অবলম্বন করা.

এছাড়াও নিশ্চিত করুন যে কোরটি উত্পন্ন হয় সেখানে মাউন্ট পয়েন্টে প্রচুর ডিস্কের জায়গা রয়েছে এবং সিস্টেমটি সেই নির্দিষ্ট ডিরেক্টরিতে তৈরি হওয়া মূল ফাইলটির বিরুদ্ধে নেতিবাচক প্রতিক্রিয়া দেখাবে না।


6

আমি আর্চ লিনাক্স ব্যবহার করছি এবং এই দুর্দান্ত প্যাকেজটির নাম রয়েছে ps_mem

ps_mem -p <pid>

উদাহরণ আউটপুট

$ ps_mem -S -p $(pgrep firefox)

Private   +   Shared  =  RAM used   Swap used   Program

355.0 MiB +  38.7 MiB = 393.7 MiB    35.9 MiB   firefox
---------------------------------------------
                        393.7 MiB    35.9 MiB
=============================================

5

কমান্ড লাইনের নীচে আপনাকে এমবিতে লিনাক্স মেশিনে চলমান বিভিন্ন প্রক্রিয়া দ্বারা ব্যবহৃত মোট স্মৃতি দেওয়া হবে

ps -eo size,pid,user,command --sort -size | awk '{ hr=$1/1024 ; printf("%13.2f Mb ",hr) } { for ( x=4 ; x<=NF ; x++ ) { printf("%s ",$x) } print "" }' | awk '{total=total + $1} END {print total}'

5

আরও "রিয়েল ওয়ার্ল্ড" ব্যবহারের একটি ভাল পরীক্ষা হ'ল অ্যাপ্লিকেশনটি খুলুন, তারপরে vmstat -s"সক্রিয় মেমরি" পরিসংখ্যানটি চালনা করুন check অ্যাপ্লিকেশনটি বন্ধ করুন, কয়েক সেকেন্ড অপেক্ষা করুন এবং vmstat -sআবার চালান । তবে অনেক সক্রিয় মেমরি মুক্ত হয়েছিল অ্যাপটি স্পষ্টতই ব্যবহৃত হয়েছিল।


3
এই PS এর চেয়ে ভাল কিভাবে হবে ?? এটি পিএসের সমস্ত সীমাবদ্ধতার সাথে আসে এবং এটি আরও ত্রুটিযুক্ত ...
লেস্টার চেউং

একটি সাধারণ ইউনিক্স সিস্টেমে সমস্ত সময় শুরু এবং সমাপ্তির অনেক প্রক্রিয়া থাকে। আপনি আপনার বিনামূল্যে র‌্যামের পূর্বাভাস দিতে পারবেন না।
রাউল সালিনাস-মন্টেইগুডো

4

ভালগ্রাইন্ড পান এটি চালানোর জন্য আপনার প্রোগ্রামটি দিন এবং এটি আপনাকে এর স্মৃতি ব্যবহার সম্পর্কে প্রচুর পরিমাণে বলবে।

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


না, চলমান প্রক্রিয়াতে ভালগ্রাইন্ড "সংযুক্ত" করা সম্ভব নয়। এটা নকশা দ্বারা।
দিমা তিস্নেক

3

সম্পাদনা: মেমরির ব্যবহার বাড়লে কেবল এটি 100% ভাল কাজ করে

যদি আপনি প্রদত্ত প্রক্রিয়া (বা প্রক্রিয়াজাতকরণের ভাগ করে নেওয়ার সাধারণ নাম দ্বারা গ্রুপের উদাহরণস্বরূপ মেমরির ব্যবহার নিরীক্ষণ করতে চান তবে আপনি google-chromeআমার বাশ-স্ক্রিপ্টটি ব্যবহার করতে পারেন:

while true; do ps aux | awk ‚{print $5, $11}’ | grep chrome | sort -n > /tmp/a.txt; sleep 1; diff /tmp/{b,a}.txt; mv /tmp/{a,b}.txt; done;

এটি ধারাবাহিকভাবে পরিবর্তনগুলি সন্ধান করবে এবং সেগুলি মুদ্রণ করবে।

এখানে চিত্র বর্ণনা লিখুন


3

আপনি যদি ভালগ্রিন্ডের সাথে প্রোফাইলিংয়ের চেয়ে আরও দ্রুত কিছু চান এবং আপনার কার্নেলটি পুরানো এবং আপনি এসএমএস ব্যবহার করতে পারবেন না, তবে প্রসেসের আবাসিক সেটটি প্রদর্শন করার বিকল্পগুলির সাথে একটি পিএস ps -o rss,commandআপনাকে _aproximation_প্রকৃত পরিমাণের দ্রুত এবং যুক্তিসঙ্গত দিতে পারে অ-অদলবদল মেমরি ব্যবহৃত হচ্ছে।


3

আমি আপনাকে উপরে ব্যবহার করার পরামর্শ দিচ্ছি। আপনি এই পৃষ্ঠায় এটি সম্পর্কে সবকিছু সন্ধান করতে পারেন । এটি আপনার প্রক্রিয়াগুলির জন্য প্রয়োজনীয় সমস্ত কেপিআই সরবরাহ করতে সক্ষম এবং এটি কোনও ফাইলও ক্যাপচার করতে পারে।


2
PSIZE ["এই প্রক্রিয়াটির আনুপাতিক মেমরি আকার (বা ব্যবহারকারীর]] ব্যবহার প্রারম্ভিক atop -Rপ্রদর্শন করতে To প্রতি ব্যবহারকারী সংক্ষিপ্ত পুশ প্রদর্শন করতে p, মেমরির ব্যবহার অনুসারে বাছাই করে 'এম' টিপুন উপর থেকে। এটি গন্ধের তুলনায় অনুরূপ সংখ্যা দেয়।
মার্কাস স্ট্রাস


1

অন্য একটি ভোট এখানে, তবে আমি যুক্ত করতে চাই যে আপনি ভ্যালগ্রাইন্ড দ্বারা উত্পাদিত ফলাফলগুলি ব্যাখ্যা করতে আপনাকে সাহায্য করার জন্য অ্যালিওপের মতো একটি সরঞ্জাম ব্যবহার করতে পারেন ।

আমি দুটি সরঞ্জাম সর্বদা ব্যবহার করি এবং সর্বদা এটির জন্য গর্বের সাথে দেখাতে পাতলা, অ-ফাঁস কোড থাকে;)


1

এই প্রশ্নটি বর্তমানে চলমান প্রক্রিয়াগুলি পরীক্ষা করার বিষয়ে বলে মনে হচ্ছে, আমি কোনও অ্যাপ্লিকেশন দ্বারা শুরু থেকে শেষ পর্যন্ত ব্যবহার করা পিক মেমরিটি দেখতে চেয়েছিলাম। ভালগ্র্যান্ড ছাড়াও, আপনি টিএসটাইম ব্যবহার করতে পারেন যা অনেক সহজ। এটি "উচ্চ জল" মেমরির ব্যবহার (আরএসএস এবং ভার্চুয়াল) পরিমাপ করে। এই উত্তর থেকে ।


বেশিরভাগ অ্যাপ্লিকেশন - যা ম্যালোক () এবং মেলোক-জাতীয় মেমরি লাইব্রেরি ব্যবহার করে - প্রসেস সমাপ্তি না হওয়া পর্যন্ত ওএসগুলিতে পৃষ্ঠাগুলি ফিরিয়ে দেয় না। সুতরাং আপনি যে পরিমাণ PS এর সাথে দেখতে পাচ্ছেন (বা অন্য কোনও সরঞ্জাম যা প্রক্রিয়াটির গাদাতে খনন করে না) তা হ'ল উচ্চ-জলের চিহ্ন।
ডেভিড সি

0

সম্পর্কিত প্রশ্নের উত্তরের ভিত্তিতে ।

নেটওয়ার্কের কোনও নির্দিষ্ট ডিভাইসে কোনও প্রক্রিয়ার মেমরি এবং সিপিইউ ব্যবহার করতে আপনি এসএনএমপি ব্যবহার করতে পারেন :)

প্রয়োজনীয়তা:

  • প্রক্রিয়া চলমান ডিভাইসে স্ন্যাপ ইনস্টল এবং চলমান থাকা উচিত
  • আপনি নীচের স্ক্রিপ্টটি চালাবেন সেখান থেকে অনুরোধগুলি গ্রহণের জন্য স্ন্যাম্প কনফিগার করা উচিত (এটি snmpd.conf এ কনফিগার করা যেতে পারে)
  • আপনি যে প্রক্রিয়াটি পর্যবেক্ষণ করতে চান তার প্রক্রিয়া আইডি (পিড) জানতে হবে

মন্তব্য:

  • হোস্ট-রিসোর্সেস-এমআইবি :: এইচআরএসডাব্লুআরুনপ্রেসসিপিইউ এই প্রক্রিয়া দ্বারা ব্যয় করা মোট সিস্টেমের সিপিইউ সংস্থার শতকরা সেকেন্ডের সংখ্যা। নোট করুন যে কোনও মাল্টি-প্রসেসর সিস্টেমে, এই মানটি বাস্তবের (প্রাচীরের ঘড়ি) সময়ের এক সেন্টিমিটার সেকেন্ডে এক সেন্টিমিটারের বেশি বৃদ্ধি পেতে পারে।

  • হোস্ট-রিসোর্সেস-এমআইবি :: এইচআরএসডাব্লুআরুনপ্রেমমইম এই প্রক্রিয়াটিতে বরাদ্দ পাওয়া রিয়েল সিস্টেম মেমরির মোট পরিমাণ।

**

প্রক্রিয়া পর্যবেক্ষণ স্ক্রিপ্ট:

**

echo "IP: "
read ip
echo "specfiy pid: "
read pid
echo "interval in seconds:"
read interval

while [ 1 ]
do
    date
    snmpget -v2c -c public $ip HOST-RESOURCES-MIB::hrSWRunPerfCPU.$pid
    snmpget -v2c -c public $ip HOST-RESOURCES-MIB::hrSWRunPerfMem.$pid
    sleep $interval;
done

0

/ প্রক্স / এক্সএক্সএক্সএক্স / নুমা_ম্যাপস সেখানে কিছু তথ্য দেয়: এন0 = ??? এন 1 = ???। তবে এই ফলাফলটি প্রকৃত ফলাফলের চেয়ে কম হতে পারে, কারণ এটি কেবল ছোঁয়া থাকাগুলি গণনা করে।


-1

উবুন্টুতে অন্তর্নির্মিত ' সিস্টেম মনিটর ' জিইউআই সরঞ্জামটি ব্যবহার করুন


1
কমপক্ষে 16.04 সাল থেকে এটি খুব ভালভাবে কাজ করে। এটি অনেকটা শীর্ষের মতো, যদিও ব্যবহৃত মেমরিটি খুব সুনির্দিষ্ট নয় ...
অ্যালেক্সিস উইলক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.