লিনাক্স: সমস্ত র‌্যাম ব্যবহার করে কোন প্রক্রিয়াটি আবিষ্কার করুন?


127

প্রকৃতপক্ষে জিজ্ঞাসা করার আগে, কেবল স্পষ্ট করে বলার জন্য: হ্যাঁ, আমি ডিস্ক ক্যাশে সম্পর্কে জানি এবং না, এটি আমার ক্ষেত্রে নয় :) দুঃখিত, এই উপস্থাপিতের জন্য :)

আমি CentOS 5 ব্যবহার করছি সিস্টেমের প্রতিটি অ্যাপ্লিকেশন ভারীভাবে অদলবদল করছে এবং সিস্টেমটি খুব ধীর গতির। আমি যখন করি free -m, এখানে আমি যা পেয়েছি তা এখানে:

             total       used       free     shared    buffers     cached
Mem:          3952       3929         22          0          1         18
-/+ buffers/cache:       3909         42
Swap:        16383         46      16337

সুতরাং, আমার কাছে ব্যবহারের জন্য কেবলমাত্র 42 এমবি রয়েছে! আমি যতদূর বুঝতে পেরেছি, -/+ buffers/cacheআসলে ডিস্কের ক্যাশে গণনা করে না, সুতরাং আমার কাছে কেবল 42 এমবি আছে, তাই না? আমি ভেবেছিলাম, আমি ভুল হতে পারি, তাই আমি ডিস্ক ক্যাশেটি বন্ধ করার চেষ্টা করেছি এবং এর কোনও প্রভাব নেই - চিত্রটি একই ছিল।

সুতরাং, আমি আমার সমস্ত র‌্যাম কে ব্যবহার করছে তা সন্ধান করার সিদ্ধান্ত নিয়েছি এবং আমি এটির topজন্য ব্যবহার করেছি। তবে, স্পষ্টতই, এটি প্রতিবেদন করে যে কোনও প্রক্রিয়া আমার র‌্যাম ব্যবহার করছে না। আমার শীর্ষে থাকা একমাত্র প্রক্রিয়াটি মাইএসকিউএল, তবে এটি র‌্যামের 0.1% এবং 400Mb অদলবদল ব্যবহার করছে। আমি অন্যান্য পরিষেবাদি বা অ্যাপ্লিকেশনগুলি চালানোর চেষ্টা করার সময় একই চিত্র - সবগুলি অদলবদল করে, topদেখায় যে এমইএম ব্যবহার করা হয়নি (যে কোনও প্রক্রিয়ার জন্য 0.1% সর্বাধিক)।

top - 15:09:00 up  2:09,  2 users,  load average: 0.02, 0.16, 0.11
Tasks: 112 total,   1 running, 111 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   4046868k total,  4001368k used,    45500k free,      748k buffers
Swap: 16777208k total,    68840k used, 16708368k free,    16632k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  SWAP COMMAND
 3214 ntp       15   0 23412 5044 3916 S  0.0  0.1   0:00.00  17m ntpd
 2319 root       5 -10 12648 4460 3184 S  0.0  0.1   0:00.00 8188 iscsid
 2168 root      RT   0 22120 3692 2848 S  0.0  0.1   0:00.00  17m multipathd
 5113 mysql     18   0  474m 2356  856 S  0.0  0.1   0:00.11 472m mysqld
 4106 root      34  19  251m 1944 1360 S  0.0  0.0   0:00.11 249m yum-updatesd
 4109 root      15   0 90152 1904 1772 S  0.0  0.0   0:00.18  86m sshd
 5175 root      15   0 90156 1896 1772 S  0.0  0.0   0:00.02  86m sshd

পুনঃসূচনা সাহায্য করে না, এবং তাদের উপায়ে খুব ধীর গতির, যা আমি সাধারণত এই মেশিনে আশা করি না (4 কোর, 4 জিবি র‌্যাম, রেড 1)।

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

সুতরাং, অবশেষে, প্রশ্নটি হল - কারও যদি ধারণা থাকে যে কী প্রক্রিয়াটি আসলে এত ভারীভাবে স্মৃতি ব্যবহার করছে?


1
আপনি কি এর উত্তর খুঁজে পেয়েছেন?
হ্যাকারন

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

@ দিলটিক আহ, ঠিক আছে আপনাকে ধন্যবাদ :) - আমার কাছে এখানে দুটি সার্ভার রয়েছে যা প্রায় 12 ঘন্টাের ব্যবধানে সমস্ত উপলভ্য মেমরি ফাঁস করে দেয়, এটি নির্ণয়ে সহায়তা করতে আমি করতে পারি এমন কিছু আছে কিনা তা আমাকে জানান। আমি আইআরসি (irc.freenode.org) এ "হ্যাকারন" ডাকনাম হিসাবে পৌঁছতে সক্ষম।
হ্যাকারন

@ হ্যাকারন: আমি আপনাকে "হ্যাকারন" হিসাবে খুঁজে পাইনি irc.freenode.org। আমি এখানে বর্ধিত আলোচনার জন্য একটি চ্যাটরুম তৈরি করেছি ।
ডেলটিক

জেডএফএস ইন-মেমোরি এআরসি (এবং / বা এল 2 এআরসি) ক্যাশেটি প্রদর্শিত না free -mহলেও এটির আকার লিনাক্সের সাথে অনুসন্ধান করা যেতে পারে cat /proc/spl/kstat/zfs/arcstats | grep data_size
kqr

উত্তর:


112

topপ্রক্রিয়াধীন লিনাক্সে আপনি <আউটপুট ডিসপ্লে বাছাই করতে কী চাপতে পারেন sort ডিফল্টরূপে এটি বাছাই করা হয় %CPUতাই আপনি কীটি 4 বার টিপলে আপনি এটিকে বাছাই করবেন VIRTযার দ্বারা ভার্চুয়াল মেমরি আকার আপনাকে উত্তর দেয়।

এটি করার আরেকটি উপায় হ'ল:

ps -e -o pid,vsz,comm= | sort -n -k 2

ভার্চুয়াল আকার প্রক্রিয়া অনুসারে আপনাকে এবং আউটপুটটিকে সাজানো উচিত।

এখানে দীর্ঘ সংস্করণ:

ps --everyone --format=pid,vsz,comm= | sort --numeric-sort --key=2

এটি আমাকে Warning: bad ps syntax, perhaps a bogus '-'? See http://procps.sf.net/faq.htmlউবুন্টু সার্ভার ১১.১০ এ দেয় ।
ডের হচস্টাপলার

1
@ অলিভারসালজবার্গ ইস্যুটি -oবিকল্প। RHEL4 এটি কাজ করে। RHEL5: ps -e -o pid,vsz,comm= | sort -n -k 2কাজ করে : আমি আজ রাত্রে ১১.১০ চেষ্টা করব তবে আপনি যদি সঠিক সাজানোর বিকল্পগুলি খুঁজে পান তবে দয়া করে আমাকে জানান। ps -e -o pid,vsz,comm | sort -n -k 2কাজ করতে পারে তবে এই মুহুর্তে যাচাই করার মতো জায়গা আমার নেই।
কার্লসন

2
আমি -efবিকল্পের সাথে সত্যই পরিচিত নই । তবে এটি যুক্তিসঙ্গত আউটপুট তৈরি করে বলে মনে হচ্ছে:sudo ps axo pid,vsz,comm=|sort -n -k 2
ডের হচস্টাপলার

1
টাই, আমি শীর্ষ পরামর্শটি পছন্দ <করি যে আমি জানতাম না এটি সম্ভব, ফেডোরা
এসএসএইচ

2
র‌্যাম দখল করে এবং সম্পূর্ণ কমান্ড দেখায় এমন প্রসেসগুলি পেতে সামান্য পরিবর্তিত সংস্করণ :ps -e --format=pid,rss,args | sort --numeric-sort --key=2
সেনগ্রেস

71

প্রসেসের মেমরি মেগাবাইট এবং প্রক্রিয়া পাথে দেখান।

ps aux  | awk '{print $6/1024 " MB\t\t" $11}'  | sort -n

8
সুপার ব্যবহারকারীকে স্বাগতম এই কোডটি কী করে এবং কীভাবে এটি সমস্যার সমাধান করে তা বোঝাতে আপনি নিজের উত্তরটি প্রসারিত করতে পারেন? অব্যক্ত কোডটি নিরুৎসাহিত করা হয়েছে , কারণ এটি সমাধানটি শেখায় না। ধন্যবাদ।
ফিক্সার 1234

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

14

কোনও সার্ভারে কেবলমাত্র একটি পার্শ্ব নোট যা একই লক্ষণগুলি দেখায় কিন্তু মেমরি ক্লান্তি দেখায়। যা সন্ধানের অবসান ঘটেছিল তা ছিল 32 জিবি র‌্যামযুক্ত একটি বাক্স থেকে একটি সিসিচটল কনফ এবং 12000 এ কনফিগার করা বিশাল পৃষ্ঠাগুলি সহ একটি ডিবি সেটআপ This তাদের 960)। বিশাল পৃষ্ঠাগুলি 10 এ সেট করা, যে কোনওভাবেই ব্যবহৃত হয়নি, সমস্ত স্মৃতি মুক্ত করে।

কমপক্ষে একটি অপ্রত্যাশিত মেমরি হগের সমস্যা সমাধানের জন্য HugePages_ সেটিংস সন্ধান করার জন্য / proc / meminfo এর দ্রুত চেক করা ভাল শুরু হতে পারে।


2
আমার সম্প্রতি অন্য একটি সার্ভার ছিল যেখানে এটি সমস্যা ছিল। যদি আপনার প্রতিষ্ঠানের এতে পূর্ব-ওরাকল কর্মচারী থাকে তবে এই সেটিংটি আপনার অপরাধী হতে পারে।
ক্ষেত্রগুলি

5

আমার ক্ষেত্রে সমস্যাটি হ'ল সার্ভারটি একটি ভিএমওয়্যার ভার্চুয়াল সার্ভার যা vmw_balloonমডিউল সক্ষম হয়েছিল:

$ lsmod | grep vmw_balloon
vmw_balloon            20480  0
vmw_vmci               65536  2 vmw_vsock_vmci_transport,vmw_balloon

চলমান:

$ vmware-toolbox-cmd stat balloon
5189 MB

সুতরাং প্রায় 5 জিবি মেমরি বাস্তবে হোস্ট দ্বারা পুনরুদ্ধার করা হয়েছিল। সুতরাং আমার ভিএমকে "অফিশিয়ালি" 8 জিবি থাকা সত্ত্বেও বাস্তবে এটি অনেক কম ছিল:

$ free
              total        used        free      shared  buff/cache   available
Mem:        8174716     5609592       53200       27480     2511924     2458432
Swap:       8386556        6740     8379816

2

প্রক্রিয়া সম্পর্কে আরও তথ্য পেতে আপনি পিএস কমান্ডও ব্যবহার করতে পারেন।

ps aux | less

কৌতূহলের বাইরে এই আদেশটি থেকে বাঁচার সঠিক উপায় কী? এটি দেখায় যে আমি শেষ লাইনে পৌঁছেছি, যখন আমি Ctrl + C এটি করি তখন এটি প্রক্রিয়াটিকে হত্যা করে না।
কিংসইনারসোল

1
@ কিংসইনারসোল 'কিউ' টিপুন
এনোবায়রাম

2

আমি পাইথন প্রক্রিয়া দ্বারা ব্যবহৃত এটি এবং মোট স্মৃতি উল্লেখ করি ? - স্ট্যাক ওভারফ্লো , এটি আমার উত্তর। আমি এখন একটি নির্দিষ্ট প্রক্রিয়া (পাইথন) গণনা সরঞ্জাম পেয়েছি।

# Megabyte.
$ ps aux | grep python | awk '{sum=sum+$6}; END {print sum/1024 " MB"}'
87.9492 MB

# Byte.
$ ps aux | grep python | awk '{sum=sum+$6}; END {print sum " KB"}'
90064 KB

আমার প্রক্রিয়া তালিকা সংযুক্ত করুন।

$ ps aux  | grep python
root       943  0.0  0.1  53252  9524 ?        Ss   Aug19  52:01 /usr/bin/python /usr/local/bin/beaver -c /etc/beaver/beaver.conf -l /var/log/beaver.log -P /var/run/beaver.pid
root       950  0.6  0.4 299680 34220 ?        Sl   Aug19 568:52 /usr/bin/python /usr/local/bin/beaver -c /etc/beaver/beaver.conf -l /var/log/beaver.log -P /var/run/beaver.pid
root      3803  0.2  0.4 315692 36576 ?        S    12:43   0:54 /usr/bin/python /usr/local/bin/beaver -c /etc/beaver/beaver.conf -l /var/log/beaver.log -P /var/run/beaver.pid
jonny    23325  0.0  0.1  47460  9076 pts/0    S+   17:40   0:00 python
jonny    24651  0.0  0.0  13076   924 pts/4    S+   18:06   0:00 grep python

উল্লেখ


1

লিখিত show-memory-usage.shসামগ্রী সহ একটি স্ক্রিপ্ট তৈরি করুন :

#!/bin/sh
ps -eo rss,pid,user,command | sort -rn | head -10 | awk '{ hr[1024**2]="GB"; hr[1024]="MB";
 for (x=1024**3; x>=1024; x/=1024) {
 if ($1>=x) { printf ("%-6.2f %s ", $1/x, hr[x]); break }
 } } { printf ("%-6s %-10s ", $2, $3) }
 { for ( x=4 ; x<=NF ; x++ ) { printf ("%s ",$x) } print ("\n") }
 '

6
কেন? এটি কি করে? এটা কিভাবে কাজ করে? লোককে এলোমেলো কোড চালাতে বলবেন না; এর উদ্দেশ্য এবং এটি কীভাবে কাজ করে তা ব্যাখ্যা করুন।
একটি সিভিএন

2
চিত্র আমি তাদের জন্য কোডটি ব্যাখ্যা করব যা এটি চালানো নিরাপদ বলে মনে হচ্ছে না বলে বোঝায় না, তবে ডাউনভোটটি তাদের পক্ষে কার্যকর হতে পারে towards এটি উপরের উত্তরের মতো একই কমান্ড চালাচ্ছে , তবে এটি এডাব্লুকে দিয়ে ফর্ম্যাট যুক্ত করছে। আমার ব্যক্তিগতভাবে স্ক্রিপ্টটি চালানো হয়নি কারণ এর জন্য আমার কোনও ব্যবহার নেই, তবে এটি ব্যাখ্যা করে কিছু ফর্ম্যাটের প্রয়োজন হয় তাদের সহায়তা করে।
ডলি_লাব

1
আমি কোডটি পড়েছি এবং এটি চালিয়েছি। এটি একটি টেবিলের মতো ক্ষেত্রগুলিকে সারিবদ্ধ করে এবং উপসর্গগুলির সাথে আবাসিক মেমরির বিন্যাস (যেমন 1.12 জিবি, 582.79 এমবি) mats
স্টাফেন গরিখন

0

এটি প্রক্রিয়া আইডিও গ্রহণ করে, এমবি দ্বারা ব্যবহৃত ধরণের ব্যবহৃত হয় এবং কমান্ডটির রূপরেখা দেয় (যে প্রক্রিয়াটি তৈরি করেছে):

ps aux | awk '{print $6/1024 " MB\t\t" $2 "\t" $11}' | sort -n


0

হাইপার-ভি-তে আমার উবুন্টু সার্ভার ডিআইআরএসটিআইবি রিলিজ = 18.04 এর বেশিরভাগ স্মৃতি ব্যবহার করা হয়েছিল, তবে সমস্ত প্রক্রিয়া ভাল ছিল। (স্বীকার করা হয়েছে আমি স্ন্যাপড এবং অপরিবর্তিত-আপগ্রেড প্যাকেজগুলি সরিয়েছি, তবে 95% মেমরি এখনও ব্যবহার করা হয়েছিল))

উত্তরটি হাইপার-ভি এর গতিশীল মেমরি রয়েছে, সুতরাং এটি মূল সিস্টেমের ব্যবহারের জন্য মেমরি নিয়েছে এবং উবুন্টু এটি ব্যবহৃত হিসাবে পতাকাঙ্কিত করেছে।

আশা করি এটি কাউকে সাহায্য করবে।

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