মাভেরিক্স এবং জোসেমাইটের "মেমরির চাপ" কী স্কেল বা পরিমাপ করে?


57

Mavericks '(এবং এছাড়াও Yosemite এর) কার্যকলাপ মনিটর একটি নতুন চিত্র, দেখায় মেমরি চাপ । দুঃখের বিষয় হল, এটির সহায়তা পাঠটি কেবল অস্পষ্টভাবে ব্যাখ্যা করে যে এটি ঠিক কীভাবে পদক্ষেপ নেয়। কিভাবে মেমরি চাপ গণনা করা হয়?

Mavericks Activity Monitor - memory

ছবি ক্রেডিট যেতে এই উত্তর ম্যাভেরিক্সের সেরা নতুন বৈশিষ্ট্য সম্পর্কে একটি পোল প্রশ্ন থেকে।

উত্তর:


51

মেমরি চাপ মেমরি মুক্ত শতাংশ একটি সহজ গেজ নয় এবং 0 থেকে 100% গ্রাফ বলে মনে হয়। দ্য sysctl মান vm.memory_pressure নির্ণিত এবং সক্রিয় পৃষ্ঠাগুলিতে বিনামূল্যে এবং নিষ্ক্রিয় মেমরি পৃষ্ঠাগুলির মধ্যে অনুপাতকে ট্র্যাক করে এমন একটি গণিত লক্ষ্যের সাথে গণনা করা হয়। পরম কাউন্টার ব্যবহার করে দেখা হয় vm_stat ভার্চুয়াল মেমরির বিস্তারিত বরাদ্দ পরিদর্শন করার জন্য কমান্ড লাইন সরঞ্জাম। জনাথন লেভিন চমৎকার ডকুমেন্টেশন আছে http://newosxbook.com/articles/MemoryPressure.html ম্যাকোস এবং আইওএস ভার্চুয়াল মেমরি উভয় এবং তারা কীভাবে মেমরি চাপ গণনা করে এবং চাপ সূচকগুলি যখন উচ্চ হয় তখন গৃহীত পদক্ষেপগুলিকে আচ্ছাদন করে।

প্রাসঙ্গিক ভার্চুয়াল মেমরি (ভিএম) যে গণনা ফিড vm.memory_pressure আছেন:

  • vm.page_free_count - বিনামূল্যে পেজ একটি পরম গণনা
  • vm.vm_page_free_target - একটি "চাপ মুক্ত" পরিস্থিতি জন্য একটি গণনা লক্ষ্য বা লক্ষ্য
  • vm.page_free_wanted - ভিএম সিস্টেম বর্তমান গণনা চাপ সূচক কমানো মুক্ত করতে চান কি

তাই - যদি আপনি কার্যকলাপ মনিটরের সাথে আপনার মেমরি চাপ ট্র্যাক করছেন (অথবা আমার sysctl মানগুলি প্রোগ্রাম্যাটিক্যালি বা কম্যান্ড লাইন শেলে দেখেন) তাহলে আপনাকে এই চারটি মানগুলি দেখতে ভাল লাগবে:

sysctl -a vm | egrep "page_free|pressure"

একটি নতুন কমান্ড আছে memory_pressure মেভারিক্সের সাথে চালু করা হয়েছে এবং যখন আমি এটি একটি সতর্কবার্তা অবস্থায় মেমরি সাব-সিস্টেম চালানোর জন্য চালাচ্ছি - আপনি একটি হলুদ পরিসরে মেমরি চাপ বৃদ্ধি দেখতে পারেন।

activity monitor results of <code>sudo memory_pressure -l warn</code>

হাতিয়ারটি 4 গিগাবাইটের মেমরি বরাদ্দ করা হয়, কারণ চাপের গ্রাফটি এই অবস্থায় স্থিতিশীলভাবে বৃদ্ধি পায় যেখানে দৃশ্যত "সতর্কতা" স্তরটি ধরা হয়: sudo memory_pressure -l warn। আপনি দেখতে পারেন, চাপের আগে সিস্টেমটি 5.9 গিগাবাইট ব্যবহার করে এবং 7.99 গিগাবাইট পর্যন্ত ব্যবহার করা হয় যা সোয়াপিং এবং সংকোচনের কারণে যোগ করার প্রয়োজনও হয় না।

কিভাবে দেখার পরে vm_stat 15 কোন পরিমাপযোগ্য পৃষ্ঠাতে সতর্কতা ফলাফল দেখানো হয়নি, আমি হাতিয়ারটি (কন্ট্রোল-সি) ছেড়ে দিয়েছি এবং তারপরে মেমরি চাপকে সমালোচনামূলক করার জন্য সরঞ্জামটিকে পুনরায় চালিত করেছি: sudo memory_pressure -l critical

পেজিং শুরু হওয়ার কয়েক মিনিটেরও বেশি সময় ধরে আমি এই রানটি চালাতে দিতাম না এবং একবার বললাম যে ডিস্কে 5 গিগাবাইট RAM থাকে, আমি আমার ড্রাইভটি পূরণ করতে এবং সরঞ্জামটি ছেড়ে দিতে চাইনি।

activity monitor results of <code>sudo memory_pressure -l critical</code>

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


সুস্পষ্ট করার জন্য ধন্যবাদ. উপরের কমান্ডটি স্ক্রিন শটের ভার্চুয়াল মেমরি, ফাইল ক্যাশ এবং অ্যাপ মেমরি প্যারামিটার গণনা করে এমন একটি কমান্ড (বা কমান্ডের সেট) আছে কিনা তা আমি জানতে চাই।
Muhammad Hassan Nasr

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

30

কিছুটা স্পষ্ট করে তুলতে এবং এটি আরো সঠিক অনুমান করতে: মেমরি চাপটি মেমরি_স্ট্যাটাস নামে পরিচিত ডেডিকেটেড থ্রেড (xnu) দ্বারা ব্যবহৃত একটি মেট্রিক (পূর্বে জেটসাম নামে পরিচিত)। এই থ্রেডটি উপলব্ধ RAM- র কম হওয়ার পরে সনাক্ত করার জন্য দায়ী - যা OS X- এ সোয়াপিংয়ের জন্য জোর দেয় এবং iOS তে সর্বোচ্চ মেমরি ভোজন অ্যাপ্লিকেশনটি হত্যা করে (যেহেতু সেখানে কোনও সোয়াপ নেই)। ম্যাভারিক্সে, দুটি অপারেটিং সিস্টেম একসঙ্গে ঘনিষ্ঠ। মেমরিস্ট্যাটাস একটি কার্নেল নোট ইস্যু করে, যা Obj-C রানটাইম অবশেষে একটি AppDidReceiveLowMemoryWarning তে অনুবাদ করে। অ্যাপ্লিকেশনগুলি অব্যবহৃত বা বহিরাগত মেমরি পরিস্কার করা অনুমিত হয় (উদাহরণস্বরূপ, ক্যাশে)। ডারউইনের libC এছাড়াও স্বয়ংক্রিয়ভাবে মেমরি purges।

একটি নির্দিষ্ট (যদিও নথিভুক্ত) সিস্টেম কল, vm_pressure_monitor (# 296, যদি আমি সঠিকভাবে মনে রাখি), এটি একটি ক্লায়েন্টকে চাপের ইভেন্টগুলিতে শোনার অনুমতি দেয় এবং কতগুলি প্রকৃত পৃষ্ঠা পুনঃ দাবি করা যায় তা দেখুন।

আপনি OS X- এর জন্য ডাউনলোড এক্সপ্লোরার ব্যবহার করে মাভারিক্সের চাপ ইভেন্টগুলি দেখতে পারেন - ডাউনলোডযোগ্য http://newosxbook.com/index.php?page=downloads । যে উভয় আপনি চাপ "গেজ", সেইসাথে চাপ ঘটনা দেখায়।


যে ওয়েবসাইট একটি বিস্তারিত নিবন্ধ আছে - newosxbook.com/articles/MemoryPressure.html - ওএস এক্স এবং আইওএস মেমরি চাপ এবং হ্যান্ডলিং বিস্তারিত
user61711

Mavericks এবং iOS কার্নেল মধ্যে মিল এবং পার্থক্য উপর দুর্দান্ত বিবরণ। প্রসেস এক্সপ্লোরার লিঙ্ক জন্য ধন্যবাদ।
bmike

14

মেমরি চাপ দুটি কাউন্টার দ্বারা সংজ্ঞায়িত করা হয় অভ্যন্তরীণভাবে রাখে মা:

  • vm_page_free_count: র্যামের কত পৃষ্ঠা বর্তমানে বিনামূল্যে
  • vm_page_free_target: কমপক্ষে, কতগুলি RAM র্যামটি সর্বোত্তমভাবে মুক্ত হওয়া উচিত।

আপনি sysctl ব্যবহার করে এই সহজে দেখতে পারেন:

morpheus@Zephyr (~/Documents) % sysctl -a vm | grep page_free
vm.vm_page_free_target: 2000
vm.page_free_wanted: 0
vm.page_free_count: 73243

যদি মুক্ত পৃষ্ঠাগুলির পরিমাণ লক্ষ্য পরিমাণের নিচে পড়ে তবে - আমাদের একটি চাপের পরিস্থিতি রয়েছে।


থেকে http://newosxbook.com/articles/MemoryPressure.html

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