লিনাক্সে বাফার বনাম ক্যাশে মেমরির মধ্যে পার্থক্য কী?


179

আমার কাছে এটি পরিষ্কার নয় যে দুটি লিনাক্স মেমরি ধারণার মধ্যে কী পার্থক্য রয়েছে: bufferএবং cache। আমি এই পোস্টটির মাধ্যমে পড়েছি এবং আমার কাছে মনে হয় যে তাদের মধ্যে পার্থক্যটি সমাপ্তির নীতি:

  1. বাফার নীতিটি প্রথম-মধ্যে, প্রথম-আউট
  2. ক্যাশের নীতিটি সর্বশেষ ব্যবহৃত হয়েছে Used

আমি কি সঠিক?

বিশেষত, আমি দুটি কমান্ডের দিকে তাকাচ্ছি: freeএবংvmstat

james@utopia:~$ vmstat -S M
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
5  0      0    173     67    912    0    0    19    59   75 1087 24  4 71  1
james@utopia:~$ free -m
             total       used       free     shared    buffers     cached
Mem:          2007       1834        172          0         67        914
-/+ buffers/cache:        853       1153
Swap:         2859          0       2859

আপনার আমাদের আরও প্রসঙ্গ দেওয়া উচিত, উভয় পদই বিভিন্ন অর্থ সহ ব্যবহৃত হয়। আপনি কি freeকমান্ড আউটপুটটি উল্লেখ করছেন?
লিওনব্লয়

3
আপনি ঠিক বলেছেন, আমি দুটি কমান্ডের দিকে তাকিয়ে রয়েছি: ফ্রি, ভিএমস্ট্যাট। আমার আপডেট দেখুন।
জেমস.সু

1
আপনার অনুরোধকে সহায়তা পারে unix.stackexchange.com
leonbloy

উত্তর:


69

"বাফারস" র‌্যামের কত অংশ ক্যাশে ডিস্ক ব্লকে উত্সর্গীকৃত তা উপস্থাপন করে। "ক্যাশেড" "বাফার্স" এর মতো, কেবলমাত্র এটিই এখন ফাইল পড়ার পৃষ্ঠাগুলি ক্যাশে করে।

থেকে উদ্ধৃতি:


3
আমি এটি একটি সাধারণ অজগর প্রোগ্রাম ব্যবহার করে পরীক্ষা করেছি যা প্রচুর পরিমাণে ব্লক লিখে। যা ঘটে তা হ'ল কলাম cacheদ্বারা free -w -hনয়, হিসাবে প্রতিবেদন করা পূর্ণ হয়েছে buffers। আমি মনে করি cacheকলামটি ডিস্ক উভয়ই লিখতে এবং ডিস্ক পড়তে গণনা করে এবং buffersঅন্য কোনও কিছুর জন্য ব্যবহৃত হয়।
সিএমসিডিগ্রাগনকাই

পরীক্ষামূলক প্রমাণের জন্য @ সিএমসিডিগ্রাঙ্কাই ধন্যবাদ। আকর্ষণীয় প্রশ্নটি হ'ল আপনি ডিস্কটি প্রবাহিত হওয়ার চেয়ে দ্রুত লেখছিলেন কিনা। (উদাহরণস্বরূপ সিঙ্কটি দীর্ঘ সময় নিতে পারে) যা আমাদের বলবে যদি পরিষ্কারের চেয়ে নোংরা ব্লকগুলি আলাদাভাবে গণনা করা হয়। লিনাক্স অবশ্যই উভয় প্রকারে (প্রশ্নে উল্লিখিত lru) ক্যাশে করবে তবে মেমোরি চাপের ক্ষেত্রে এটি আরও গুরুতর।
শেঠ রবার্টসন

179

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

উদ্ধৃতি লিঙ্ক


1
সংক্ষিপ্ত এবং ভাল ব্যাখ্যা। ধন্যবাদ।
কৌতূহলী

84

উদ্ধৃত উত্তর (রেফারেন্সের জন্য):

সংক্ষিপ্ত উত্তর: ক্যাশেড পৃষ্ঠার ক্যাশের আকার। বাফারগুলি ইন-মেমরি ব্লক আই / ও বাফারগুলির আকার। ক্যাশেড বিষয়গুলি; বাফারগুলি মূলত অপ্রাসঙ্গিক।

লম্বা উত্তর: ক্যাশেড হল লিনাক্স পৃষ্ঠার ক্যাশের আকার, অদলবদল ক্যাশে মেমরি বিয়োগ, যা স্ব্যাপচ্যাচ দ্বারা প্রতিনিধিত্ব করা হয় (সুতরাং মোট পৃষ্ঠার ক্যাশের আকার হ'ল ক্যাশেড + স্ব্যাপচেনাড)। লিনাক্স পৃষ্ঠার ক্যাশে সমস্ত ফাইল I / O সম্পাদন করে। লেখাগুলি পৃষ্ঠার ক্যাশে সম্পর্কিত পৃষ্ঠাগুলিকে মলিন হিসাবে চিহ্নিত হিসাবে কার্যকর করা হয়েছে; এরপরে ফ্লাশার থ্রেডগুলি পর্যায়ক্রমে যেকোন নোংরা পৃষ্ঠায় ডিস্কে আবার লিখুন। পৃষ্ঠাগুলি ক্যাশে থেকে ডেটা ফিরিয়ে পাঠ্য প্রয়োগ করা হয়; যদি ডেটা এখনও ক্যাশে না থাকে তবে এটি প্রথমে জনবহুল। একটি আধুনিক লিনাক্স সিস্টেমে ক্যাশেড সহজেই বেশ কয়েকটি গিগাবাইট হতে পারে। এটি কেবল মেমরির চাপের প্রতিক্রিয়া হিসাবে সঙ্কুচিত হবে। প্রয়োজন অনুযায়ী আরও মেমরি উপলব্ধ করার জন্য সিস্টেমটি ডিস্কের বাইরে ডেটা অদলবদলের পাশাপাশি পৃষ্ঠার ক্যাশেটি মুছে ফেলবে।

বাফারগুলি মেমোরি ব্লক আই / ও বাফার। তারা তুলনামূলকভাবে স্বল্পস্থায়ী। লিনাক্স কার্নেল সংস্করণ ২.৪ এর আগে, লিনাক্সের পৃথক পৃষ্ঠা এবং বাফার ক্যাশে ছিল। ২.৪ থেকে পৃষ্ঠা এবং বাফার ক্যাশে একীভূত হয়েছে এবং বাফারগুলি কাঁচা ডিস্ক ব্লক যা পৃষ্ঠার ক্যাশে উপস্থাপন করে না — অর্থাৎ ফাইল ডেটা নয়। বাফার্স মেট্রিক এইভাবে ন্যূনতম গুরুত্বের। বেশিরভাগ সিস্টেমে বাফারগুলি প্রায়শই কেবলমাত্র দশ মেগাবাইট।


7
"বাফারগুলি মূলত অপ্রাসঙ্গিক" - না There এমন অনেকগুলি মামলা রয়েছে, যেখানে ফাইলের বিষয়বস্তু ক্যাচিং অপ্রাসঙ্গিক, তবে মেটাডেটা ক্যাশে রেখে গতি বাড়িয়ে তোলে। উদাহরণস্বরূপ একটি ভিডিও স্ট্রিমিং এনএএস সার্ভার।
গুন্থার পাইজ

যে কোনও সিস্টেম প্রচুর আই / ও করছে বাফারগুলির জন্য প্রচুর মেমরি ব্যবহার করবে। আমি একটি 100 গিগাবাইট মাইএসকিউএল / ইনোডিবি ডাটাবেস বাল্কলোড করছি এবং বাফারগুলি সর্বদা 2GB এর উপরে চলে যায়।
মার্সেলো পাচেকো

21

এটি এর মতো 'বেশ' সহজ নয়, তবে এটি বুঝতে সহায়তা করতে পারে:

বাফার ফাইল মেটাডেটা (অনুমতি, অবস্থান, ইত্যাদি) সঞ্চয় করার জন্য। প্রতিটি মেমরি পৃষ্ঠা এখানে ট্র্যাক রাখা হয়।

ক্যাশে প্রকৃত ফাইল সামগ্রী সংরক্ষণ করার জন্য।


5
আইওডাব্লু, বাফার = মেটাডেটা; ক্যাশে = ডেটা;
Freedom_Ben

13

রেডহ্যাট দ্বারা ব্যাখ্যা :

ক্যাশে পৃষ্ঠা:

একটি ক্যাশে মেমোরির অংশ যা স্বচ্ছভাবে ডেটা সঞ্চয় করে যাতে সেই ডেটার জন্য ভবিষ্যতের অনুরোধগুলি দ্রুত পরিবেশন করা যায়। এই মেমরিটি কার্নেল দ্বারা ডিস্ক ডেটা ক্যাশে করতে এবং i / o কর্মক্ষমতা উন্নত করতে ব্যবহৃত হয়।

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

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

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

SysV শেয়ার করা মেমরি বিভাগগুলিও ক্যাশে হিসাবে গণ্য হয়, যদিও তারা ডিস্কগুলিতে কোনও ডেটা উপস্থাপন করে না। আইপিএস-এম কমান্ড ব্যবহার করে এবং বাইটস কলামটি পরীক্ষা করে কেউ ভাগ করা মেমরি বিভাগের আকার পরীক্ষা করতে পারেন।

বাফার্স:

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


12

বাফার এবং ক্যাশে

একটি বাফার এমন একটি জিনিস যা এখনও ডিস্কে "লিখিত" থাকে।

একটি ক্যাশে এমন কিছু যা ডিস্ক থেকে "পড়তে" এবং পরে ব্যবহারের জন্য সংরক্ষণ করা হয়।


2
নতুন ব্যবহারকারী টিপ: আপনার উত্তরটি যথাসম্ভব প্রশ্নের সাথে সুস্পষ্টভাবে সম্পর্কিত করুন। আমি যদি আপনি হতাম তবে আমি আপনার উত্তরে "সুতরাং, আপনার উদাহরণ দিয়ে ..." দিয়ে শুরু করে একটি অংশ যুক্ত করব এবং সে সম্পর্কে কিছুটা বিশদভাবে বর্ণনা করব।
পাইওটর ওয়াডাস

25
আমি মনে করি না এই প্রশ্নের উত্তর দাও (বলতে গেলে, যে একই প্রেক্ষাপটে সত্য কি "বাফার" এবং "ক্যাশে" দ্বারা লিনাক্স কার্নেল মানে
Freedom_Ben

8

আমি মনে করি এই পৃষ্ঠাটি গভীরভাবে বাফার এবং ক্যাশের মধ্যে পার্থক্য বুঝতে সহায়তা করবে। http://www.tldp.org/LDP/sag/html/buffer-cache.html

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

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

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


এটি ব্যাফার ক্যাশে কী তা ব্যাখ্যা করে তবে ভিএমস্ট্যাট এবং ফ্রি কমান্ডের আউটপুটগুলিতে বাফার এবং ক্যাশের মধ্যে পার্থক্য কী তা নয়।
রোল শ্রোভেন

4

শেঠ রবার্টসনের লিংক 2 বলেছে, "এই শর্তাদি সম্পর্কে পুরোপুরি বোঝার জন্য রবার্ট এম লাভের লিনাক্স কার্নেল বিকাশের মতো লিনাক্স কার্নেল বইটি পড়ুন।"

বইটির ২ য় সংস্করণে আমি 'বাফার' সম্পর্কিত কিছু সামগ্রী পেয়েছি।

যদিও শারীরিক ডিভাইসটি খাত স্তরে নিজেই ঠিকানাযোগ্য, কার্নেলগুলি ব্লকগুলির ক্ষেত্রে সমস্ত ডিস্ক ক্রিয়াকলাপ সম্পাদন করে।

যখন কোনও ব্লক মেমোরিতে সংরক্ষণ করা হয় (বলুন, পড়ার পরে বা কোনও লেখার জন্য মুলতুবি রয়েছে), এটি একটি 'বাফার'-এ সংরক্ষণ করা হয়। প্রতিটি 'বাফার' ঠিক একটি ব্লকের সাথে যুক্ত। 'বাফার' মেমরির মধ্যে একটি ডিস্ক ব্লক উপস্থাপন করে এমন একটি বিষয় হিসাবে কাজ করে।

একটি 'বাফার' হ'ল একক ভৌত ডিস্ক ব্লকের মেমরি উপস্থাপনা।

ব্লক আই / হে ক্রিয়াকলাপগুলি একবারে একক ডিস্ক ব্লককে পরিচালনা করে। একটি সাধারণ ব্লক আই / ও অপারেশন হ'ল ইনোডগুলি পড়া এবং লেখা। কার্নেলটি ডিস্ক থেকে একক ব্লকের নিম্ন-স্তরের পাঠ সম্পাদনের জন্য রুটি () ফাংশন সরবরাহ করে। 'বাফার' এর মাধ্যমে ডিস্ক ব্লকগুলি তাদের সম্পর্কিত ইন-মেমরি পৃষ্ঠায় ম্যাপ করা হয় are "


2

বাফারে মেটাডেটা রয়েছে যা লেখার কর্মক্ষমতা উন্নত করতে সহায়তা করে

ক্যাশে স্বয়ংক্রিয়ভাবে ফাইলের সামগ্রী থাকে (কখনও কখনও ডিস্কে লেখার জন্য এখনও থাকে না) যা পড়ার কর্মক্ষমতা উন্নত করে


1

বইটির উদ্ধৃতি: তথ্য পুনরুদ্ধারের পরিচিতি

ক্যাশে

আমরা মেমরিতে যতটা সম্ভব ডেটা রাখতে চাই, বিশেষত আমাদের সেই ডেটা যা ঘন ঘন অ্যাক্সেস করা দরকার। আমরা মূল স্মৃতি ক্যাশে প্রায়শই ব্যবহৃত ডিস্ক ডেটা রাখার কৌশলটি বলি।

বাফার

অপারেটিং সিস্টেমগুলি সাধারণত পুরো ব্লকগুলি পড়ে এবং লিখিত হয়। সুতরাং, ডিস্ক থেকে একটি একক বাইট পড়তে পুরো ব্লকটি পড়ার মতো সময় নিতে পারে। 8, 16, 32, এবং 64 কিলোবাইট (কেবি) এর ব্লক আকারগুলি সাধারণ। আমরা মূল মেমোরির অংশটিকে কল করি যেখানে একটি ব্লক পড়া বা লেখা হচ্ছে বাফার সংরক্ষণ করা হয়।


0

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

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