ক্রোন স্ক্রিপ্ট তৈরি করা কি খারাপ ধারণা যা প্রতি ঘন্টায় অদলবদলকে খালি করে দেয়?


26

কয়েক বছর ধরে আমার ছোট উবুন্টু কনফিগারেশনগুলির সাথে আমার একই সমস্যা হচ্ছে: ব্যবহৃত অদলবদলের স্থান সময়ের সাথে বাড়তে থাকে। আমি এই ধারণাটি পেয়েছি যে এটি মূলত কারণ বরাদ্দ হওয়া মেমরিটি কখনই র‍্যামের কাছে ফিরে আসে না যদিও তার পক্ষে পর্যাপ্ত জায়গা থাকা সত্ত্বেও অদলবদলের অক্ষম করার মতো ব্যবহারকারীর অ্যাকশনের ক্ষেত্রে।

cronএটিকে স্বয়ংক্রিয় করার জন্য আমি একটি শর্ট কমান্ড দিয়েছি এবং আমার ভাল ফলাফল রয়েছে:

#! /bin/sh

echo "* */1 * * * root swapoff -a && swapon -a" >> /etc/crontab

তবে এটি এই সমস্যার বাস্তব সমাধানের চেয়ে কৌশল বেশি বলে, আমি এটির খারাপ ধারণা হতে পারে এমন সম্ভাব্য কারণগুলি নিয়ে ভাবছি বা এই স্ক্রিপ্টটিকে আরও কিছুটা চালাক করার জন্য কীভাবে উন্নতি করতে পারি?


29
আমার অজ্ঞতা ক্ষমা করে দিন, তবে সময়টি এবং বরাদ্দকৃত স্মৃতিটির র‌্যামের ফাঁকা ফাঁক দিয়ে স্পেস সোয়াপ্প বাড়ার কথা বলতে কী বোঝাতে চাইছেন ? সাধারণত আপনি সিস্টেমে অদলবদল হিসাবে কিছু জায়গা বরাদ্দ করেন এবং এর থেকে আর কখনও শুনবেন না। অদলবদল আসলে কতটা নেওয়া হয়েছে কে জানে? সমস্যা কি?
মিষ্টান্ন

5
আপনি এমনকি এটি করতে চান কেন? আপনি কেন কিছু স্বাপ ব্যবহার খারাপ জিনিস বলে মনে করেন? আমরা কতটা অদলবদলের কথা বলছি?
মার্সেলেম

25
আমি একপ্রকার হতবাক। আপনি একটি "সমস্যা" সম্পর্কে কথা বলতে থাকেন তবে আসলে কোনও ধরণের কোনও নেতিবাচক প্রভাব বর্ণনা করেন না। আপনি এটিকে কেন একটি সমস্যা মনে করেন?
ডেভিড শোয়ার্টজ

17
যদি কিছু বদলে যায় এবং সেখানে থেকে যায়, কারণ কিছুই এটি ব্যবহার করছে না। যদি কিছুই এটি ব্যবহার করা হয়, এটা র্যাম এমন কিছু বিষয় যা জন্য ব্যবহার করা যেতে দিন ভালো হয় অ্যাক্সেস, ক্যাশে মত, swap 'র ডাটা ফিরে থাকে।
হবস

12
কীভাবে এটি কেবল অদলবদল ছাড়ার চেয়ে ভাল?
ব্যবহারকারী 253751

উত্তর:


51

এটি এর মতো ব্যবহার করা: হ্যাঁ, খারাপ। আপনার অদলবদল বন্ধ করার আগে পর্যাপ্ত মেমরি পাওয়া যায় কি না তা সত্যই আপনার পরীক্ষা করা উচিত। আরও ভাল সংস্করণের জন্য /ubuntu//a/90399/15811 দেখুন ।

এছাড়াও: আপনি কি এ সম্পর্কে নিশ্চিত? অদলবদ বরাদ্দ হওয়ার অর্থ স্বাপটি ব্যবহৃত হচ্ছে না। কমান্ড vmstat, কলামগুলি si(অদলবদল) এবং so(স্যুপ আউট)। যদি এটি 0 থাকে তবে আপনি আরও একটি সমস্যা পেয়েছেন। আমার অভিজ্ঞতার মধ্যে অদলবদল খুব কমই ব্যবহার করা হয়েছে, এবং আপনি সম্ভবত এটি খালি করে না ভেবে এটি ব্যবহার করছেন না তবে খালি করার কিছুই নেই।


3
কিসের অপেক্ষা? যদি সোয়াফফের সাফল্যের জন্য পর্যাপ্ত স্মৃতি না থাকে তবে প্রথমে ওওএম ঘাতকের হাতে সোয়াপফকে মেরে ফেলা হবে। হ্যাঁ, তারা আসলে এটি হার্ডকোড করেছে (এটি সিস্টেম কল দ্বারা পরীক্ষা করা হয়)।
জোশুয়া

@ জোশুয়া নিশ্চিত তবে তিনি এটি স্বয়ংক্রিয়ভাবে কাজ করতে চান। ত্রুটি আউট না।
রিঞ্জউইন্ড

4
আমার নিজের উত্তর না লিখে বিস্তারিতভাবে বলা, সময়ের সাথে সাথে অদলবদলের ব্যবহার বাড়ানো মোটেই খারাপ জিনিস নয় । এর অর্থ হ'ল কার্নেলটি আস্তে আস্তে খুঁজে বের করছে যে কোন মজাদার স্মৃতি ব্যবহার করছে তা কখনই ব্যবহার হচ্ছে না এবং এটিকে অদলবদলে নিয়ে চলেছে যাতে মেমরিটি এমন জিনিসগুলির জন্য ব্যবহার করতে পারে যা আপনাকে সহায়তা করে (যেমন আরও Fs ডেটা ক্যাশে রাখতে সক্ষম হবার মতো) এটিকে এড়িয়ে চলে এবং ডিস্ক থেকে এটি পুনরায় পড়তে হবে না)।
আর ..

@ রিনজউইন্ড ক্রোন যে ত্রুটিযুক্ত কাজের সাথে কাজ করে এবং লিঙ্কযুক্ত স্ক্রিপ্টটিও ব্যবহার করে না vmstat
jpaugh

41

আমি বলব এটি খারাপ ধারণা। আপনি যদি মনে করেন যে আপনার কাছে ফ্রি মেমরি রয়েছে এবং একটি সক্রিয় প্রক্রিয়া অদলবদল থেকে র‌্যামে স্থানান্তরিত হচ্ছে না, তবে হয় আপনি নিজের মতো করে মুক্ত মেমরি পাবেন না, বা প্রক্রিয়াটি আপনার মনে হয় ততটা সক্রিয় নয় হয়।

যদি কোনও সক্রিয় প্রক্রিয়াটি অদলবদল অব্যাহত থাকে, আপনি যা যা মেমরির উপর চাপ সৃষ্টি করে তা ঠিক করা উচিত। যদি এটি একটি সক্রিয় প্রক্রিয়া না হয় তবে বড় বিষয় কী?


1
+1: বড় ব্যাপার কী? কোনও চলমান সিস্টেম কখনই পরিবর্তন করবেন না, আমি মনে করি না যে কারওর মতো সিস্টেমের মূল কাজগুলিতে গণ্ডগোল হওয়া উচিত, বিশেষত কোনও প্রয়োজন ছাড়াই নয় not
মিষ্টান্ন

3
আমার মাঝে মাঝে এমন সমস্যা হয় যেখানে আমি মেমরি ফুটো (যা অন্য সব কিছুকে অদলবদল করতে বাধ্য করে) দিয়ে একটি প্রক্রিয়াটি মেরে ফেলেছি, আমাকে% 10% র্যাম ব্যবহার করে রেখে দেয় ... তবে আমি আবার অ্যাক্সেস না করা পর্যন্ত সমস্ত চলমান প্রোগ্রামগুলি অদলবদল হয়। সুতরাং প্রতিবার আপনি যখন কোনও কিছু স্পর্শ করবেন তখন দু'বার দ্বিতীয় বিলম্ব। ওপিটি কোথা থেকে আসছে তা আমি দেখতে পাচ্ছি এবং এটি স্বয়ংক্রিয়ভাবে সম্পন্ন হওয়া ভাল লাগবে তবে এটি সঠিক উপায় নয়।
কেউ কোথাও

1
@ সোনোমেনসহোহোওয়্যার তবে এটি যেভাবেই কাজ করে তা নয়। প্রক্রিয়াটি যদি মেমরি ফাঁস করে দেয় তবে সংজ্ঞা অনুসারে, এটি সক্রিয়ভাবে সেই মেমরিটি ব্যবহার করে না (এটি এটি পড়ছে এবং লিখছে না); এটি ঠিক এটি বরাদ্দ করেছে, দুর্ঘটনাক্রমে। যদি চারপাশে অন্যান্য সক্রিয় প্রক্রিয়াগুলি থাকে, তবে ফাঁস হওয়া মেমরিটি বদলে যাবে এবং এটি আপনার শারীরিক র‍্যাম নয়, আবর্জনায় পূর্ণ আপনার অদলবদল হবে।
ডেভিড রিচার্বি

@ ডেভিডরিচার্বি যদি আপনার পটভূমিতে কোনও প্রোগ্রাম খোলা থাকে, তবে সেই প্রোগ্রামটি এখনও মেমরি ফাঁসের চেয়ে কম সক্রিয় - এবং আপনি যখন এতে ফিরে যেতে চান, তখন এটি অদলবদল হতে হবে।
কেউ কোথাও

@ সোমোনসহোমোহই কোথাও আপনি মেমরি সিস্টেমটি কীভাবে কাজ করে তা ভুল বুঝেছেন বলে মনে হয়। শারীরিক র‍্যামে আপনার সম্পূর্ণ প্রক্রিয়াটি থাকতে হবে না: একক পৃষ্ঠাগুলির গ্রানুলারিটিতে অদলবদল পরিচালনা করা হয়। যে কোনও পৃষ্ঠা যা কিছু সময়ের জন্য ব্যবহার করা হয়নি সেগুলি মুছে ফেলার জন্য দায়বদ্ধ, এবং সম্পূর্ণরূপে ফাঁস হওয়া মেমরির সমন্বিত পৃষ্ঠাটি আর কখনও ব্যবহার করা হবে না, সুতরাং এটি মুছে ফেলার পরে আর কখনও অদলবদল করা যাবে না।
ডেভিড রিচার্বি

34

এটি একটি খারাপ ধারণা।

শারীরিক স্মৃতিশক্তি পূর্ণ হওয়ার কাছাকাছি হওয়ার আগে কার্নেল ডেটা অনুলিপি করতে (চলমান নয়) শুরু করে, কারণ যদি কোনও প্রক্রিয়াটিতে যদি কখনও প্রচুর মেমরির প্রয়োজন হয় তবে যে কোনও পৃষ্ঠা যা ইতিমধ্যে স্ব্যাপে একটি বৈধ অনুলিপি রয়েছে তা অন্য লেখার প্রয়োজন ছাড়াই তাত্ক্ষণিকভাবে পুনরায় ব্যবহার করা যেতে পারে nel ডিস্কে

সাধারণত এটি বেশিরভাগ পৃষ্ঠাগুলির ক্ষেত্রে ঘটে যা দীর্ঘ সময় অ্যাক্সেস করা হয়নি, এটি একটি ভাল সূচক যে এটি শীঘ্রই অ্যাক্সেস হওয়ার সম্ভাবনা নেই।

আপনি যদি অনুলিপিগুলিকে অনুলিপিগুলিকে বাতিল করেন তবে এতে কোনও লাভ হবে না, কারণ ডেটা এখনও র‍্যামে বিদ্যমান রয়েছে, তবে যখন কোনও প্রক্রিয়া প্রচুর মেমরি বরাদ্দ করতে চায় এবং অদলবদল হয়ে যায় তখন আপনার গতিতে ব্যয় হতে পারে।

শারীরিক মেমরি 50% পূর্ণ হওয়ার সাথে সাথে কার্নেলটি সর্বদা অদলবদল স্থানটি ব্যবহার করবে, সুতরাং আপনার পর্যাপ্ত মেমরি ইনস্টল করা থাকলেও এই সংখ্যাগুলি শূন্য নয়।


4
সর্বদা : আমি মনে করি আপনি /proc/sys/vm/swappinessএটির ডিফল্ট মানটি রেখে গিয়েছেন বলে মনে করছেন 70যা সার্ভারের পক্ষে ভাল এবং বেশিরভাগ আগ্রাসনে এমন প্রক্রিয়াগুলি থেকে নোংরা পৃষ্ঠাগুলি বের করে দেয় যা আরও পৃষ্ঠার ক্যাশে রাখার জন্য কিছুক্ষণ তাদের স্পর্শ করেনি। এটি প্রায়শই ডেস্কটপগুলির জন্য খারাপ কারণ Alt-ট্যাবটি ধীর হয়ে যেতে পারে।
পিটার কর্ডস

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

1
এটি অন্য উপায়ে রাখুন: কার্নেলটি থ্রুপুট ( swappiness=70) এর জন্য সুরযুক্ত , তবে ডেস্কটপে ব্যবহারকারী-অভিজ্ঞতার জন্য বিলম্ব আরও গুরুত্বপূর্ণ। এটি একটি বাণিজ্য। আপনি যদি পেজক্যাচে থাকার জন্য সামান্য পরিমাণে বড় আকারের স্টাফগুলি সংকলন করেন তবে নিশ্চিত হন, swappiness5 বা 10 এর পরিবর্তে 20 বা 30 এর মতো কিছুটা উঁচুতে ছেড়ে যান also -স্লো কম্পিউটার । দেখতে দেখতে vm.vfs_cache_pressure100 এর থেকে কম এছাড়াও ক্যাশে তথ্য পৃষ্ঠাগুলি উপর inode / ডিরেক্টরি মেটাডাটা, যা খুব UI 'তে সংবেদনশীলতা জন্য সুন্দর উপযোগী।
পিটার কর্ডেস

1
অন্যান্য টিউনেবল : লিখন-ব্যাক থ্রেশহোল্ডস lonesysadmin.net/2013/12/22/… । কোনও ফাইলগুলিতে কিছু লেখার পরে লিনাক্স ডিস্কে কত দ্রুত লিখতে শুরু করে এবং কতগুলি নোংরা পৃষ্ঠাগুলি অনুমোদিত তা নিয়ন্ত্রণ করে। (উদাহরণস্বরূপ, ক্যাচিং লেখার জন্য কত স্মৃতি ব্যয় করা যায়)
পিটার

21

এটি একটি খারাপ ধারণা। এটি কার্যকর হলে লিনাক্স কার্নেল এটিকে এভাবে প্রয়োগ করবে implement আমি বিশ্বাস করি না যে কয়েকটি টিউনিং প্যারামিটারের চেয়ে বেশি পরিবর্তন করার কারণ রয়েছে কারণ সাধারণ শেল স্ক্রিপ্টটি সম্ভবত কার্নেল বিকাশকারীদের অ্যালগরিদমের চেয়ে বেশি চালাক নয়।

আপনার মূলত দুটি মামলা রয়েছে:

  • সোয়াপ স্পেসে থাকা প্রক্রিয়াগুলি যেভাবেই ব্যবহৃত হয় না। আপনি কেন তাদের আবার র‍্যামে টানতে চান?
  • সামান্য র‌্যাম রয়েছে, তাই এগুলি সরিয়ে আনা হয় এবং আপনি এগুলিকে আবার র‌্যামে টানেন। তারপরে আপনার সিস্টেম এগুলি যত তাড়াতাড়ি সম্ভব আবার অদলবদলে রাখবে।

সুতরাং দুটি প্রধান পয়েন্ট আছে:

  1. প্রথমত, আপনার সমস্ত প্রোগ্রাম একবারে চালানোর জন্য খুব কম র‌্যাম থাকলে আপনার সিস্টেমটি ধীর হয়ে যাবে। অদলবদল আপনাকে আরও প্রোগ্রাম চালাতে সহায়তা করবে, তবে খুব কম ব্যবহৃত একটিতে দ্রুত স্যুইচ না করা, যা অদলবদল হতে পারে। কোনও অদলবদল খুব কম ব্যবহৃত একজনকে হত্যা করতে পারে না বা বর্তমানে ব্যবহৃত ব্যবহৃতটিকে স্মৃতি ছাড়িয়ে যেতে ব্যর্থ করতে পারে না।
  2. দ্বিতীয়ত, অদলবদল একটি ভাল জিনিস এবং তাই অদলবদলে স্টাফ থাকা যেমন আপনি বর্তমানে যেভাবে ব্যবহার করছেন না এমন প্রোগ্রামের ব্যয়ে ফ্রি র‌্যাম রয়েছে।

অনেক প্রোগ্রামের সাথে মেমোরির সমস্যা না পেয়েও কিছু প্রোগ্রাম বর্তমানে নিখরচায় র‌্যামের উপর ভিত্তি করে মেমরি বরাদ্দ করতে পারে (সম্ভবত আপনার ব্রাউজারটি আরও বেশি ম্যাকচি ব্যবহার করবে এবং আপনি দ্রুত ব্রাউজ করতে পারবেন) এবং কার্নেলটি ডিস্ক ক্যাশে করার জন্য ফ্রি র‌্যাম ব্যবহার করতে পারে এবং একযোগে অপ্টিমাইজেশন। আপনি যখন নিজের অদলবদলকে খালি রাখতে বাধ্য করবেন, কার্নেলটি তার পঠিত ক্যাশে ফেলে দেবে এবং যেমন একটি নতুন ফায়ারফক্স উদাহরণ শুরু করা ফায়ারফক্স যখন ডিস্ক ক্যাশে থাকবে তার চেয়ে বেশি সময় নিতে পারে।

আপনি যদি কার্নেলের আচরণটি টিউন করতে চান তবে অদলবদল পরামিতিটি দেখুন

দুটি পিটার-কর্ডস দ্বারা অতিরিক্ত দুটি রিসোর্স অবদান:

আপনি যদি সত্যিই খালি অদল বদল করতে চান তবে আপনি স্থায়ীভাবে স্ব্যাপটি বন্ধ করতে পারেন। আমি দেখতে পাচ্ছি না কেন এটি এক ঘন্টার জন্য রাখা এবং তারপরে এটি খালি করার অদলবদল না করার কারণে সুবিধা রয়েছে।


1
আরও দেখুন akitaonrails.com/2017/01/17/optimizing-linux-for-slow-computers এবং lonesysadmin.net/2013/12/22/... আরো টিউনিং পরামর্শ / বিস্তারিত জানার জন্য।
পিটার কর্ডেস

5

আপনি কার্নেলকে ক্যাশে মুক্ত করার কথা বলে একই ফলাফল অর্জন করতে পারেন:

echo 3 > /proc/sys/vm/drop_caches

এইভাবে আপনি সম্ভাব্য মেমরি অনাহারের সংক্ষিপ্ত মুহুর্তটি এড়িয়ে যাবেন এবং প্রয়োজনীয়টি কী এবং কী ফেলে দেওয়া যেতে পারে তা কর্নেলটি ছেড়ে যান।


0

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

  • সুতরাং অবিচ্ছিন্নভাবে পরিষ্কার করে আপনি নিজের মেশিনে ওয়ার্ক লোডটি সুইপ মেমরিটি যথেষ্ট পরিমাণে বাড়িয়ে তুলবেন।
  • SWAP পার্টিশনে তাদের মেমোরি রয়েছে এমন অ্যাপ্লিকেশনগুলি চালানো তাদের মৃত্যুদন্ডে দূষিত হতে পারে।

বরং আমি আপনাকে নিবিড়ভাবে অধ্যয়ন করার পরামর্শ দিচ্ছি যা অ্যাপ্লিকেশনটির সাথে কমান্ড লাইনে কোন অ্যাপ্লিকেশনটি আপনার স্মৃতি ব্যবহার করে htopএবং কিছু অ্যাপ্লিকেশন বন্ধ করার সিদ্ধান্ত নিয়েছে। gnome-system-monitorআপনি তার প্রক্রিয়া-ট্যাবে, ভাল হিসাবে ভাল অন্তর্দৃষ্টি দিতে পারেন।
আপনার যদি বড় অ্যাপ্লিকেশন থাকে যা প্রচুর র‌্যাম ব্যবহার করে। এগুলি একবারে চালাবেন না।

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