উবুন্টু লিনাক্স: অদলবদল মেমরি এবং মেমরির ব্যবহার প্রক্রিয়া করুন


14

আমার উবুন্টু টাস্ক ম্যানেজারের চেয়ে বেশি মেমরি খায়:

sudo ps -e --format rss  | awk 'BEGIN{c=0} {c+=$1} END{print c/1024}'
2750.29

free -m

             total       used       free     shared    buffers     cached
Mem:          3860       2765       1094          0          3        300
-/+ buffers/cache:       2461       1398
Swap:         2729       2374        354

এটা অদ্ভুত. কেউ এই পার্থক্য ব্যাখ্যা করতে পারেন?

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

আমি 'পিএস' এর প্যারাম "এসজেড" ফর্ম্যাটটি আউটপুট দেওয়ার চেষ্টাও করেছি, তবে এর যোগফল উচ্চ (16000 এমবি) (প্যারাম 'আকার' 36700 এমবি দেয়)। অন্য কোন বিকল্প আছে?

আমি সত্যিই এটি ব্যবহার করতে চাই, কোন প্রোগ্রাম / প্রক্রিয়াগুলি অনেক স্মৃতিতে (এবং অদলবদল) খাচ্ছে তা নির্ধারণ করতে, তাদের হত্যা করার জন্য, কারণ স্মৃতিশক্তিটি মূল্যবান :-) এটি সত্যিই বোধগম্য নয়, তাই আমি এখানে জিজ্ঞাসা করছি।

/ প্রোক / মেমিনফোর আউটপুট:

MemTotal:        3952812 kB                
MemFree:         1119192 kB
Buffers:            2676 kB
Cached:           290068 kB
SwapCached:       160980 kB
Active:          1805396 kB
Inactive:         731680 kB
Active(anon):    1745820 kB
Inactive(anon):   689184 kB
Active(file):      59576 kB
Inactive(file):    42496 kB
Unevictable:         148 kB
Mlocked:             148 kB
SwapTotal:       2795272 kB
SwapFree:         390900 kB
Dirty:              1984 kB
Writeback:             0 kB
AnonPages:       2085472 kB
Mapped:            67432 kB
Shmem:            190676 kB
Slab:              88012 kB
SReclaimable:      42704 kB
SUnreclaim:        45308 kB
KernelStack:        5496 kB
PageTables:        87860 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     4771676 kB
Committed_AS:    9522364 kB
VmallocTotal:   34359738367 kB
VmallocUsed:      374404 kB
VmallocChunk:   34359330144 kB
HardwareCorrupted:     0 kB
AnonHugePages:         0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:       61440 kB
DirectMap2M:     4030464 kB

আমার উল্লেখ করা উচিত যে "1043.84" "1178" থেকে খুব বেশি দূরে নয়, আপনি যে গণনাটি করছেন তার সাথে আপনি যে সংখ্যাটি পেতে যাচ্ছেন is
সিজেসি

আমি আক্ষরিকভাবে ইউনিক্স.স্ট্যাকেক্সেঞ্জেঞ্জ (+1) এ অভিন্ন প্রশ্নটি রেখেছিলাম। প্যাট্রিক সেখানেও আমার মনকে উড়িয়ে দিয়েছেন: P-- unix.stackexchange.com/questions/34795/…
গোল্ডেননিউবি

উত্তর:


10

লিনাক্স ভার্চুয়াল মেমরি সিস্টেমটি এত সহজ নয়। আপনি শুধু সব আরএসএস ক্ষেত্র পর্যন্ত যোগ এবং মান রিপোর্ট পেতে পারে না usedদ্বারা free। এর অনেকগুলি কারণ রয়েছে তবে আমি বেশ কয়েকটি বৃহত্তমকে আঘাত করব।

  • যখন একটি প্রক্রিয়া কাঁটাচামচ করে, পিতা-মাতা এবং শিশু উভয়ই একই আরএসএসের সাথে দেখাবে। তবে লিনাক্স নিয়োগ করে copy-on-writeযাতে উভয় প্রক্রিয়া সত্যই একই মেমরি ব্যবহার করে। যখন কোনও প্রক্রিয়া মেমরিটি পরিবর্তন করে তবেই এটি আসলে নকল হবে। সুতরাং freeএটি topআরএসএসের যোগফলের চেয়ে কম হবে ।

  • আরএসএসের মানটিতে ভাগ করা মেমরি অন্তর্ভুক্ত নয়। কারণ ভাগ করা মেমরি কোনও একটি প্রক্রিয়ার মালিকানাধীন নয়, topআরএসএসে অন্তর্ভুক্ত করে না। সুতরাং এটি freeসংখ্যার চেয়ে topআরএসএসের চেয়ে বড় হবে ।


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

দুঃখিত, আমি এই উত্তরটি গ্রহণ করতে পারি না, কারণ এটি অদলবদলের সমস্যার উত্তর দেয় না, তবে যাইহোক আপনাকে ধন্যবাদ!
ডেভিড হাল্টার

@ ডেভিডহাল্টার কী অদলবদলের সমস্যা? আমি যে তথ্য সরবরাহ করেছি তা অদলবদল সহ সমস্ত স্মৃতিতে প্রযোজ্য।
প্যাট্রিক

ভাগ করা মেমরি সত্যিই বড় হয় না, সাধারণত? কমপক্ষে যা আমি টাস্ক ম্যানেজারে দেখেছি। তবে আমার অদলবদল বেশ ভারী ব্যবহৃত হয়েছে: 1035 এমবি; পিএসের যোগফল 1 জিবি এবং অদলবদল + আরএসএসের যোগ> 2 জিবি। আমি দেখতে চাই যে কোনও প্রক্রিয়া সত্যিই কতটা স্মৃতি ব্যবহার করছে, কেবল আরএসএস নয়। আরও বেশি ইন্টারেস্টেস্টিং হ'ল কোনও প্রক্রিয়াটি কতটা অদলবদল মেমরি ব্যবহার করছে।
ডেভিড হাল্টার

1
@ ডেভিডহ্যাল্টার যদি আপনি দেখতে চান যে কোনও প্রক্রিয়া কতগুলি মেমোরি ব্যবহার করছে (ভাগ করে নিয়েছে), তবে 'ভিএসজেড' কলামটি দেখুন।
প্যাট্রিক

1

আমি মনে করি আপনার মোট মেমরির ব্যবহার যতদূর যায় "ফ্রি" আউটপুটকে বিশ্বাস করা এবং একক প্রক্রিয়া কতটা মেমোরি ব্যবহার করছে তার সাধারণ ধারণার জন্য "পিএস" তে বিশ্বাস করা ভাল।

কেবলমাত্র "পিএস" আরএসএস মানগুলির যোগফল "ফ্রি" সমান না হওয়ায় আপনাকে আরএসএস দ্বারা আপনার প্রক্রিয়াগুলি বাছাই করা এবং হত্যার জন্য সবচেয়ে বড়গুলির মূল্যায়ন থেকে বিরত রাখে না।

বলা হচ্ছে, যদি আপনার সমস্ত প্রচেষ্টা কেবলমাত্র মেশিনকে হাইবারনেট করতে পারে তা নিশ্চিত করার পরিষেবাতে থাকে, আরও অদলবদু তৈরি করা (ডিস্কে একটি ফাইল আকারে, প্রয়োজনে) সম্ভবত নেওয়া সহজতর পথ path


1

অবশেষে আমার প্রশ্নের উত্তর পেয়ে গেলাম। সিম্ম নামে একটি প্রোগ্রাম রয়েছে (উবুন্টু / দেবিয়ানতে apt install smem) যা আপনাকে স্ব্যাপ তালিকাবদ্ধ করতে এবং মেমরি পৃথকভাবে ব্যবহার করতে দেয়।

অদলবদলের তালিকা তৈরির কয়েকটি ভিন্ন উপায় এখানে পাওয়া যাবে: https://www.cyberciti.biz/faq/linux- which-process-is- using-swap/ ।

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