ফ্রি র‌্যাম অদৃশ্য - মেমরি ফুটো?


11

একটি নতুন freeপ্রবর্তিত সিস্টেমে, 1.5.G প্রায় র‍্যাম ব্যবহার করা হয়েছে (8G র‌্যাম সম্পূর্ণরূপে, উবুন্টু 12.04 লাইটডিএম এবং প্লাজমা ডেস্কটপ সহ, একটি কনসোল উইন্ডো শুরু হয়েছে) সম্পর্কিত প্রতিবেদনগুলি। আমি যে অ্যাপ্লিকেশনগুলি ব্যবহার করি তা চালিয়ে যাওয়া, এটি এখনও 2 জি-র বেশি গ্রহণ করে না। যাইহোক, সিস্টেমটি কয়েক দিন চলমান থাকা সত্ত্বেও, আমার নিখরচায় র‍্যামের বেশিরভাগ অদৃশ্য হয়ে যায় - ব্যবহৃত অ্যাপ্লিকেশনগুলির তালিকায় প্রদর্শিত না করে: যখন smem --pie=name20% এরও কম ব্যবহৃত হয় (এবং 80% উপলব্ধ রয়েছে), অন্য সব কিছু বলে ভিন্নভাবে। free -mউদাহরণস্বরূপ 7 দিনের দিন রিপোর্টগুলি:

             total       used       free     shared    buffers     cached
Mem:          7459       7013        446          0        178        997
-/+ buffers/cache:       5836       1623
Swap:         9536        296       9240

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

kernel: [856738.020829] VFS: file-max limit 752838 reached

সুতরাং আমি যে অ্যাপ্লিকেশনগুলি বন্ধ করতে পেরেছিলাম তা বন্ধ করে দিয়েছিলাম এবং সিটিআরএলটি-আল্ট-ব্যাকস্পেস ব্যবহার করে এক্সকে হত্যা করেছি। এক্স এর পরে ব্যর্থ সাফেক্সের সাথে আবার আসার চেষ্টা করেছিল, তবে এটির কনফিগারেশনটি আর সনাক্ত করতে না পারায় এটি করতে অক্ষম। সুতরাং আমি Ctrl-Alt-F2 ব্যবহার করে একটি কনসোলে স্যুইচ করেছি, আমি (vmstat, ফ্রি, গন্ধ proc/meminfo, lsof, ps aux) ভাবতে পারে এমন সমস্ত তথ্য ক্যাপচার করে অবশেষে পুনরায় বুট করেছিলাম । এক্স আবার failafeX নিয়ে এসেছিল; এবার আমি এটিকে "আমার ব্যাক-আপ কনফিগারেশনটি থেকে পুনরুদ্ধার" করতে বলেছিলাম, তারপরে একটি কনসোলে স্যুইচ startxকরা হয়েছে এবং গ্রাফিকাল পরিবেশ আনতে সফলভাবে ব্যবহৃত হয়েছে।

এই সমস্যাটি কী ঘটছে তা সম্পর্কে আমার কোনও সত্যিকারের ধারণা নেই - যদিও এটি অবশ্যই এক্স এর সাথেই করতে হবে, বা এক্স-এর সাথে চলমান কিছু ব্যবহারকারী প্রক্রিয়াগুলিও করতে হবে - এক্সকে হত্যা করার পরে, free -mআউটপুটটি এ জাতীয় দেখাচ্ছে:

             total       used       free     shared    buffers     cached
Mem:          7459       2677       4781          0         62        419
-/+ buffers/cache:       2195       5263
Swap:         9536         59       9477

(~ 3.5 জিবি মুক্তি পাচ্ছে) - একটি নতুন শুরুর পরে আউটপুটটির সাথে তুলনা করতে:

             total       used       free     shared    buffers     cached
Mem:          7459       1483       5975          0         63        730
-/+ buffers/cache:        689       6769
Swap:         9536          0       9536

আরও দুটি সহায়ক আউটপুট সরবরাহ করেছেন memstat -u। ক্রাশের অল্প আগে:

User     Count     Swap      USS      PSS      RSS
mail         1        0      200      207      616
whoopsie     1      764      740      817     2300
colord       1     3200      836      894     2156
root        62    70404   352996   382260   569920
izzy        80   177508  1465416  1519266  1851840

এক্স হত্যা করার পরে:

User     Count     Swap      USS      PSS      RSS
mail         1        0      184      188      356
izzy         1     1400      708      739     1080
whoopsie     1      848      668      826     1772
colord       1     3204      804      888     1728
root        62    54876   131708   149950   267860

এবং পুনরায় চালু করার পরে, এক্সে ফিরে যান:

User     Count     Swap      USS      PSS      RSS
mail         1        0      212      217      628
whoopsie     1        0     1536     1880     5096
colord       1        0     3740     4217     7936
root        54        0   148668   180911   345132
izzy        47        0   370928   437562   915056

এক সপ্তাহের জন্য ফাইল সিস্টেমের ব্যবহার এক সপ্তাহের জন্য কার্নেল / সিপিইউ ব্যবহার

সম্পাদনা করুন: আমার পর্যবেক্ষণ সিস্টেম থেকে সবেমাত্র দুটি গ্রাফ যুক্ত হয়েছে। দেখতে আকর্ষণীয়: প্রতিবার যখন মেমরির ব্যবহারে "লাফ" থাকে, তখন সিপিইউ শিখরও হয়। ঠিক এখনই এটি খুঁজে পেয়েছে - এবং এটি আমাকে এক্স এর দিকে ইঙ্গিত করার অন্য একটি সূচক সম্পর্কে মনে করিয়ে দেয়: প্রায়শই আমার মেশিনে ফিরে এসে স্ক্রিনটি আনলক করার সময়, আমি আমার সিপিইউতে ভারী কাজ করার কিছু পেয়েছি। পরীক্ষা করা হচ্ছে top, এটি সর্বদা পরিণত হয়েছিল /usr/bin/X :0 -auth /var/run/lightdm/root/:0 -nolisten tcp vt7 -novtswitch -background none

সুতরাং এই দীর্ঘ ব্যাখ্যার পরে, অবশেষে আমার প্রশ্নগুলি:

  1. সম্ভাব্য কারণগুলি কী হতে পারে?
  2. আমি কীভাবে জড়িত প্রক্রিয়াগুলি / অ্যাপ্লিকেশনগুলি আরও ভালভাবে সনাক্ত করতে পারি?
  3. এই আচরণটি এড়াতে কী পদক্ষেপ গ্রহণ করা যেতে পারে - সমস্ত X দিন মেশিনটি রিবুট করা থেকে কম?

আমি আমার পুরানো মেশিনে প্রায় 5 বছর ধরে 8.04 (হার্ডি) চালিয়ে যাচ্ছি, যেমন কার্নেল আপডেটের জন্য পুনরায় বুট করার আগে কখনও কখনও (যেমন সবসময় 100 দিনের বেশি সময় অবধি) অভিজ্ঞতা হয় নি। এটি এখন একটি নতুন নতুন মেশিন যা 12.04 এর একটি নতুন ইনস্টল । যদি এটি গুরুত্বপূর্ণ হয় তবে কিছু চশমা:

ওপেন-সোর্স আতি / রেডিয়ন ড্রাইভার (সুতরাং কোনও এফজিএলআরএক্স ইনস্টল করা হয়নি), 8 জিবি র‌্যাম, ডাব্লুডিসি ডাব্লুডি 1002 এফএইচডি -0 এইচডিডি (1 টিবি), আসুস এফ 1 এ 75-ভি ইভো মেইনবোর্ড ব্যবহার করে র‌্যাডিয়ন (টিএম) এইচডি গ্রাফিক্সের সাথে এএমডি এ 4-3400 এপিইউ। উবুন্টু 12.04 -৪-বিট কেডি 4 / প্লাজমা সহ। অ্যাপ্লিকেশনগুলিতে সাধারণত কম বা বেশি স্থায়ীভাবে খোলা থাকে বিবর্তন, ফায়ারফক্স, কনসোল (মিডনাইট কমান্ডার অভ্যন্তরে প্রায় 4 টি ট্যাব সহ) এবং লিব্রেফিস - এবং মাঝে মধ্যে ক্যালিবার, গিম্প এবং মনিপ্লেক্স (ব্যাংকিং সফটওয়্যার যা আমি ইতিমধ্যে প্রায় 20 বছর ধরে ব্যবহার করছি, এমন একটি সংস্করণ যা হার্ডির উপর জরিমানা করেছে)।

সম্পাদনা: আজ আমি একটি "দুষ্ট লোক" পেয়েছি: কেডিএ 4 প্লাজমা-ডেস্কটপ। ব্যবহৃত মেমরিটি আবার 5 গিগাবাইট পর্যন্ত ছিল, যখন আমি ক killall plasma-desktop && plasma-desktop। এই 1.3 জিবি র‌্যাম মুক্ত! psবলেছেন:

                             RSS    SIZE   VSZ
plasma usage before restart  120988 526472 1300816
plasma usage after restart   92352  495972 1263632

তাহলে কোথায় এই 1.3 জিবি হয়েছে? এই মানগুলির মধ্যে পার্থক্য, যদি যোগ করা হয় তবে এর পরিমাণ 96MB - 1.3GB নয়।

এবং এটি কেবলমাত্র একটি অংশ হতে পারে, যেহেতু এখনও ৩. use জিবি ব্যবহার হচ্ছে (এটি 2 জিবি থেকে কম হওয়া উচিত)। আমি গত 6 দিনে বেশ কয়েকটি সরঞ্জাম ব্যবহার করে এটি পর্যবেক্ষণ করেছি: ব্যবহৃত মেমরি (ক্যাশে এবং বাফার সম্পর্কে কথা বলছে না) ধীরে ধীরে কিন্তু অবিচ্ছিন্নভাবে বৃদ্ধি পায়। এমনকি আমি কিছু চালানোর জন্য আমার ডেস্কে না থাকলেও ...

উন্মুক্ত ফাইলগুলির সাথে নিরীক্ষণের প্রক্রিয়াগুলি হিসাবে, আমি বর্তমানে শীর্ষ -5 পেতে নিম্নলিখিত 1-লাইনার (আমি শেল এবং বিশেষত বাশকে পছন্দ করি) ব্যবহার করি:

echo "$(for pid in $(ls -a /proc|egrep '^([0-9])*$'|sort -n 2>/dev/null); do \
if [ -e /proc/$pid/fd ]; then FHC=$(ls -l /proc/$pid/fd|wc -l); \
if [ $FHC -gt 0 ]; then PNAME="$(cat /proc/$pid/comm)"; \
echo "$FHC files opened by $pid ($PNAME)"; fi; fi; done)"|sort -r -n|head -n5

উন্নত পাঠযোগ্যতার জন্য এখানে 4 লাইনে আদেশ দিন। সেখান থেকে এখনও খুব বেশি কিছুই নেই - বাদে ইন্টারনেটের সংযোগটি ভেঙে স্কাইপ পছন্দ করে না। প্রতিটি সংযোগ বিচ্ছিন্ন হওয়ার কারণে এর খোলা ফাইলগুলির সামান্য বৃদ্ধি ঘটে তবে নাটকীয় কিছুই হয় না। অন্যদিকে মনে হচ্ছে প্লাজমাও এর জন্য দায়ী:

ভিএফএস ব্যবহার (2 দিন)

শেষে ফাইল হ্যান্ডলগুলির ড্রপটি দেখুন? এটি ছিল প্লাজমা পুনঃসূচনা।


sudo bash -c 'sync; echo 3 > /proc/sys/vm/drop_caches'অতিরিক্ত মেষ সাফ করবেন ? আপনি প্রোগ্রামগুলির খোলা ফাইলগুলি দেখতে পারেনlsof
স্যাভাস রাদেভিক

এছাড়াও, আপনি কি ডেস্কটপ পরিচালকদের স্যুইচ করার চেষ্টা করেছেন? যেমন lxde (বা লুবুন্টু-ডেস্কটপ)? অবশেষে, আপনি কি ডিস্কের আউটপুট ঠিকঠাক নিশ্চিত? আপনি কি ডিস্কের স্মার্ট ডেটা এবং একটি লাইভ সিডি ব্যবহার করে ডিস্ক থেকে / ডিস্কে ফাইলগুলি অনুলিপি করার গতি পরীক্ষা করেছেন?
স্যাভাস রাদেভিক

আপনার কোনও ফুটো আছে কিনা তা পরীক্ষা করতে এটি পরীক্ষা করে দেখুন মেমরি ফাঁস কীভাবে সনাক্ত করবেন
মিচ

@ মিডিজেক: আমি যেমন উল্লেখ করেছি, ক্যাশে এবং বাফারগুলি বিষয়টি নয়। এর আউটপুট দেখুন free। আমি বাস্তবে বিবেচনা করেছি একটি অন্য ডিইয়ে স্যুইচিং; যদি কে। ডি .৩.৫ পাওয়া যেত, আমি প্লাজমা দিয়ে শেষ করিনি। এটি কেবলমাত্র প্লাজমা জড়িত কিনা তা দেখার জন্য অস্থায়ী হতে পারে।
ইজজি

@ মিচ: আমি বুঝতে পেরেছিলাম যে একটি পরিচিত প্রক্রিয়ার (যা আমি এখনও বিচ্ছিন্ন করি নি) বিরুদ্ধে মেমপ্রোফ ব্যবহার করা উচিত। অবশ্যই এটি সিস্টেম-ব্যাপী ব্যবহার করা যেতে পারে? তদুপরি, "অনেকগুলি উন্মুক্ত ফাইল" ত্রুটিটি যেমন প্রস্তাব করে, আমার কাছে মনে হচ্ছে যে কোনও প্রক্রিয়া প্রচুর ফাইল হ্যান্ডলগুলি খুলছে, সেগুলি কখনও প্রকাশ করে না। তা মেমপ্রফের হাতে ধরা পড়বে কিনা তা নিশ্চিত নয়। আমি এখন ওপেন ফাইলের মাধ্যমে শীর্ষ -5 প্রক্রিয়াগুলি ক্যাপচারের জন্য একটি স্ক্রিপ্ট সেট আপ করেছি - আশা করি এটি মন্দটিকে পরিণত করে।
ইজজি

উত্তর:


6
  1. বিপুল সংখ্যক ওপেন ফাইল হ'ল এটি একটি ভাল সূত্র যা কিছু ভুল হয়ে যাচ্ছে। আমার অনুমান কিছু কে-ডি-সিস্টেম সিস্টেম ডেমন হবে।

  2. একটি কনসোল খুলুন এবং "শীর্ষ" চালান। তারপরে বাছাই কলামটি ভিআইআরটি বা আরইএস এ পরিবর্তন করতে <এবং> ব্যবহার করুন এবং দেখুন কোন প্রোগ্রামগুলি সর্বাধিক মেমরি ব্যবহার করছে। একটি মেমরি ফাঁস একটি ব্যাপকভাবে স্ফীত ভার্চুয়াল মেমরি ব্যবহার হিসাবে প্রদর্শিত হবে, ফাঁস মেমরির পয়েন্টারটি একবার হারিয়ে গেলে এটি ব্যবহার করা হবে না এবং অদলবদল হয়ে যাবে। "Lsof" চালান এবং প্রচুর উন্মুক্ত ফাইল সহ একটি প্রক্রিয়া সন্ধান করুন, যেহেতু এটি সত্যিই কোনও ফাইল বর্ণনাকারী ফাঁস বলে মনে হচ্ছে।

  3. প্রোগ্রামটি ট্র্যাক করুন এবং একটি বাগ রিপোর্ট করুন।


আমি এর জন্য ইতিমধ্যে শীর্ষ / এইচপি ব্যবহারের চেষ্টা করেছি। সমস্যাটি হ'ল, এটি রিসিডেন্ট মেমরির জন্য কোনও ফলাফল দেখায় নি (উপরে বর্ণিত হিসাবে ব্যবহৃত মেমরির কেবল একটি ছোট অংশই চলমান অ্যাপগুলির সাথে সংযুক্ত হতে পারে)। এবং ভার্চুয়াল মেমরির জন্য এটি ব্যাখ্যা করা শক্ত (স্টার্টআপের ঠিক পরে, ভার্চুয়াল মেমরিটি এখানে 3TB অবধি ব্যবহৃত হয় - এমন একটি আকার এমনকি আমার হার্ডড্রাইভও পরিচালনা করতে পারে না)। সুতরাং বর্তমানে উদাহরণস্বরূপ, বিবর্তনটি শীর্ষ অনুসারে, 1.9 গিগাবাইট ভিআইআরটি ব্যবহার করে, যখন সামগ্রিকভাবে ব্যবহারের মেমরিটি 1.2 গিগাবাইট পর্যন্ত থাকে (ক্যাশে এবং বাফার বাদে)। এবং হ্যাঁ, আমার প্রথম উদ্দেশ্যটি প্রোগ্রামটি সন্ধান করা, যাতে আমি একটি বাগ ফাইল করতে পারি ...
ইজজি

আমার নিরীক্ষণ সিস্টেম থেকে সবেমাত্র 2 টি ইমাগুলি যুক্ত হয়েছে। দেখে মনে হচ্ছে "লাফানো" সবসময় দিনের একই সময়ে ঘটেছিল (যদিও 1 ব্যতিক্রম)। দুর্ভাগ্যক্রমে ইমাগুলি ক্রোন দিয়ে পরীক্ষা করার জন্য কোনও টাইমস্ট্যাম্প দেয় না। বিটিডব্লিউ: কোন প্রক্রিয়াতে কতগুলি ফাইল খোলা আছে তা নিরীক্ষণের কোনও উপায় আছে?
ইজজি

1
আপনার অনুমান একটি ভাল ছিল। ডিমন না হলেও এটি মূলত কে-ডি-কে উপাদান ছিল: প্লাজমা-ডেস্কটপ (উপরে দেখুন)। এটি সম্পর্কে মজার বিষয়: আমি সবেমাত্র বের করেছি এবং এটি এখানে পোস্ট করেছি - এবং আমার প্রতিদিনের 10 মিনিট পরে apt-get update && apt-get upgradeপ্লাজমা-ডেস্কটপের জন্য একটি আপডেট ছিল; এই ছেলেরা দ্রুত এক্স) এখন আমি কিছুক্ষণের জন্য এটি পর্যালোচনা করে দেখি যে সমস্যাটি সমাধান হয়েছে কিনা, আমি এর আগে এইরকম ঘোষণার আগে। এখন অবধি, জিনিসগুলি বেশ আশাব্যঞ্জক দেখাচ্ছে।
ইজজি

এখনও স্থির দেখাচ্ছে। যদিও আমাকে "অশুভ প্রক্রিয়া" lsofবা topনির্দেশিত করা হয়নি, তবুও আপনার অনুমানের বিষয়টি আমাকে কে-ডিফল্ট নির্দেশকের দিকে নির্দেশ করেছে। সুতরাং আপনাকে আবার ধন্যবাদ - আমার মেশিনের আপটাইম এখন প্রায় 14 ডি, এবং এখনও স্থির দেখায়, যদিও আমি ভার্চুয়ালবক্স, সংকলন ইত্যাদি সমান্তরালভাবে চালিয়েছি। সুতরাং আমি এটি সমাধান করা বিবেচনা করছি এবং নিকটতম ম্যাচটি চিহ্নিত করব :)
ইজজি

0

আমি মনে করি এটি স্বাভাবিক ব্যবস্থার আচরণ। সম্ভবত সবকিছু ঠিক আছে।

আপনি এই উজ্জ্বল কাগজটি পড়তে পারেন (লিনাক্স আমার ম্যামটি খেয়েছে), লিনাক্স কীভাবে আপনার ম্যাম পরিচালনা করছে এবং কেন উদ্বিগ্ন হওয়ার দরকার নেই:

http://www.linuxatemyram.com/


4
ওহ - আমি কখনও শুনিনি যে "খুব বেশি ফাইল" ত্রুটি সহ সিস্টেম 7 দিনের পরে ক্র্যাশ হয়ে গেলে এটি "স্বাভাবিক সিস্টেমের আচরণ"। আমি এখন প্রায় 15 বছর ধরে লিনাক্স চালাচ্ছি, এটি কখনও ছিল না। এবং হ্যাঁ, আমি সম্পূর্ণরূপে বুঝতে পারি যে লিনাক্স কীভাবে "ফ্রি র‌্যাম" ব্যবহার করে (এটি ক্যাচিং ইত্যাদির জন্য ব্যবহার করে) উপরে বর্ণিত হিসাবে: ক্যাশে এবং বাফারগুলি এখানে সমস্যা নয়। আমি ভাল কারণে র‌্যাম ব্যবহার করার কথা বলছি না - লিনাক্স অদলবদলের দামের জন্য কখনই ক্যাশে আটকে থাকবে না।
ইজজি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.