প্রশ্ন কেন লিনাক্সে ক্যাশ ড্রপ?


আমাদের সার্ভারে মধ্যরাত্রে আমাদের ক্যাশ ড্রপ করার অভ্যাস আছে।

sync; echo 3 > /proc/sys/vm/drop_caches

যখন আমি কোডটি রান করি তখন এটি অনেক RAM কে মুক্ত করে বলে মনে হয়, তবে আমাকে অবশ্যই এটি করতে হবে। বিনামূল্যে র্যাম একটি বর্জ্য না?


81
2018-05-20 03:12


উত্স


যে ব্যক্তিটি এটিকে রাখে তাকে খুঁজে বের কর এবং কেন তিনি তা করেছেন তা জিজ্ঞাসা করুন। আপনি সঠিকভাবে অনুমিত হিসাবে, এটির জন্য কোন সুস্পষ্ট কারণ নেই। - Michael Hampton♦
কার্নেল ডিবাগিং। এটা সম্বন্ধে. এটি আসলে কোন RAM কে মুক্ত করে না; নাম প্রস্তাব হিসাবে এটি ক্যাশে ড্রপ, এবং এইভাবে কর্মক্ষমতা হ্রাস। - Michael Hampton♦
@ আইভিকোড তারপর আপনি যে সার্ভারের সাথে এটির সমস্যাগুলি এড়ানোর চেষ্টা করার পরিবর্তে সেই সার্ভারের সমস্যাটি খুঁজে বের করতে এবং সমাধান করতে পারেন। আমার গাড়ী প্রতিটি সময় স্থগিত করা হলে আমি ধারালো ডান পালা, তীক্ষ্ণ ডান পালা এড়ানো একটি lousy ফিক্স। - David Schwartz
সংশ্লিষ্ট thedailywtf.com/Articles/Modern-Memory-Management.aspx দৃঢ়ভাবে এটি একটি খারাপ ধারণা বিতর্ক। - Drunix
সম্পর্কিত, এবং "সমস্যা" এর একটি দরকারী বর্ণনা: linuxatemyram.com - Bill Weiss


উত্তর:


আপনি 100% সঠিক। এটা না RAM কে মুক্ত করার একটি ভাল অনুশীলন। সম্ভবত এটি cargo পাল সিস্টেম সিস্টেম প্রশাসনের একটি উদাহরণ।


85
2018-05-20 04:59



কারগো কাল্ট সিস্টেম প্রশাসন উল্লেখ করার জন্য +1। কোন sysadmin যারা শব্দ জানেন না এবং এর অর্থ কি বহিস্কার করা উচিত। - Tonny
@ টনিঃ আমরা তখন সিএসএসডিন বিভাগ ছাড়াই চলে যাব :( - PlasmaHH
মানবতার বেশিরভাগের মতই, আমি প্রচুর অনুমোদন সহ তীক্ষ্ণ তীব্র বিবৃতিগুলি পছন্দ করি, তবে একটি উদ্ধৃতি বা যুক্তি আমার সুপারভেরো +1 অর্জন করবে। - Aaron Hall
আপনি যদি মনে করেন না, তাহলে পণ্যসম্ভার-সংস্কৃতি প্রশাসন, পাশাপাশি উপরে ব্যাখ্যা করুন। হয়তো একটি ফলো অন সম্পাদনা? আমি এখনও আমার +1 প্রতিরোধ করছি ...: পি - Aaron Hall
"এটা সম্ভব যে আপনার অ্যাপ্লিকেশনটি এই RAM ব্যবহার করে নাও তবে লিনাক্সটি তার মেমরির মধ্যে আক্রমণাত্মকভাবে ক্যাশে করছে এবং অ্যাপ্লিকেশনটি মেমরির প্রয়োজন হলেও এটির কিছু ক্যাশে মুক্ত হবে না বরং এটি সোয়াপিং শুরু করবে।" খুব নির্দিষ্ট নয়। অনুশীলনে, মেমরি ব্যবস্থাপনাটি নিখুঁত নয়, এবং যখন সেই অসিদ্ধতা দেখায় তখন ঘুরতে থাকা একটি ভাল জিনিস যা একটি ভাল জিনিস। - Dan Pritts


হ্যাঁ, ক্লিয়ারিং ক্যাশে র্যাম ফ্রি হবে তবে এটি কার্নেলকে ক্যাশের পরিবর্তে ডিস্কগুলিতে ফাইলগুলি সন্ধান করবে যার ফলে কর্মক্ষমতা সমস্যা হতে পারে।

উপলব্ধ RAM রোধ করা হলে সাধারণত কার্নেল ক্যাশে সাফ করবে। এটি প্রায়শই pdflush ব্যবহার করে ডিস্কের উপাদানটি ডিস্কে লিখে।


62
2018-05-20 06:26



ব্যাখ্যা করার জন্য +1 কেন এটি একটি খারাপ ধারণা। - Ogre Psalm33


এই ধরনের ক্যাশে ড্রপ করার কারণ ডিস্ক কর্মক্ষমতা বেঞ্চমার্কিংয়ের জন্য, এবং এটি বিদ্যমান একমাত্র কারণ।

একটি আই / ও-ইন্টেন্সিভ বেঞ্চমার্ক চালানোর সময়, আপনি নিশ্চিত যে আপনি যে বিভিন্ন সেটিংস চেষ্টা করছেন তা আসলে ডিস্ক I / O করছেন, তাই লিনাক্স আপনাকে সম্পূর্ণ রিবুট করার পরিবর্তে ক্যাশেগুলি ছেড়ে দেওয়ার অনুমতি দেয়।

উদ্ধৃতি থেকে ডকুমেন্টেশন:

এই ফাইলটি বিভিন্ন কার্নেলের বৃদ্ধি নিয়ন্ত্রণ করার উপায় নয়   ক্যাশে (inodes, dentries, pagecache, ইত্যাদি ...) এই বস্তু   অন্যত্র মেমরি প্রয়োজন যখন স্বয়ংক্রিয়ভাবে কার্নেল দ্বারা reclaimed   সিস্টেমে।

এই ফাইল ব্যবহার কর্মক্ষমতা সমস্যা হতে পারে। যেহেতু এটা বাতিল   ক্যাশেড বস্তু, এটি একটি উল্লেখযোগ্য পরিমাণে I / O এবং CPU খরচ করতে পারে   পতিত বস্তু পুনরূদ্ধার, বিশেষ করে যদি তারা ভারী ব্যবহার অধীনে ছিল।   এই কারণে, পরীক্ষার বা ডিবাগিং পরিবেশের বাইরে ব্যবহার করুন   সুপারিশ করা হয় না।


34
2018-05-20 13:51



অবশ্যই, আপনি যা করার চেষ্টা করছেন তার উপর নির্ভর করে, সম্পূর্ণ রিবুট ডিস্ক ক্যাশে যথেষ্ট পরিমাণে পরিষ্কার করতে পারে না। - α CVn
"মেমরি প্রয়োজন হলে এই বস্তু স্বয়ংক্রিয়ভাবে কার্নেল দ্বারা পুনরায় দাবি করা হয়" নকশা লক্ষ্য কিন্তু এটি সর্বদা প্রকৃত আচরণ হতে পারে না। - Dan Pritts
@ ড্যানপ্রিটস আপনি কী মনে করেন তা ঠিক নয়? - Joe
সুস্পষ্ট ক্ষেত্রে যখন আপনি আরও বেশি (অ-ট্রান্সপারেন্ট) হিউজপেজ বরাদ্দ করার অনুমতি দিতে র্যামটি সাফ করতে চান; আরেকটি ক্ষেত্রে স্বচ্ছ হগপেজ আবর্জনা সংগ্রহ বিরতি বিরতি (এই প্রশ্নের অন্য কোথাও আমার উত্তর / মন্তব্য দেখুন)। কিন্তু আমার মন্তব্য সাধারণ ক্ষেত্রে উদ্দেশ্যে ছিল। কখনও কখনও যারা সিস্টেম পরিচালনা করছে তারা ডিজাইন / বাস্তবায়িত লোকেদের চেয়ে ভাল জানেন। প্রায়ই, না - তাদের মন্তব্য কি রক্ষা করার চেষ্টা করছে। আমি শুধু যে আনন্দিত - Dan Pritts


এখানে মূল ধারণাটি সম্ভবত খারাপ নয় (কেবলমাত্র খুব সাদাসিধা এবং বিভ্রান্তিকর): ফাইলগুলি ক্যাশে করা যেতে পারে, যা নিকট ভবিষ্যতে অ্যাক্সেস করা খুব অসম্ভাব্য, উদাহরণস্বরূপ logfiles। এইগুলি "খেয়ে ফেলুন" র্যাম, যা পরে OS বা অন্য কোন ভাবে প্রয়োজন অনুসারে মুক্ত হতে হবে।

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

আমার পরিবেশে, লিনাক্স প্রায়শই ভুল বলে মনে করে এবং বেশিরভাগ ইউরোপ স্টক এক্সচেঞ্জের শুরুতে (প্রায় 0 9 00 স্থানীয় সময়) সার্ভারগুলি এমন কাজগুলি শুরু করবে যা তারা দিনে একবার একবার করে, মেমরিতে সোয়াপ করার প্রয়োজন যা পূর্বে লেখা হয়েছিল কারণ লেখা logfiles, তাদের সংকুচিত, তাদের অনুলিপি ইত্যাদি ইত্যাদি ক্যাশে ভরাট ছিল যেখানে জিনিসগুলি স্য্যাপড আউট করা হয়েছিল।

কিন্তু এই সমস্যার সমাধান ক্যাশে ড্রপ করা হয়? অবশ্যই না। এখানে কি সমাধান হবে তা জানার জন্য লিনাক্সকে জানাতে হবে: এই ফাইলগুলি আর ব্যবহার করা হবে না। এই ধরনের জিনিস ব্যবহার করে লেখা আবেদন দ্বারা করা যেতে পারে posix_fadvise()অথবা একটি cmd লাইন টুল ব্যবহার করে vmtouch (যেগুলি ক্যাশে ফাইলগুলির পাশাপাশি ক্যাশে ফাইলগুলি দেখতেও ব্যবহার করা যেতে পারে)।

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

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


25
2018-05-20 19:46



আমার সার্ভারের সমস্ত অ্যাপ্লিকেশন নহুপে চলছে। হয়তো nohup.out ক্যাশে হচ্ছে এবং মেমরি খাওয়া হচ্ছে? - ivcode
@ivcode: এটি একটি কারণ হতে পারে, nohup.out কত বড় তা পরীক্ষা করে দেখুন। এটি কতটুকু ক্যাশে করা যায় তা নির্ধারণ করতে vmtouch ব্যবহার করুন। - PlasmaHH
আমি একটি cron কাজ আছে cat /dev/null > path/nohup.out nohup.out হিসাবে দ্রুত প্রতি ক্রমবর্ধমান হয় প্রতি 15 মিনিটে। হয়তো লিনাক্সটি ক্লিয়ারিং করছি এমনকি যদি আমি এটি সাফ করছি - ivcode
@ivcode যদি আপনি আউটপুট প্রয়োজন হয় না nohup আপনি এটা পুনরায় নির্দেশ করা উচিত /dev/null। মনে হচ্ছে আপনার সিস্টেমে কিছুটা অনভিজ্ঞ সিএসডামিন কাজ করছে। দেখ stackoverflow.com/questions/10408816/... কিভাবে নির্দেশ করার জন্য nohupএর আউটপুট /dev/null - David Wilkins
যদিও 15 মিনিটের ব্যবধানে nohup.out সাফ করা হয়, যদি কোনো কারণে অ্যাপ্লিকেশন প্রক্রিয়াটি মারা যায় তবে nohup.out স্বয়ংক্রিয়ভাবে অন্য স্ক্রিপ্ট থেকে ব্যাকআপআপ করা হবে। আমি vmtouch চেষ্টা। এটা সত্যিই একটি খুব ভাল হাতিয়ার - ivcode


ভার্চুয়াল মেশিনের গুচ্ছ শুরু করার সময় আমি ড্রপ ক্যাশেগুলি কার্যকর হতে দেখেছি। অথবা অন্য কিছু যা কিছু ডাটাবেস সার্ভারের মতো বড় পৃষ্ঠাগুলি ব্যবহার করে।

লিনাক্সে বড় পৃষ্ঠাগুলিকে প্রায়শই র্যাম ডিফ্র্যাগ করতে হবে যাতে 2 এমবি সমান্তরাল শারীরিক RAM একটি পৃষ্ঠায় রাখা যায়। ফাইল ক্যাশে সব মুক্ত করা এই প্রক্রিয়া খুব সহজ করে তোলে।

তবে আমি অন্যান্য উত্তরগুলির সাথে একমত যে এতে প্রতি রাতে ফাইল ক্যাশে ড্রপ করার একটি সাধারণ কারণ নেই।


16
2018-05-22 00:47



আমি দ্বিতীয় আদেশ প্রতিদ্বন্দ্বিতা ইঙ্গিত জন্য আপগ্রেড ক্যাশে ড্রপ প্রতিক্রিয়া। - Noah Spurrier
এছাড়াও, হাই-মেমরি নোডগুলিতে (1 টিবি) অ্যাপ্লিকেশনগুলিতে এইচপিসি অ্যাপ্লিকেশনগুলিতে কয়েকটি বৃহত ফাইল পড়ার ফলে মেমরি ক্যাশে একটি বড় পরিমাণে পরিনত হয়। সিস্টেমের ক্যাশেড মেমরি "সীমানা" পৌঁছানোর পরে অনেক এইচপিসি অ্যাপ্লিকেশনগুলি ম্যালোক এর শত শত গিগাবাইট সঞ্চালন করে, সিস্টেমটি কয়েক ঘন্টার জন্য স্থগিত থাকতে পারে, কারণ মাইগ্রেশন প্রসেসগুলি NUMA নোড জুড়ে ফাঁকা মেমরির ক্ষুদ্র অংশগুলিকে ছোট আকারে স্থানান্তরিত করে। খারাপ, ইউজারল্যান্ডে ক্যাশেগুলি মুক্ত করার জন্য আপনি কী করতে পারবেন না তা ছাড়া সমস্ত ক্ষুদ্র 2 মেগাবাইট ব্লক বরাদ্দ করতে সিস্টেমটি চালানো ছাড়া এটি হ্রাস করা যায় এবং হগপ্যাড করা ডিফ্র্যাগ এবং অ্যাপ্লিকেশনগুলি সাধারণত চালানো হয়। - user1649948
+1 বড় পৃষ্ঠা তৈরি করার কমান্ড (sysctl -w vm.nr_hugepages=...) আমি এমনকি প্রথম ক্যাশে ড্রপ না করা পর্যন্ত কাজ করতে অস্বীকার করে (আর্ক linux)। - Aleksandr Dubinsky


এটি সম্ভবত সম্ভব যে সিস্টেমটি স্থিতিশীল করার একটি উপায় হিসাবে এটি প্রতিষ্ঠিত হয়েছিল যখন প্রকৃতপক্ষে সমস্যাটি খুঁজে পেতে দক্ষতা বা অভিজ্ঞতার সাথে কেউ ছিল না।

বিনামূল্যে সম্পদ

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

মেমরি খাওয়া কি?

আপনি ড্রপিং ক্যাশে কাজ বলে মনে করে যে মেমরি খরচ অনেক কারণ কি নির্ধারণ করা উচিত। এটি যেকোন সংখ্যক খারাপভাবে কনফিগার করা বা কেবলমাত্র ভুলভাবে ব্যবহৃত সার্ভার প্রসেসগুলির দ্বারা সৃষ্ট হতে পারে। উদাহরণস্বরূপ, একটি সার্ভারে যখন ম্যাগেন্টো ওয়েবসাইটটি 15 মিনিটের বিরতির মধ্যে দর্শকদের নির্দিষ্ট সংখ্যায় পৌঁছেছে তখন একটি সার্ভারে আমি মেমরি ব্যবহারটি সর্বাধিক দেখেছি। অ্যাপাচি একাধিক প্রসেসগুলিকে একযোগে চালানোর অনুমতি দেওয়ার জন্য কনফিগার হওয়া এই কারণে শেষ হয়ে গেছে। অনেকগুলি প্রসেস, অনেক মেমরি ব্যবহার করে (Magento একটি কখনও কখনও একটি প্রাণী) = swapping।

শেষের সারি

শুধু এটা যে প্রয়োজন কিছু মনে করবেন না। এটি কেন আছে তা খুঁজে বের করতে সক্রিয় হোন, অন্যরা যদি এটি ভুল করে এবং সিস্টেমটি মেনে চলে তবে এটি অক্ষম করতে সাহস করুন - প্রকৃত সমস্যাটি কী তা জানুন এবং এটি ঠিক করুন।


8
2018-05-20 15:16





লিনাক্স / m68k আসলে একটি কার্নেল বাগ রয়েছে যার ফলে kswapd পাগল হয়ে যায় এবং 100% CPU (50% যদি অন্য কোন CPU- আবদ্ধ কাজ থাকে, যেমন ডেবিয়ান বাইনারি প্যাকেজ অটোব্লিলার - ভলগো বিল্ডড - ইতিমধ্যে চলমান), যা সময়, সবসময় না) প্রতি কয়েক ঘন্টা এই বিশেষ কমান্ড চলমান দ্বারা হ্রাস করা।

যে বলা হচ্ছে ... আপনার সার্ভার সম্ভবত একটি m68k (Atari, Amiga, ক্লাসিক Macintosh, ভিএমই, Q40 / Q60, Sun3) সিস্টেম সম্ভবত হয় না ;-)

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


4
2018-05-21 08:03



"একটি কার্নেল বাগ যা kswapd কে পাগল করে তোলে" - কোনটি বাগ হয়? - Ben
@ বেন দেখুন এই থ্রেড (এই বার্তাটি এবং কয়েকটি ফলোআপ, যার মধ্যে একটি এটি অন্তর্ভুক্ত হতে পারে এমন অনুমান অন্তর্ভুক্ত করে) - mirabilos
আমি একটি অনুরূপ সমস্যা অনুভব করছি (যদিও এটি x86_64) এবং এই মুহূর্তে একমাত্র সমাধান ক্যাশে ড্রপ করা serverfault.com/questions/740790/... - Fernando
@ ফার্নান্দো আমারও আছে m68k বক্সে "ড্রপ ক্যাশে" cronjob - mirabilos