কয়েক বছর ধরে, আমার অপারেটিং সিস্টেমের ওওএম কিলারটি সঠিকভাবে কাজ করে না এবং হিমায়িত সিস্টেমের দিকে পরিচালিত করে।
যখন মেমরির ব্যবহার খুব বেশি হয় তখন পুরো সিস্টেমটি স্মৃতি মুক্ত করতে প্রক্রিয়াগুলি হত্যার পরিবর্তে ঘন্টার বা কয়েক দিনের জন্য "হিমায়িত" (আসলে: অত্যন্ত ধীর হয়ে যাওয়া ) হয়ে থাকে ।
আমি সর্বাধিক যা রেকর্ড করেছি তা পুনরায় সেট করার জন্য নিজেকে পদত্যাগ করার 7 দিন আগে।
যখন ওওএম পৌঁছতে চলেছে , অযৌক্তিক হওয়ার আগে আইওয়েট খুব বেশি (~ 70%)।
সরঞ্জামটি: দেখিয়েছে যে প্রতিটি প্রোগ্রামগুলি আমার হার্ড ড্রাইভ থেকে খুব উচ্চতর থ্রুপুট (প্রতি দশক এমবি / সেকেন্ড) পড়ছে।
এই প্রোগ্রামগুলি কি পড়ছে?iotop
- ডিরেক্টরি হায়ারার্কি?
- এক্সিকিউটেবল কোড নিজেই?
আমি ঠিক এখন না।
[সম্পাদিত] আমি এই বার্তাটি লিখেছিলাম (2017 সালে) আমি একটি আপডোডেট আর্কলিনাক্স (4.9.27-1-lts) ব্যবহার করছিলাম তবে এর আগে কয়েক বছর ধরে সমস্যাটি ইতিমধ্যে অনুভব করেছি।
বিভিন্ন লিনাক্স ডিস্ট্রিবিউশন এবং বিভিন্ন হার্ডওয়্যার কনফিগারেশন সহ আমি একই সমস্যাটি অনুভব করেছি।
বর্তমানে (2019), আমি একটি আপডোডেট ডেবিয়ান 9.6 (4.9.0) ব্যবহার করছি আমার কাছে 16 জিবি দৈহিক র্যাম রয়েছে, একটি এসএসডি যার উপরে আমার ওএস ইনস্টল করা আছে, এবং কোনও অদলবদল নয় ।
আমার যে পরিমাণ র্যাম রয়েছে তার কারণে আমি কোনও অদলবদল পার্টিশন সক্ষম করতে চাই না, যেহেতু এটি কেবলমাত্র ইস্যুটির অনুমোদনে বিলম্বিত করবে।
এছাড়াও, এসএসডিগুলি প্রায়শই অদলবদল করে ডিস্কের জীবনকাল হ্রাস করতে পারে।
যাইহোক, আমি ইতিমধ্যে অদলবদল বিভাজন সহ এবং এর সাথে চেষ্টা করেছি, এটি কেবলমাত্র সমস্যার আধিক্যটি বিলম্বিত করে প্রমাণিত করেছে, তবে সমাধান হয়ে উঠছে না।
আমার কাছে এই সমস্যাটি ঘটেছিল যে লিনাক্স ক্যাশেগুলি থেকে প্রয়োজনীয় ডেটা ফেলে দেয় যা হিমায়িত সিস্টেমের দিকে নিয়ে যায় কারণ এটি হার্ড ড্রাইভ থেকে প্রতিবারই পড়তে হয়।
আমি এমনকি আশ্চর্যও হয়েছি যদি লিনাক্স চলমান প্রোগ্রামগুলির এক্সিকিউটেবল কোড পৃষ্ঠাগুলি বাদ না দেয়, যা ব্যাখ্যা করবে যে প্রোগ্রামগুলি সাধারণত যেগুলি প্রচুর ডেটা পড়ে না, এই পরিস্থিতিতে এইভাবে আচরণ করে।
আমি এই সমস্যাটি সমাধানের আশায় বেশ কয়েকটি বিষয় চেষ্টা করেছি।
একটিতে সেট /proc/sys/vm/min_free_kbytes
করতে হবে 1000000
(1 জিবি)।
যেহেতু এই 1 জিবিটি নিখরচায় থাকা উচিত, আমি ভেবেছিলাম গুরুত্বপূর্ণ ডেটা ক্যাশে করার জন্য এই মেমরিটি লিনাক্স দ্বারা সংরক্ষণ করা হবে।
তবে এটি কাজ করেনি।
এছাড়াও, আমি যুক্ত করতে দরকারী মনে করি যে এটি তাত্ত্বিকভাবে দুর্দান্ত লাগলেও, ভার্চুয়াল মেমরির আকারকে শারীরিক মেমরির আকারের মধ্যে সীমাবদ্ধ করে , আমার পরিস্থিতিতে প্রযুক্তিগতভাবে শালীনভাবে সম্ভব নয় বলে সংজ্ঞা /proc/sys/vm/overcommit_memory
দিয়ে 2
, কারণ অ্যাপ্লিকেশনগুলির ধরণের যেটি আমি ব্যবহার করি, তাদের কিছু কারণে কার্যকরভাবে ব্যবহার করার চেয়ে আরও ভার্চুয়াল মেমরির প্রয়োজন হয়।
ফাইল অনুসারে /proc/meminfo
, Commited_AS
মানটি আমার সিস্টেমে দৈহিক র্যামের দ্বিগুণের চেয়ে বেশি (16 গিগাবাইট, Commited_AS প্রায়শই> 32 গিগাবাইট) থাকে।
আমি এই /proc/sys/vm/overcommit_memory
ডিফল্ট মানটির সাথে এই সমস্যাটি অনুভব করেছি : 0
এবং কিছুক্ষণের জন্য আমি এটি সংজ্ঞায়িত 1
করেছি:, কারণ আমি অন্যায় আচরণ করার চেয়ে ওওম ঘাতক দ্বারা নিহত হওয়ার প্রোগ্রামগুলিকে পছন্দ করেছি কারণ তারা malloc
কখন ফিরে আসার মানগুলি পরীক্ষা করে না বরাদ্দ অস্বীকার করা হয়।
আমি যখন আইআরসি- তে এই সমস্যাটি নিয়ে কথা বলছিলাম, তখন আমি অন্যান্য লিনাক্স ব্যবহারকারীদের সাথে দেখা করেছি যারা এই একই সমস্যাটি अनुभव করেছেন, তাই আমি অনুমান করি যে অনেক ব্যবহারকারী এই বিষয়ে উদ্বিগ্ন।
আমার কাছে এটি গ্রহণযোগ্য নয় কারণ উইন্ডোজ উচ্চ মেমরির ব্যবহারের সাথে আরও ভাল আচরণ করে।
আপনার যদি আরও তথ্যের প্রয়োজন হয় তবে একটি পরামর্শ দিন, দয়া করে আমাকে বলুন।
ডকুমেন্টেশন:
https://en.wikedia.org/wiki/Trasshing_%28computer_science%29
https://en.wikedia.org/wiki/Memory_overcommitment
https://www.kernel.org/doc/Docamentation/sysctl/vm txt
https://www.kernel.org/doc/Docamentation/vm/overcommit- অ্যাকাউন্টিং
https://lwn.net/Articles/317814/
তারা এটি সম্পর্কে কথা বলে:
লিনাক্স-অফ-মেমরি (ওওএম) ঘাতক কেন স্বয়ংক্রিয়ভাবে চালিত হয় না, তবে সিসেরকি-কি-তে কাজ করে?
OOM- ঘাতক কেন কখনও কখনও সংস্থান হগগুলিকে হত্যা করতে ব্যর্থ হয়?
ওওএম হত্যাকারীর প্রিললোড
করা জোর করে অদলবদল করে ওওএম -কিলার ট্রিগার করা সম্ভব?
কীভাবে ওওএম পরিস্থিতিটির কাছাকাছি উচ্চ বিলম্বিততা এড়ানো যায়?
https://lwn.net/Articles/104179/
https://bbs.archlinux.org/viewtopic.php?id=233843
min_free_kbytes
প্রাসঙ্গিক নয়, এটি ক্যাশেড পৃষ্ঠাগুলির জন্য কোনও রিজার্ভ নয়। VM sysctls এর AFAICT কেউ ক্যাশে পৃষ্ঠাগুলির জন্য কোনো স্মৃতি সংরক্ষণ করার অনুমতি দেয় বিশেষভাবে, অর্থাত MAP_ANONYMOUS বরাদ্দ সীমিত :(।