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