প্রশ্ন মেমরি বিনামূল্যে, কিন্তু এখনও swapping?


আমি নিশ্চিত যে এটি একটি বেশ মৌলিক প্রশ্ন, কিন্তু আমি আমার উবুন্টু হার্ডি সার্ভারের সাথে যা চলছে তা বোঝার চেষ্টা করছি একটি রেল-ভিত্তিক সাইট চালানো। মনে হচ্ছে আমার বিনামূল্যে মেমরি পাওয়া গেছে, এখনো সিস্টেমটি রিপোর্ট করছে যে এটি এখনও মেমরি swapping (যদি না আমি ভুলভাবে এই পড়া করছি?)।

এখানে free -m আউটপুট

              total       used       free     shared    buffers     cached
Mem:          1024        905        118          0         33        409
-/+ buffers/cache:        462        561
Swap:         2047         95       1952

কেউ কি আমাকে কিছু সম্ভাব্য কারণ ব্যাখ্যা করতে পারে যে এটি সর্বদা 95 এমবি স্ন্যাপ বজায় রাখা (এটি কম নয়)? লিনাক্সে মেমরি কীভাবে ব্যবহার করা হয় তা সম্পর্কে আমার কাছে ব্যাখ্যা করে যা কিছু আমি পরীক্ষা করতে পারব তার কিছু মাত্রার সন্ধান করছি।


7
2018-04-19 19:12


উত্স




উত্তর:


আমি টেড Ts'o দ্বারা শেখানো একটি ক্লাসে প্রশিক্ষণ ছিল, এবং আমি একই প্রশ্ন জিজ্ঞাসা যখন তিনি আমাকে ব্যাখ্যা উপায় এই মত ছিল ...

ডিফল্টরূপে, কার্নেল ফাইল সিস্টেম সিস্টেম মেটাডেটা মতো ক্যাশে ক্যাশে রাখার জন্য সর্বাধিক মেমরি সংরক্ষণ করে। এজন্য আপনার "ব্যবহৃত" কলাম 905MB দেখায়। যে মোট মেমরি যে "ব্যবহৃত", প্রোগ্রাম এবং ক্যাশে দ্বারা অর্থাত্। প্রকৃত মেমরির প্রকৃত পরিমাণ "মুক্ত" কলামের নীচে, "- / + বাফার / ক্যাশে" এর পাশাপাশি, অন্য কথায়, 561MB। যে প্রোগ্রাম দ্বারা ব্যবহারের জন্য উপলব্ধ পরিমাণ।

এখন, কার্নেলটি 462 এমবি ক্যাশের জন্য ব্যবহৃত হয়েছে, এটি 118 এমবি সম্পূর্ণরূপে পাওয়া যাচ্ছে। যখন একটি প্রোগ্রাম কার্নেলকে বলে, "আরে, আমার এখন 50 এমবি মেমরির দরকার আছে!", কার্নেল এই "মুক্ত" পুল থেকে মেমরি আঁকেন। এটি প্রায় 68 এমবি এ "ফ্রি" পুল তৈরি করে, যা সান্ত্বনার জন্য খুব ছোট, তাই যে মেমরি টানা হওয়ার পরে, ক্যাশে সংরক্ষিত স্টাফ পরিমাণ হ্রাস করা হয় এবং "মুক্ত" পুল ব্যাক আপ হয়ে যায়।

কিন্তু একটি প্রোগ্রাম একটি হগ হয় তবে কি হবে, এবং বলেছেন "আমার এখন 120 মেগাবাইট স্মৃতি দরকার!"। আপনার কাছে অনেক "ফ্রি" মেমরি নেই, তাই কার্নেল এটি প্রোগ্রামটিকে এমনকি সাময়িকভাবেও দিতে পারে না, তাই কার্নেল সোয়াপের মধ্যে খনন করে, প্রোগ্রামটি যা প্রয়োজন তা দিতে যথেষ্ট পরিমাণে বিনামূল্যে মেমরি বরাদ্দ করার জন্য যথেষ্ট পরিমাণে, তারপর পর্যাপ্ত ক্যাশে তথ্য "বিনামূল্যে" মেমরি একটি আরামদায়ক পর্যায়ে ফিরে যেতে অনুমতি দেওয়া হয়।

নিষ্পত্তি প্রক্রিয়ার মাধ্যমে, স্য্যাপের তথ্য অবিলম্বে সোয়াপ থেকে মুক্ত হয় না, যদিও এটি ক্যাশে তথ্য। সোয়াপ মেমরিটি ব্যবহার করার সময় একমাত্র সময় যদি মেটাডেটা (বা যা যা ক্যাশেড তথ্য) অনুরোধ করে সেটি স্বাপের ছোট অংশে সংরক্ষণ করা হয়। সুতরাং এটা রেখে কোন ক্ষতি নেই।

যদি এটি আপনাকে বিরক্ত করে, তবে আপনি এটি থেকে মুক্ত হতে 'সোয়াপফো' চালাতে পারেন তারপর 'সোয়াপন' চালাতে পারেন, তবে এটি কোনও ক্ষতি করতে পারে না।


10
2018-04-19 19:56



মহান ব্যাখ্যা! - Antoine Benkemoun


মেমরি ম্যানেজমেন্ট খুবই জটিল, ও'আরিলি দ্বারা লিনাক্স কার্নেল বোঝা প্রচুর বিবরণ দেয়।

ধারণাটি হল যে আপনি মেমরিটি স্য্যাপ করতে পারেন যা সম্ভবত কার্যকরভাবে আবার ব্যবহার করা হবে না। 0 থেকে 100 এর মধ্যে থাকা মানের সাথে সোয়াপটি কীভাবে ব্যবহার করা যায় তা আপনি নিয়ন্ত্রণ করতে পারেন /proc/sys/vm/swappiness। একটি উচ্চ সংখ্যা swapped করা সম্ভবত আরো মানে।

আপনি এই সঙ্গে জগাখিচুড়ি শুরু করার আগে, swap হয় কিনা তা দেখুন সক্রিয়ভাবে সি / তাই কলাম পর্যবেক্ষক দ্বারা ব্যবহার করা হচ্ছে vmstat 3। যদি তারা 0 থাকে, তবে সেখানে স্যাপিং চালু ছিল, তবে বর্তমানে কোনও সোয়াপিং চলছে না যেখানে আমি আপনাকে এটি ছেড়ে দেওয়ার সুপারিশ করছি :-) এক কারণ হল যে যে ক্যাশে থাকা ফাইলগুলি আপনাকে যা বলেছিল তা বিনামূল্যে হতে পারে স্মৃতি. নিরর্থক প্রক্রিয়া মেমরিটি স্য্যাপড করার অনুমতি দেবেন না এবং আপনি কিছু ফাইল ক্যাশে করার সুযোগ মিস করবেন যা ক্যাশে কাজে লাগবে।


9
2018-04-19 19:24



আপনি স্নিগ্ধতার জন্য 0 টি চেষ্টা করতে পারেন যদি আপনি মনে করেন যে আপনি যদি কাউকে হত্যা করতে পারেন তবে ফায়ারফক্সের জন্য অপেক্ষা করতে হবে সকালে যে স্মৃতিটি ফেরত পেতে :-) - Kyle Brandt♦
পাশাপাশি vm.vfs_cache_pressure আছে। আমি ব্যক্তিগতভাবে মনে করি লিনাক্সের ভিএম এখনও ভয়াবহ, BSD বা Solaris এর সাথে তুলনা করা। - poige


আপনার যদি 95MB প্রোগ্রাম ডেটা থাকে যা এক ঘন্টার মধ্যে অ্যাক্সেস না করে থাকে তবে আপনি যা করবেন তা:

1) 9 5 মেগাবাইট শারীরিক মেমরি ধারণ করে এমন ডেটা যা কখনও কখনও অ্যাক্সেস করা যাবে না।

2) 95 এমবি ডিস্কে সোয়াপ করুন এবং অতিরিক্ত 95 মেগাবাইট ফ্রি ফিজিকাল মেমরি রয়েছে।

সিস্টেম, sensibly, বিকল্প 2 পছন্দ।

আপনি অনেক সিস্টেমে এই ধরনের মেমরি একটি মাঝারি পরিমাণ পেতে ঝোঁক। একটি সাধারণ কারণ হল প্রোগ্রামগুলি যা স্টার্টআপের সময় মেমরি বরাদ্দ করে এবং তারপরে এমন অনুরোধগুলির জন্য অপেক্ষা করুন যা কখনই আসে না। অনেক লিনাক্স সিস্টেমে অর্ধ ডজন সার্ভার প্রোগ্রাম রয়েছে যা আসলে চলছে তবে আসলেই ব্যবহৃত হয় না।


3
2017-08-24 23:30