Deadline scheduler
সময়সীমা নির্ধারণকারী হল লিনাক্স কার্নেলের জন্য একটি আই/ও সময় নির্ধারণকারী যা 2002 সালে জেনস অ্যাক্সবো দ্বারা লেখা হয়েছিল। সংক্ষিপ্ত বিবরণ সময়সীমা নির্ধারণকারীর মূল লক্ষ্য হল একটি অনুরোধের জন্য পরিষেবা শুরু করার সময় নিশ্চিত করা। এটি অনুরোধের অনাহার রোধ করতে সমস্ত আই/ও ক্রিয়াকলাপের উপর একটি সময়সীমা আরোপ করে তা করে। এটি সাজানো সারি (পড়া এবং লেখা উভয়) ছাড়াও দুটি সময়সীমা সারি বজায় রাখে। সময়সীমা সারিগুলি মূলত তাদের সময়সীমা (মেয়াদ শেষ হওয়ার সময়) অনুসারে সাজানো হয়, অন্যদিকে সাজানো সারিগুলি সেক্টর নম্বর দ্বারা সাজানো হয়। পরবর্তী অনুরোধটি পরিবেশন করার আগে, সময়সীমা নির্ধারক সিদ্ধান্ত নেয় যে কোন সারিটি ব্যবহার করতে হবে। পঠন সারিগুলিকে একটি উচ্চতর অগ্রাধিকার দেওয়া হয়, কারণ প্রক্রিয়াগুলি সাধারণত পঠন ক্রিয়াকলাপে বাধা দেয়। এরপরে, সময়সীমা নির্ধারক সময়সীমা সারিতে প্রথম অনুরোধের মেয়াদ শেষ হয়েছে কিনা তা পরীক্ষা করে। অন্যথায়, সময় নির্ধারক সাজানো সারি থেকে অনুরোধের একটি ব্যাচ পরিবেশন করে। উভয় ক্ষেত্রেই, সময় নির্ধারক বাছাই করা সারিতে নির্বাচিত অনুরোধ অনুসরণ করে অনুরোধগুলির একটি ব্যাচও পরিবেশন করে। ডিফল্টরূপে, পড়ার অনুরোধের মেয়াদ 500 এমএস হয়, লেখার অনুরোধের মেয়াদ 5 সেকেন্ডের মধ্যে শেষ হয়। সময়সূচীর একটি প্রাথমিক সংস্করণ 2002 সালের জানুয়ারিতে জেনস অ্যাক্সবো দ্বারা প্রকাশিত হয়েছিল। পরিমাপগুলি দেখিয়েছে যে নির্দিষ্ট মাল্টিথ্রেডেড কাজের চাপের জন্য সময়সীমা আই/ও সময়সূচী সিএফকিউ আই/ও সময়সূচীকে ছাড়িয়ে যায়। sysfs টিউনেবল ফিফো _ ব্যাচ (পূর্ণসংখ্যা) সময়সীমা "ব্যাচ" ধারণার মাধ্যমে আই/ও অপারেশন (আইওপি) কার্যকর করে যা ক্রমবর্ধমান সেক্টর সংখ্যার পরিপ্রেক্ষিতে ক্রিয়াকলাপের সেট। এই টিউনেবল নির্ধারণ করে যে ডিস্কে অনুরোধগুলি সারিবদ্ধ করার আগে একটি ব্যাচ কতটা বড় হতে হবে (বর্তমানে নির্মিত ব্যাচের মেয়াদ শেষ হওয়া ছাড়া)। ছোট ব্যাচগুলি নতুন অনুরোধগুলি দ্রুত কার্যকর করা নিশ্চিত করে বিলম্বতা হ্রাস করতে পারে (সম্ভবত আরও অনুরোধ আসার জন্য অপেক্ষা করার পরিবর্তে), তবে ড্রাইভ হেডগুলির সামগ্রিক চলাচল বাড়িয়ে সামগ্রিক থ্রুপুটকে হ্রাস করতে পারে (যেহেতু সিকোয়েন্সিং একটি ব্যাচের মধ্যে ঘটে এবং তাদের মধ্যে নয়)। উপরন্তু, যদি আই. ও. পি-র সংখ্যা যথেষ্ট বেশি হয় তবে ব্যাচগুলি সময়মতো কার্যকর করা হবে। পড়ুন _ মেয়াদ শেষ (পূর্ণসংখ্যা) 'পড়ুন _ মেয়াদ শেষ' সময়টি মিলিসেকেন্ডে সর্বাধিক সময় যার পরে পঠনটি 'মেয়াদ শেষ' হিসাবে বিবেচিত হয়। এটিকে দুধের কার্টনটির মেয়াদ শেষ হওয়ার তারিখের মতো ভাবুন। মেয়াদোত্তীর্ণ হওয়ার আগে দুধ ব্যবহার করা সবচেয়ে ভালো। সময়সীমা নির্ধারণকারীর ক্ষেত্রেও একই কথা প্রযোজ্য। এটি নিশ্চিত করার চেষ্টা করবে না যে সমস্ত আইও তার মেয়াদ শেষ হওয়ার তারিখের আগে জারি করা হয়েছে। যাইহোক, যদি আইও মেয়াদ শেষ হয়ে যায়, তবে এটি অগ্রাধিকারের ক্ষেত্রে একটি বাম্প পায়। সতর্কবার্তা সহ। পড়ার মেয়াদ শেষ হওয়ার সারিটি কেবল তখনই পরীক্ষা করা হয় যখন সময়সীমা নির্ধারক পড়ার সারিটি পুনরায় মূল্যায়ন করে। রিডের জন্য এর অর্থ হল প্রতিবার স্ট্রিমিং আইও ব্যতীত একটি সাজানো রিড পাঠানো হয়। সময়সূচীকার পাঠের সারি থেকে আইও স্ট্রিমিং করার সময়, পাঠের মেয়াদ শেষ হওয়া মূল্যায়ন করা হয় না। রিড সারির পুনর্মূল্যায়ন করার সময়, যুক্তিটি হল মেয়াদোত্তীর্ণ রিডগুলির জন্য চেক করা (ফিফো [টাইম অর্ডার] সারির শীর্ষে দেখুন) ক্যাশেড রিড পয়েন্টার বৈধ কিনা তা পরীক্ষা করে দেখুন (তাই স্ট্রিমিং না হলেও, ক্যাশেড পয়েন্টারটি এখনও অগ্রাধিকার নেয় যাতে সাজানো সারিটি সুইপে টিপ থেকে লেজের দিকে অতিক্রম করা হয়) সাজানো সারি থেকে প্রথম রিডটি তুলে নিন (অন্য সুইপের জন্য আবার টিপ থেকে শুরু করুন) যদি মেয়াদ শেষ হয়ে যায়, তবে প্রথমটি ফিফো থেকে টানা হয়। মনে রাখবেন যে এই মেয়াদোত্তীর্ণ রিড তারপর রিড সার্ট অর্ডারের জন্য নতুন নেক্সাস। ক্যাশে করা পরবর্তী পয়েন্টারটি মেয়াদ শেষ হওয়ার পরে সাজানো সারি থেকে পরবর্তী আইও-তে নির্দেশ করার জন্য সেট করা হবে। লক্ষ্য করার মতো বিষয় হল যে অ্যালগরিদমটি তাদের মেয়াদ শেষ হওয়ার তারিখ অতিক্রম করার পরে কেবল সমস্ত মেয়াদোত্তীর্ণ আইও কার্যকর করে না। এটি মেয়াদোত্তীর্ণ পঠন সারিটি আবার পরীক্ষা করার আগে 'রাইট _ স্টারভড' সাজানো পাঠগুলি একসাথে ব্যাচ করে কিছু যুক্তিসঙ্গত কর্মক্ষমতা বজায় রাখার অনুমতি দেয়। সুতরাং, পঠন মেয়াদোত্তীর্ণ আইও-এর মধ্যে সঞ্চালিত হতে পারে এমন আইও-এর সর্বাধিক সংখ্যা হল 2 * 'ফিফো _ ব্যাচ' * 'রাইটস _ স্টারভড'। 'ফিফো _ ব্যাচ' স্ট্রিমিংয়ের একটি সেট প্রথম মেয়াদ শেষ হওয়ার পরে পড়ে এবং যদি এই স্ট্রিমটি লেখার ক্ষুধার্ত অবস্থার কারণ হয়, তবে সম্ভবত অন্য একটি 'ফিফো _ ব্যাচ' স্ট্রিমিং লেখে। এটি আরও খারাপ পরিস্থিতি, যার পরে পাঠের মেয়াদ শেষ হওয়া সারিটি পুনরায় মূল্যায়ন করা হবে। সর্বোপরি, মেয়াদোত্তীর্ণ পঠন সারিটি বাদ দেওয়ার আগে পরপর 'রাইট _ স্টারভ্ড' বার মূল্যায়ন করা হবে কারণ লেখার সারিটি ব্যবহার করা হবে। রাইট _ এক্সপায়ার (পূর্ণসংখ্যা) রিড _ এক্সপায়ারের জন্য একই কিন্তু রাইট অপারেশনগুলির জন্য (রিডস থেকে পৃথক ব্যাচে গোষ্ঠীভুক্ত)। রাইটস _ স্টারভড (পূর্ণসংখ্যা) যেমন আগে বলা হয়েছে, সময়সীমা লেখার চেয়ে পড়া পছন্দ করে। ফলস্বরূপ, এটি এমন পরিস্থিতির দিকে পরিচালিত করতে পারে যেখানে ক্রিয়াকলাপগুলি প্রায় সম্পূর্ণরূপে পড়া হয়। এটি একটি গুরুত্বপূর্ণ সুরযোগ্য হয়ে ওঠে কারণ রাইট _ এক্সপায়ার দীর্ঘায়িত হয় বা সামগ্রিক ব্যান্ডউইথ স্যাচুরেশনের কাছে পৌঁছায়। এটি হ্রাস করা পড়ার ক্রিয়াকলাপের ব্যয়ে লেখার (তুলনামূলকভাবে বলতে গেলে) আরও ব্যান্ডউইথ দেয়। তবে, যদি অ্যাপ্লিকেশনের কাজের চাপ পড়া-ভারী হয় (উদাহরণস্বরূপ বেশিরভাগ এইচটিটিপি বা ডিরেক্টরি সার্ভার) এবং মাঝে মাঝে লেখা হয়, তবে গড় আইওপি-র হ্রাস বিলম্বতা এটি বাড়িয়ে অর্জন করা যেতে পারে (যাতে কোনও লেখার ব্যাচকে সারিতে দাঁড় করানোর আগে আরও বেশি পড়া সম্পাদন করতে হয়)। ফ্রন্ট _ মার্জেস (বূল ইন্টিজার) একটি "ফ্রন্ট মার্জ" হল এমন একটি অপারেশন যেখানে আই/ও সময়সূচী, ছোট অনুরোধগুলিকে কম (বড়) ক্রিয়াকলাপে ঘনীভূত (বা "মার্জ") করার চেষ্টা করে, একটি নতুন ক্রিয়াকলাপ গ্রহণ করবে তারপর সক্রিয় ব্যাচটি পরীক্ষা করবে এবং ক্রিয়াকলাপগুলি সনাক্ত করার চেষ্টা করবে যেখানে শুরুর সেক্টরটি একই বা অন্য ক্রিয়াকলাপের শুরুর সেক্টরের অব্যবহিত পরে। একটি "ব্যাক মার্জ" হল বিপরীত, যেখানে সক্রিয় ব্যাচের শেষ সেক্টরগুলি এমন সেক্টরগুলির জন্য অনুসন্ধান করা হয় যা হয় একই বা বর্তমান ক্রিয়াকলাপের শুরুর সেক্টরগুলির ঠিক পরে। সংযুক্তকরণ ক্রিয়াকলাপগুলিকে বর্তমান ব্যাচ থেকে সক্রিয় ব্যাচে সরিয়ে দেয়, থ্রুপুট বাড়ানোর জন্য "ন্যায্যতা" হ্রাস করে। ফাইলগুলি সাধারণত যেভাবে স্থাপন করা হয় তার কারণে, সামনের সংযুক্তিগুলির তুলনায় পিছনের সংযুক্তিগুলি অনেক বেশি সাধারণ। কিছু কাজের চাপের ক্ষেত্রে, আপনি হয়তো জানেন যে, একত্রিত করার অনুরোধের জন্য যে কোনও সময় ব্যয় করা সময়ের অপচয়। ফ্রন্ট _ মার্জকে 0-তে সেট করলে এই কার্যকারিতাটি নিষ্ক্রিয় করা হয়। ক্যাশেড লাস্ট _ মার্জ ইঙ্গিতের কারণে সামনের সংযুক্তি এখনও ঘটতে পারে, তবে যেহেতু এটি মূলত শূন্য ব্যয়ে আসে, তাই এটি এখনও সঞ্চালিত হয়। এই বুলিয়ান কেবল ফ্রন্ট সেক্টর লুকআপ অক্ষম করে যখন আই/ও সিডিউলার মার্জিং ফাংশন বলা হয়। ডিস্ক মার্জের মোট পরিমাণ প্রতি-ব্লক ডিভাইসে/প্রোক/ডিস্কস্ট্যাটে রেকর্ড করা হয়। অন্যান্য আই/ও সময়সূচী সিএফকিউ সময়সূচী প্রত্যাশিত সময়সূচী নোপ সময়সূচী রেফারেন্স ডিস্ক সময়সূচী অ্যালগরিদম