গ্রেপগুলি অনুসন্ধানগুলি ত্বরান্বিত করতে ক্যাশে ব্যবহার করে?


36

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

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

grepপরবর্তী অনুসন্ধানগুলিতে কী কী পদ্ধতি ফলাফল দ্রুত ফিরিয়ে আনতে সক্ষম করে?

উত্তর:


60

গ্রিপ যেমন হয় না, তবে ফাইল সিস্টেম নিজেই প্রায়শই ডেটা পড়ার জন্য ক্যাশে করে, কারণ পরে গ্রেপ ডিস্কের পরিবর্তে মেমরিটিতে কার্যকরভাবে অনুসন্ধান করে তাই দ্রুত চলে।


2
আমি একমত. প্রথমবার আপনি যখন কোনও ফাইল গ্রেপ করেন, ফাইল সিস্টেম কোড ফাইলটি ডিস্ক থেকে ক্যাশে লোড করে; আপনি যখন এটির কিছুক্ষণ পরে আবার গ্রেপ করেন, ক্যাশে থেকে এখনও মেয়াদ শেষ হওয়ার সময় হয়নি। ফাইল সিস্টেমে ক্যাশে ম্যানুয়ালি ফ্লাশ করার কোনও উপায় আছে কিনা দেখুন, তারপরে এবং সময়ের আগে এবং পরে তুলনা করুন।
শাদুর

3
@ শাদুর - একটি উপায় আছে। দেখুন unix.stackexchange.com/questions/8398/…
ম্যাটডেম

3
কোনও ব্যবহারিক পার্থক্য নেই, তবে এটি একটি কার্নেল ক্যাশে, ফাইল সিস্টেম নয়।
pboin

@pboin ঠিক আছে, আমি একটি ছোট শর্টকাট নিয়েছি। অবশ্যই এটি কার্নেলের অংশ যা ফাইল সিস্টেম পরিচালনা করে যা ক্যাচিং করে না নিজেই ফাইল সিস্টেম (ডিস্কে)। পেডেন্টিক কিন্তু সত্য। :)
পলরাইন

19

লিনাক্স এবং * এনআইএক্স সিস্টেমগুলি বিভিন্ন ক্যাশে ব্যবহার করে যা ফাইল সিস্টেমগুলির (ভিএফএসের মাধ্যমে বিমূর্ত) এবং ব্যবহারকারী স্তরের প্রক্রিয়াগুলির মধ্যে বসে। সুতরাং এটি গ্রেপ নয় এবং এটি ক্যাচিং করা ফাইল সিস্টেম নয় - এটি অপারেটিং সিস্টেম।

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

আরও তথ্যের জন্য দেখুন: লিনাক্স ডকুমেন্টেশন প্রকল্প: 9.2 ভার্চুয়াল ফাইল সিস্টেম http://tldp.org/LDP/tlk/fs/files systemmttml


5
আপনি যদি পুনরাবৃত্তিযোগ্য গ্রেপ করে থাকেন তবে ইনোড এবং ডেন্ট্রি ক্যাশেগুলি একটি লক্ষণীয় পার্থক্য তৈরি করে। একটি পরীক্ষায়, /usr/includeসমস্ত সিস্টেমে বাদ দিয়ে আমার সিস্টেমে একটি গ্রেপ ~ 16.4 সেকেন্ড নিয়েছিল। সবকিছু ক্যাশে করা, প্রায় 0.3 সেকেন্ডের সাথে। আমি যদি কেবল পৃষ্ঠার ক্যাশে (যা বাফার ক্যাশে ধারণ করে) ফেলে দেয় তবে এটি ~ 14.3 সেকেন্ড সময় নেয়। আমি যদি পৃষ্ঠাটি ক্যাশে ছেড়ে রেখে ডেন্ট্রি / ইনোড ক্যাশে ফেলে রাখি তবে এটি প্রায় 12 সেকেন্ড।
mattdm

@ মেটডেম, এটি আকর্ষণীয়। আপনি কিভাবে ক্যাশে ফেলেছেন?
জেআরডাব্লু


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