লিনাক্স: স্পষ্টভাবে কীভাবে সম্ভব সমস্ত আন-আনপপ করবেন?


59

আমি এমন কিছু চালু করেছি যা প্রচুর স্মৃতি নিয়েছিল এবং এখন সবকিছু অনেক পিছিয়ে। আমি অনুমান করি যে সমস্ত অ্যাপ্লিকেশনগুলির স্মৃতি মেমরি-নিবিড় প্রক্রিয়াটির জন্য কিছু জায়গা মুক্ত করার জন্য অদলবদল করতে চলে গেছে, এবং এখন অ্যাক্সেস করার সাথে সাথে সমস্ত কিছু ধীরে ধীরে র‍্যামে ফিরে আসবে।

অদলবদল থেকে র্যামে ফিরে স্পষ্টভাবে সমস্ত কিছু সরিয়ে দেওয়ার কোনও উপায় আছে কি? অথবা হতে পারে সবকিছু নয়, তবে কিছু নির্দিষ্ট ডেটা প্রক্রিয়া করে?

উত্তর:


59

আমি সাধারণত লিনাক্স মেমরি কন্ট্রোল অদলবদলগুলিতে ব্যবহার করা জিনিসগুলিতে যা ব্যবহার করা হয় সেগুলিতে অনুমতি দেওয়ার পরামর্শ দিই।

আমি ভাবতে পারি কেবলমাত্র অদলবদল বন্ধ করা, তারপরে আবার on

sudo swapoff -a
sudo swapon -a

এটি ধরে নিয়েছে যে অদলবদলে সমস্ত কিছু রাখতে আপনার পর্যাপ্ত অতিরিক্ত শারীরিক স্মৃতি রয়েছে ...


4
এটি কাজ করে, যদিও খুব ধীরে ধীরে :) ধন্যবাদ! তবে তবুও আমি বিশ্বাস করি এর চেয়েও দুর্দান্ত সমাধান আছে :)
কলিপ্টো

7
এই সমাধানটির সাথে যত্নশীল, এটি জোর করে অদলবদল থেকে সমস্ত কিছু নেবে ... যদি এটি শারীরিক স্মৃতিতে ফিট না করে তবে কার্নেলটি মারাত্মক OOM ঘাতকটিকে শুরু করবে। আমি কোনও দুর্দান্ত "সমস্ত কিছু র‍্যামে স্থানান্তরিত করার চেষ্টা সম্পর্কে জানি না, তবে সম্ভব না হলে কৃত্রিমভাবে ব্যর্থ" কমান্ড।
জুলিয়ানো

1
আমি চেষ্টা করে দেখেছি যে এটি খুব ধীরে ধীরে কাজ করে। সুতরাং ফ্রি র‌্যাম নিরীক্ষণ করা এবং swapoffমেমরি কম থাকলে নিহত করা সম্ভব: এক্ষেত্রে অদলবদল কার্যক্ষম থাকবে :)
কলিপ্টো

2
আমি নিশ্চিত না যে অদলবদল হত্যার ফলে অভিযানটি বন্ধ হয়ে যাবে। এটি কীভাবে বাস্তবায়িত হয় তা নির্ভর করে।
ডগলাস লিডার

2
মনে হচ্ছে swapoff কমান্ড "নতুন লেখকদের অদলবদল করতে দেয় না" এর মতো কিছু করে যখন অন্য কোনও চলমান প্রক্রিয়া (যা swap ব্যবহার করছিল) এখনও "রিলিজ সোয়াপ" করতে পারে। এটি এতো ধীর বলে মনে হচ্ছে। অন্য কোনও ব্যক্তি যেমন বলেছেন (আমি উবুন্টু বায়োনিক ব্যবহার করছি) এটি ওওএম এর কারণ হতে পারে বলে মনে হয় না - সম্ভবত "অতিরিক্ত (বা বিদ্যমান) প্রক্রিয়াগুলি নতুন মেমরি ব্যবহার করা শুরু করে" (যেমন আসল ওওএম এর) তখনই এটি হতে পারে। সুতরাং সমস্ত swapoff / swapon সব মিলিয়ে মনে হচ্ছে এটি দুর্দান্ত সমাধান। সবিনয় / অবিচলিত। এটি ধরে নিয়েছে যে আপনি প্রক্রিয়াগুলি (বা চলমানগুলিতে খরচ বাড়িয়ে) ব্যবহার করে আরও মেমরি শুরু করেন না।
রোল ভ্যান ডি পাড়

12

আপনি 0 থেকে 100 এর মধ্যে কিছু সংখ্যার প্রতিধ্বনিটি টিউন করতে পারেন /proc/sys/vm/swappiness

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

ডিফল্ট মান 60।


13
সরাসরি / proc / sys ব্যবহার করবেন না, sysctlপরিবর্তে কমান্ডটি ব্যবহার করুন। এই ক্ষেত্রে, এটি হয় sysctl vm.swappiness=x
জুলিয়ানো

7
আমি মনে করি না যে শূন্যেরও অদলবদল ইতিমধ্যে অদলবদল করা পৃষ্ঠাগুলিকে স্পষ্টভাবে মূল স্মৃতিতে আনতে বাধ্য করবে?
ডগলাস লিডার

1
@ ডগলাস ঠিক আছে। vm.swappiness মূলত মেমরির চাহিদা থাকার সময় জিনিসগুলি অদলবদল করা বা ক্যাশে এবং বাফারগুলির পরিমাণ হ্রাস করার সিদ্ধান্তটি নিয়ন্ত্রণ করবে।
জুলিয়ানো

@ জুলিয়ানো, কেন / প্রো / সিএস ব্যবহার করা উচিত নয়?
জেমস

@ জেমস কারণ / proc / sys হ'ল নিম্ন স্তরের ইন্টারফেস যা কার্নেল কনফিগারেশন পরিবর্তন করতে এবং জিজ্ঞাসা করতে ব্যবহৃত হয় (এটি "বাস্তবায়ন বিশদ")। লিনাক্স sysctlব্যবহারকারীর ইন্টারঅ্যাকশনের জন্য উচ্চ-স্তরের কমান্ড সরবরাহ করে। শেষ ফলাফলটি একই, তবে সাধারণত ব্যবহারকারীদের সরাসরি ইন্টারঅ্যাক্ট করার জন্য উচ্চ-স্তরের ইন্টারফেসগুলি পছন্দ করা হয়। কিন্ডা কেবল কী (উচ্চতর স্তর) বাঁকানোর পরিবর্তে ইগনিশন তারগুলি (নিম্ন স্তরের) দ্বারা সংক্ষিপ্ত-সার্কিট করে ইঞ্জিন শুরু করার মতো।
জুলিয়ানো

5

লিনাক্স মেমরি পরিচালনা করার জন্য একটি দুর্দান্ত কাজ করে এবং আপনার উচিত হয় না। Vm.swappiness সেটিং (পূর্বে উল্লিখিত) এর পথে আসে না। অন্য যে কোন উপায়ে কাজ করার কারণে আপনার কাছে অদ্ভুত সমস্যাগুলির সম্ভাবনা বেশি।

এমন স্মৃতি ক্ষুধার্ত ছিল এমন কী আপনি চালু করলেন? এটি সুর করা যাবে? এটির নিজস্ব মেমরি সীমা নির্দেশিকা না থাকলে আপনিও ইউলিমিটের দিকে নজর দিতে পারেন।


আমার ক্ষেত্রে ছিল convert -density 200 file.pdf jpegs/file.jpg। কোনও কারণে এটি প্রচুর স্মৃতি ব্যবহার করে তবে আপনি ঠিক বলেছেন: এটি টিউন করা যায়। যাই হোক, পরিস্থিতি কোনো অ্যাপ্লিকেশন :) সম্ভব
kolypto

1
আমি এই উত্তরের সাথে একমত - আপনার সম্ভবত মেশিনে স্বাভাবিক ক্রিয়াকলাপগুলি ছেড়ে যাওয়া উচিত যা আসলে প্রয়োজন in
ডগলাস লিডার

convert-limitএর স্মৃতি বনাম ডিস্কের ব্যবহার নিয়ন্ত্রণ করার যুক্তি রয়েছে এবং এগুলি আপনার উচিত। সেটিং -limit memory 512MBবা অনুরূপ ভাল হবে। স্পষ্টত MAGICK_TEMPORARY_PATH উল্লেখ করা এবং আপনার আদেশটি শেষ হওয়ার পরে এটি পরিষ্কার করা সম্ভবত ভাল probably
অস্পষ্টতা 4:38

3

আপনার সমস্ত অ্যাপ্লিকেশনের জন্য যদি আপনার কাছে মেমরি উপলব্ধ থাকে তবে অদলবদল 0 তে সেট করা ঠিক আছে যাতে জিনিসগুলি বদলাবে না। উদাহরণস্বরূপ, qemu-kvm ভিএমএম কে সরিয়ে ফেলার জন্য একটি বড় লক্ষ্য, কারণ বেশিরভাগ সময় এটি নিষ্ক্রিয় থাকে। আমি দেখেছি যে একটি কেমু-কেভিএম মেমরির 80% মেমরি অদলবদলে লেখা আছে। কিউমু-কেভিএমে চলমান ভিএমগুলি অদম্য প্রতিক্রিয়াশীল হয়ে উঠবে কারণ তাদের অদলবদল শেষ হয়েছে (যদিও অতিথির ধারণা নেই যে এটি ঘটছে)। অতিথি ভিএম মনে করবেন এটি সবচেয়ে দুর্দান্তভাবে সম্পাদন করছে, যদিও সত্য সত্যই এটি ভয়ঙ্করভাবে টানছে। আমি যখন ভিএমগুলিকে "জাগ্রত" করি এবং জিনিসগুলি শুরু করি, তখন এটি যথেষ্ট দ্রুত মেমরি এবং ডিস্ক সহ এন্টারপ্রাইজ গ্রেড হার্ডওয়্যারেও লোড গড়কে 30 এর বেশি করতে পারে। আমার ধারণা, এটি বাক্সের বাইরের কিউমু-কেভিএম ডিজাইনে ব্যর্থ।

আশা করি এটি কাউকে সাহায্য করবে।


আমি ভীত এটি পুরোপুরি সঠিক না।
মার্চ ২৩7777

2

আমি কার্নেলের ভিএম সাবসিস্টেমটি চিন্তা-ভাবনা করার চেষ্টা করার বিরুদ্ধে পরামর্শ দেব। এটি অসম্ভব যে সম্ভাবনা নেই যে আপনার কাছে আসলে এটির চেয়ে আরও ভাল সিদ্ধান্ত নেওয়ার জন্য পর্যাপ্ত তথ্য রয়েছে। এবং যদি আপনি কোনওভাবে এটি অন্যায় কাজ করতে বাধ্য করেন তবে আপনি জিনিসগুলি আরও ধীরে ধীরে তৈরি করবেন।


9
কিছু ক্ষেত্রে আছে যেখানে আমি ওপি যা চাই তা করতে চাই। যদি আমি দুর্ঘটনাক্রমে কোনও প্রক্রিয়া দাঙ্গা চালাতে এবং আমার সমস্ত র‌্যাম + অদলবদল নিতে দিই, তবে আমি যখনই অ্যাপ্লিকেশনগুলিতে স্যুপের বাইরে চলে আসি তখন কেবল 15 সেকেন্ড অপেক্ষা করতে পারি বা এটিকে জোর করে এবং সবকিছু যথারীতি দ্রুত চালাতে পারি।
অ্যালেক্স

1

যদি আপনি সেই সিস্টেমটি পুনরায় বুট করতে সক্ষম হন তবে এটি করা উচিত (এবং অন্য কোনও সমাধানের চেষ্টা করার চেয়ে অনেক কম সময় নিতে পারে)।


1

এই প্রশ্ন থেকে আমার কিছু উত্তর অনুলিপি করতে ।

যাতে আপনি জানতে পারবেন কীভাবে অদলবদলের টিউনযোগ্য কাজ করে। ভিএম সাবসিস্টেমকে পৃষ্ঠাগুলি অদলবদল করতে সন্ধান করতে বলার মাধ্যমে কাজ করে যখন পৃষ্ঠার টেবিলগুলি প্রক্রিয়াকরণের জন্য মেমরির%% ম্যাপ করা হয় + অদলবদল মান> 100. সুতরাং 60 এর একটি সেটিং সিস্টেমকে প্রক্রিয়া পৃষ্ঠা সারণী থেকে বাসি পৃষ্ঠাগুলি সজ্জিত করা শুরু করবে যখন এটি আপনার সিস্টেমের মেমরির 40% এর বেশি ব্যবহার করে। আপনি যদি ক্যাশ ব্যয় করে আপনার প্রোগ্রামগুলিকে আরও মেমরি ব্যবহার করার অনুমতি দিতে চান তবে আপনি অদলবদল মানটি কম করতে চাইবেন।


আমি মনে করি না প্রোগ্রাম মেমরি বনাম ক্যাশে এখানে সমস্যা - আমি মনে করি এটি অ্যাপ্লিকেশন মেমরি বনাম অব্যবহৃত মেমরি। এবং আমি মনে করি না অদলবদল এর প্রভাব ফেলবে।
ডগলাস লিডার

0

প্রক্রিয়া এখনও চলছে? একটি টার্মিনাল খুলুন এবং দেখুন যে আপনি যে প্রক্রিয়া (গুলি) চালু করেছিলেন তা স্পট করতে পারেন কিনা। (পিএক্স অক্স | গ্রেপ প্রসেসনামটি এটি কিছুটা সহজ করে তুলতে পারে) তারা এখনও চালু থাকলে তাদের মেরে ফেলতে কিল -9 পিআইডি ব্যবহার করুন। আপনি যা হত্যা করেন সে সম্পর্কে সাবধান হন। প্রক্রিয়াটি কী তা যদি আপনি না জানেন তবে এটি হত্যা করবেন না! এছাড়াও, ফ্রি-এম এর আউটপুট পোস্ট করুন যাতে আমরা দেখতে পারি যে আপনি আসলে এখনও প্রচুর অদলবদল করছেন।

যদি জিনিসগুলি এখনও ধীরে চলতে থাকে তবে আপনি যা চালু করেছিলেন তা এখনও চলতে পারে। আপনি কী করছেন বা আপনি প্রান্তে বাস করতে পছন্দ করেন না যদি না আপনি সত্যিই জানেন না তবে আমি কখনই অদলবদলটি বন্ধ করব না। =)


0

আমি বিশ্বাস করি যে লিনাক্স আনসপআপ ডেটা ডিস্ক থেকে মেমরির দিকে চাপিয়ে দেওয়ার কোনও সত্যই ভাল উপায় নেই। যখন swapoff / swapon একটি কার্যক্ষম সমাধান, তবে এটি নোংরা এবং সহজেই আপনার সিস্টেমটিকে অস্থিতিশীল করে তুলতে পারে। ক্ষেত্রে যখন ফ্রি মেমরির চেয়ে অদলবদলে আপনার বেশি ডেটা থাকে তখন কোনও কার্যকরী নীতি যা কোনও লিনাক্স ডেটা ব্যবহার করে কোন ডেটা টুকরো মেমরিতে স্থানান্তরিত করতে পারে এবং কোন টুকরা ডিস্কে রাখে তা নির্ধারণের জন্য কল্পনা করা শক্ত হবে।

সংক্ষিপ্তসার: লিনাক্সটি ধীরে ধীরে স্বাভাবিকভাবে তার কর্মক্ষমতা পুনরুদ্ধার করতে দিন। এর ভিএম সাবসিস্টেমটি এমনভাবে সংগঠিত হয়েছে যে এটি চেষ্টা করে এবং ক্রমাগত কিছু আদর্শ ভারসাম্য স্থিতিতে চলে যায়।


-2

বাফার ক্যাশে খালি করা হচ্ছে

আপনি যদি তাদের কখনই খালি করতে চান আপনি এই শৃঙ্খলাবদ্ধ কমান্ড ব্যবহার করতে পারেন।

$ free && sync && echo 3 > /proc/sys/vm/drop_caches && free

             total       used       free     shared    buffers     cached
Mem:       1018916     980832      38084          0      46924     355764
-/+ buffers/cache:     578144     440772
Swap:      2064376        128    2064248
             total       used       free     shared    buffers     cached
Mem:       1018916     685008     333908          0        224     108252
-/+ buffers/cache:     576532     442384
Swap:      2064376        128    2064248

উপরের কমান্ডের সংখ্যাসূচক যুক্তি পরিবর্তন করে আপনি লিনাক্স কার্নেলকে ক্যাশেড আইটেমের বিভিন্ন দিক বাদ দিতে সিগন্যাল করতে পারেন।

দ্রষ্টব্য: অপ্রয়োজনীয় জিনিসগুলির মেমরি পরিষ্কার করুন (কার্নেল ২.6.১6 বা আরও নতুন)। সর্বদা কার্যকর জিনিসগুলি ডিস্কে ফেলে দেওয়ার জন্য প্রথমে সিঙ্ক চালানো নিশ্চিত করুন !!!

  • পৃষ্ঠাগুলি মুক্ত করতে:

    $ echo 1 > /proc/sys/vm/drop_caches
    
  • ডেন্ট্রি এবং ইনোডগুলি মুক্ত করতে:

    $ echo 2 > /proc/sys/vm/drop_caches
    
  • পৃষ্ঠাগুলি, ডেন্ট্রি এবং ইনোডগুলি বিনামূল্যে করতে:

    $ echo 3 > /proc/sys/vm/drop_caches
    

উপরেরটি মূল হিসাবে চালানো বোঝায়। যদি আপনি এগুলি সুডো ব্যবহার করে করার চেষ্টা করছেন তবে আপনার সিনট্যাক্সটি এই জাতীয় কিছুতে সামান্য পরিবর্তন করতে হবে:

$ sudo sh -c 'echo 1 >/proc/sys/vm/drop_caches'
$ sudo sh -c 'echo 2 >/proc/sys/vm/drop_caches'
$ sudo sh -c 'echo 3 >/proc/sys/vm/drop_caches'
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.