প্রশ্ন লিনাক্সে, ফ্রি বা কম্যান্ডের "বাফারস" এবং "ক্যাশে" এর মধ্যে পার্থক্য কী?


এটি একটি পুরনো প্রশ্ন যা আমি সময়-সময়ে দেখেছি। এটা সম্পর্কে আমার বোঝার তুলনামূলকভাবে সীমিত (অনেক আগে আগে পার্থক্য সম্পর্কে পড়া হয়েছে, কিন্তু জড়িত FACToid (গুলি) সত্যিই আটকে না)।

আমি এটা বুঝতে,

  • বাফার

    সক্রিয় I / O ক্রিয়াকলাপগুলির সাথে প্রোগ্রামগুলি ব্যবহার করা হয়, যেমন ডেটাতে ডেটা লিখিত হওয়ার জন্য অপেক্ষা করা

  • ক্যাশে

    সম্পন্ন আই / ও ক্রিয়াকলাপগুলির ফলস্বরূপ, যেমন বাফারগুলি ফ্লাশ করা হয়েছে বা অনুরোধটি পূরণ করতে ডিস্ক থেকে ডেটা পড়ছে।

আমি কি জন্মগততার জন্য একটি স্পষ্ট ব্যাখ্যা পেতে পারি?


68
2018-06-10 15:46


উত্স


stackoverflow.com/questions/6345020/... - Ciro Santilli 新疆改造中心 六四事件 法轮功
এটা বাফারগুলিতে পাওয়া যা মেটাডেটা এর মতো, এটি আইও বাফার সম্পর্কিত নয়। কার্নেল বাফারগুলির কিছু স্ল্যাব বরাদ্দকারীর জন্য হিসাব করা হয়েছে তবে সব সময়ে বাফার বা ক্যাশ মেমরিতে গণনা করা হয় না। - eckes


উত্তর:


"ক্যাশে" মোট কিছু অন্যান্য মেমরি বরাদ্দ অন্তর্ভুক্ত করা হবে, যেমন কোন tmpfs ফাইলটাইমস। এই কার্যকর দেখতে চেষ্টা করুন:

mkdir t
mount -t tmpfs none t
dd if=/dev/zero of=t/zero.file bs=10240 count=10240
sync; echo 3 > /proc/sys/vm/drop_caches; free -m
umount t
sync; echo 3 > /proc/sys/vm/drop_caches; free -m

এবং আপনি 100 এমবি দ্বারা "ক্যাশে" মান ড্রপটি দেখতে পাবেন যা আপনি RAM- ভিত্তিক ফাইল সিস্টেমে অনুলিপি করেছেন (অনুমান করা হয়েছে যে পর্যাপ্ত ফ্রি RAM ছিল, আপনি এটির মধ্যে কিছু শেষ হয়ে গেলেও এটির মধ্যে কিছুটি স্য্যাপে শেষ হয়ে যাবে। মেমরি ব্যবহার)। বিনামূল্যে প্রতিটি কল করার আগে "সিঙ্ক; ইকো 3> / proc / sys / vm / drop_caches" প্রতিটি লেখার বাফারগুলিতে (সিঙ্ক) মুলতুবি থাকা কিছু লিখতে হবে এবং মেমরি থেকে সমস্ত ক্যাশে / buffered ডিস্ক ব্লক মুছে ফেলতে হবে তাই বিনামূল্যে শুধুমাত্র অন্য পড়বে "ক্যাশে" মান বরাদ্দ।

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

সুতরাং "বাফার গণনা ফাইল / নেটওয়ার্ক লিখিত থাকা এবং ভবিষ্যতে শারীরিক পঠনগুলি সংরক্ষণে সম্প্রতি পড়া / লিখিত ব্লকগুলিতে সাম্প্রতিক পড়া / লিখিত ব্লকগুলি গণনা করা" হিসাবে সহজ নয় তবে বেশিরভাগ ক্ষেত্রেই এই সহজ বর্ণনাটি করা হবে।


41
2018-06-10 16:26



আকর্ষণীয় nuances জন্য +1। এই ধরনের তথ্য আমি খুঁজছেন। প্রকৃতপক্ষে, আমি সন্দেহ করি যে পরিসংখ্যানগুলি এতটা ধীরে ধীরে, এতগুলি ভিন্ন ক্রিয়াকলাপে জড়িত, যাতে তারা সেরা সাধারণ সূচকগুলিতে থাকে। - Avery Payne
ভার্চুয়াল মেশিনগুলির দ্বারা ব্যবহৃত RAM কে "ক্যাশেড" হিসাবে গণ্য করা হয় না, অন্তত qemu-kvm এর জন্য। আমি লক্ষ্য করেছি যে আমার কেভিএম হোস্টে ক্যাশ মানটি খুব কম ছোট নয় (1.9 গিগাবাইটে), তবে আমি যদি আমার ভিএমগুলির একটিটিকে ধ্বংস / শুরু করি তবে এটি পরিবর্তন হয় না। এটি VM গুলির একটিতে tmpfs মাউন্ট ট্রিক সঞ্চালন না করলেও এটি পরিবর্তন হয় না। আমি সেখানে একটি 800Meg tmpfs পার্টিশন তৈরি করেছি এবং "ক্যাশে" ভিএম-এ যথাযথ মান দেখিয়েছি কিন্তু এটি ভিএম হোস্টে পরিবর্তন হয়নি। কিন্তু আমি যখন আমার ভিএম ধ্বংস / শুরু করলাম তখন "ব্যবহৃত" মান সঙ্কুচিত / বেড়ে গেল। - Mike S
... আমি সেন্ট্রো 7.2.1511 ভিএম হোস্ট চলমান কার্নেল 3.10.0-327 এ পরীক্ষা চালায়। - Mike S
@ মাইকস: কিভাবে বিভিন্ন ভার্চুয়ালাইজেশান সমাধান হ্যান্ডেল মেমরির পরিবর্তিত হতে পারে, প্রকৃতপক্ষে কার্নেলগুলি বিভিন্ন সংস্করণগুলির মধ্যে বিভিন্ন ধরণের মেমরিগুলি ব্যবহার করে কিভাবে পরিবর্তিত হতে পারে। - David Spillett
@ মাইকস: "ভিএমগুলির একটিতে টিএমএফএস মাউন্ট ট্রিক সঞ্চালন" সম্পর্কে - আমি যদি ভিএম দ্বারা ব্যবহৃত অন্যান্য মেম দেখাই না তবে হোস্ট রিডিংগুলিকে প্রভাবিত করবে না। আমি একটি কেভিএম ভিএম-এ নিজেই প্রভাব দেখতে পাচ্ছি: ডিডি ফ্রি = 2020 এর আগে, ডিডি ফ্রি = 1899 পরে, ফ্রী ফ্রি = 2001 এর পর ড্রপ (২1 এমবি পার্থক্য ভিএম-এ অন্যান্য প্রসেসের কারণে হবে, যখন আমি দৌড়ে গিয়েছিলাম তখন এটি নিষ্ক্রিয় ছিল না পরীক্ষা). হোস্টটি পরিবর্তনটি দেখতে পারে না: VM তে প্রসেসের দ্বারা এটি ব্যবহারের জন্য বিনামূল্যে হলেও ভেরিফাই সম্ভবত VM তে বরাদ্দ করা হয়। - David Spillett


কৌশলী প্রশ্ন. আপনি বিনামূল্যে স্থান গণনা যখন আপনি আসলে উভয় বাফার এবং ক্যাশ যোগ করতে হবে। এই আমি খুঁজে পেতে পারে কি

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

http://visualbasic.ittoolbox.com/documents/difference-between-buffer-and-cache-12135


8
2018-06-11 12:01





আমি বাফার সম্পর্কে আরো স্পষ্ট বর্ণনা খুঁজছেন এবং আমি পাওয়া যায় "Professional Linux Kernel Architecture 2008"

অধ্যায় 16: পৃষ্ঠা এবং বাফার ক্যাশে

মিথষ্ক্রিয়া

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


5
2018-01-23 08:07





ফ্রি বাফার / ক্যাশে

সতর্কতা এই একটি শক্তিশালী পদ্ধতি ব্যাখ্যা সার্ভারে সুপারিশ না! সুতরাং আপনাকে সতর্ক করা হবে, কিছু ভুল হলে আমাকে দোষ দেবেন না।

বোঝার জন্য, জিনিস, আপনি পারে বল আপনার সিস্টেম যতটা সম্ভব মেমরি প্রতিনিধিত্ব করতে cache ক্যাশেড ফাইলটি ড্রপ করার চেয়ে:

প্রস্তাবনা

পরীক্ষা করার আগে, আপনি একটি উইন্ডো একটি আঘাত খুলতে পারে:

$ vmstat -n 1
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
 0  1  39132  59740  39892 1038820    0    0     1     0    3    3  5 13 81  1
 1  0  39132  59140  40076 1038812    0    0   184     0 10566 2157 27 15 48 11
...

বাস্তব সময় ভাঁজ বিবর্তন নিম্নলিখিত জন্য।

নোট: বর্তমান ডিরেক্টরিতে আপনাকে অনেকগুলি ডিস্ক মুক্ত করতে হবে, আপনার কাছে mem + swap থাকবে

ডেমো
$ free
         total       used       free     shared    buffers     cached
Mem:       2064396    2004320      60076          0      90740     945964
-/+ buffers/cache:     967616    1096780
Swap:      3145720      38812    3106908

$ tot=0
$ while read -a line;do
      [[ "${line%:}" =~ ^(Swap|Mem)Total$ ]] && ((tot+=2*${line[1]}))
    done </proc/meminfo
$ echo $tot
10420232

$ dd if=/dev/zero of=veryBigFile count=$tot
10420232+0 records in
10420232+0 records out
5335158784 bytes (5.3 GB) copied, 109.526 s, 48.7 MB/s

$ cat >/dev/null veryBigFile

$ free
             total       used       free     shared    buffers     cached
Mem:       2064396    2010160      54236          0      41568    1039636
-/+ buffers/cache:     928956    1135440
Swap:      3145720      39132    3106588

$ rm veryBigFile 

$ free
         total       used       free     shared    buffers     cached
Mem:       2064396    1005104    1059292          0      41840      48124
-/+ buffers/cache:     915140    1149256
Swap:      3145720      39132    3106588

নোট, আমি এই কাজ করেছি হোস্ট জোরালোভাবে ব্যবহৃত হয়। এটি সত্যিই একটি শান্ত মেশিনে আরো উল্লেখযোগ্য হবে।


2
2018-02-25 13:41



-1 যদি আমি পারতাম। এই উভয় (A) প্রশ্ন জিজ্ঞাসা অপ্রাসঙ্গিক এবং (বি) ক্যাশ ক্লিয়ারেন্স triggering একটি ভয়ঙ্কর ব্লান্ট-বল উপায়। পরেরটি করার জন্য সরাসরি পদ্ধতি রয়েছে, তাই এটি কোনও পার্শ্ব প্রতিক্রিয়া হিসাবে ফ্লাশ না হওয়া পর্যন্ত এটি ডেটা দিয়ে স্প্যামিং করে সিস্টেমটিকে চালিত করার জন্য সুরক্ষিত নয়। - underscore_d
হে আমার প্রভু! বাস্তব সার্ভার যে কখনও না দয়া করে! - tamerlaha
@ টিমেরলাহ আমি সম্মত, কিন্তু দয়া করে প্রথম অনুচ্ছেদটি পুনরায় পড়ুন: আপনি সতর্ক করছি, আমাকে দোষারোপ করবেন না! এই লক্ষ্য বাফার / ক্যাশে প্রভাব প্রদর্শন করা হয়। - F. Hauri


দ্বারা ব্যাখ্যা লাল টুপি:

ক্যাশ পৃষ্ঠাগুলি:

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

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

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

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

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

বাফার:

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


2
2017-10-14 20:36