কিভাবে আমি প্রসেস swap স্থান ব্যবহার করে খুঁজে পেতে পারেন?


9

আমার কাছে 9 গিগাবাইটের সোয়াপ ব্যবহার সম্পর্কে একটি লিনাক্স সার্ভার শীর্ষ প্রতিবেদন রয়েছে: top

কিন্তু আমি এটি swap ব্যবহার যেখানে এটি সনাক্ত করতে পারে না, কিছু গুগল ফলাফল বলেন যে শীর্ষ - O কমান্ড অনুসরণ করে p প্রক্রিয়া দ্বারা swap ব্যবহার প্রদর্শন করা হবে। কিন্তু উপরের ছবিতে দেখানো হিসাবে, SWAP কলামের একটি সংক্ষিপ্ত সমষ্টি দেখায় যে & gt; 10 গিগাবাইট swap ব্যবহার করা হয়, তাই swap ব্যবহারের জন্য 9 গিগাবাইট চিত্রে কোথা থেকে আসে?

শীর্ষ রিপোর্ট যে প্রায় 96492 কেবি র্যাম বাফার দ্বারা ব্যবহৃত হয়। Swap ব্যবহার করার পরিবর্তে এটি ব্যবহার করার জন্য আমি কি কিছু করতে পারি?


1
উপরের (ম্যান পেইজ প্রতি) SWAP কে ভার্চুয়াল হতে গণনা করে - PHYSICAL RAM ব্যবহার। আমার পরীক্ষা থেকে সম্পূর্ণ সঠিক নয়।
lornix

উত্তর:


6

এটি সম্ভব যে একাধিক প্রোগ্রাম একই সোয়াপ এলাকা ব্যবহার করবে, তাই এটি দুবার প্রতিবেদন করা হবে।

Swap পরিবর্তে buffered এলাকাটি ব্যবহার করার জন্য লিনাক্সকে বলার চেষ্টা করার প্রয়োজন নেই - এটি কী করছে তা নিয়ে ইতিমধ্যেই খুব স্মার্ট। আপনি যদি 9 গিগাবাইট সোয়াপ এবং 9 গিগাবাইট বাফার ব্যবহার করেন তবে এটি একটি ভাল জিনিস ... এর মানে লিনাক্স বুঝতে পারে যে মেমরিতে লোড হওয়া 9 গিগাবাইট স্টাফ সক্রিয়ভাবে ব্যবহার করা হচ্ছে না, তাই এটি ডিস্কে সোয়াপ করার জন্য আরও কার্যকর। বাফার বড় হতে পারে, এবং আপনার কর্মক্ষমতা উন্নত করতে পারেন।


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


আমি মনে করি ভাগ করে নেওয়া লাইব্রেরিগুলি সোয়াপ হিসাবে গণনা করা উচিত নয়, কারণ যখন সিস্টেমটি শুরু হয়, তখন কোনও সোয়াপ ব্যবহার করা হয় না তবে অনেক ভাগ করা লাইব্রেরি ইতিমধ্যে লোড হয়। যাইহোক, আমি দেখি যে আমার সিস্টেমটি প্রায় 9 গিগাবাইট swap পার্টিশন ব্যবহার করে, আমি কেবল জানতে চাই যে কোন প্রক্রিয়াটি বেশিরভাগ সোয়াপ ব্যবহার করে (শেয়ার লাইব্রেরি, মেমরি মানচিত্র ফাইল বাদে ...)
secmask

3

/ Proc সাব-ডিরেক্টরি কাজ করে:

একটি bash স্ক্রিপ্ট হিসাবে:

for PROCESS in /proc/*/; do
  swapused=$(awk 'BEGIN { total = 0 } /^Swap:[[:blank:]]*[1-9]/ { total = total + $2 } END { print total }' ${PROCESS}/smaps 2>/dev/null || echo 0)
  if [ $swapused -gt 0 ]; then
    /bin/echo -e "${swapused}k\t$(cat ${PROCESS}/cmdline)"
  fi
done

আউটপুট সাজানোর জন্য পাইপিং দ্বারা হাই-লো সাজানো হতে পারে:

{blah}| sort -rn

অবশ্যই, আপনার পছন্দসই ভাষা সপ্তাহে আপনি চান হিসাবে এই পুনর্লিখন। আমার Awk-Fu শক্তিশালী নয়।

(কাটা-এন-pastable)

#!/bin/bash
#
# show swap used by processes
#
(for PROCESS in /proc/*/; do
  swapused=$(awk 'BEGIN { total = 0 } /^Swap:[[:blank:]]*[1-9]/ { total = total + $2 } END { print total }' ${PROCESS}/smaps 2>/dev/null || echo 0)
  if [ $swapused -gt 0 ]; then
    /bin/echo -e "${swapused}k\t$(cat ${PROCESS}/cmdline)"
  fi
done ) | sort -nr


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