কীভাবে BFQ শিডিয়ুলার সক্ষম এবং ব্যবহার করবেন?


16

আমি স্রেফ উকুনু (উবুন্টু কার্নেল আপডেট ইউটিলিটি https://doc.ubuntu-fr.org/ubuntu_kernel_upgrade_utility ) ব্যবহার করে উবুন্টু 17.04 এ লিনাক্স কার্নেল সংস্করণ 4.12 ইনস্টল করেছি ।

কথাটি হ'ল, আমি যখন উপলব্ধ আই / ও শিডিউলগুলি পরীক্ষা করি তখন আমি বিএফকিউ এবং কিবার আই / ও শিডিয়ুলারের সন্ধান করতে পারি না:

cat /sys/class/block/sda/queue/scheduler
> noop deadline [cfq]

সুতরাং এই লিনাক্স সংস্করণে নতুন শিডিয়ুলারগুলির একটি কীভাবে ব্যবহার করবেন?

উত্তর:


22

আমি উবুন্টুতে নেই, তবে ফেডোরায় আমি যা করেছি তা আপনাকে সাহায্য করতে পারে।

বিএফকিউ হ'ল ব্লক-এমকিউ (মাল্টি-কুইউ ব্লক আইও কুইউনিং মেকানিজম) শিডিয়ুলার, সুতরাং আপনাকে বুট করার সময় ব্লক-এমকিউ সক্ষম করতে হবে, আপনার / ইত্যাদি / ডিফল্ট / গ্রুব ফাইলটি সম্পাদনা করতে হবে এবং এতে যুক্ত scsi_mod.use_blk_mq=1করতে হবে GRUB_CMDLINE_LINUX, এটি আমার গ্রুব ফাইল, একটি উদাহরণ:

GRUB_TIMEOUT=3
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=false
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="quiet vt.global_cursor_default=0 scsi_mod.use_blk_mq=1"
GRUB_DISABLE_RECOVERY="true"

এর পরে, আপনাকে অবশ্যই নিজের গ্রাব আপডেট করতে হবে। ফেডোরায় আমাদের ব্যবহার করতে হবে sudo grub2-mkconfig -o /path/to/grub.cfgযা বুট পদ্ধতির উপর নির্ভর করে পরিবর্তিত হয় । উবুন্টুতে, আপনি কেবল চালাতে পারবেন:

sudo update-grub

পুনরায় বুট করুন, এবং যদি আপনি এটি পান:

cat /sys/block/sda/queue/scheduler
[mq-deadline] none

সম্ভবত আপনার কার্নেলটি মডিউল হিসাবে বিএফকিউ দিয়ে সংকলিত হয়েছিল এবং কিবারের ক্ষেত্রেও এটি হতে পারে।

sudo modprobe bfq
sudo cat /sys/block/sda/queue/scheduler
[mq-deadline] bfq none

বুট করার সময় আপনি এটি যুক্ত /etc/modules-load.d/bfq.confফাইল যুক্ত করে যুক্ত করতে পারেন bfq

এটি লক্ষণীয় গুরুত্বপূর্ণ যে ব্লক_এমকিউ সক্ষম করার ফলে ব্লক_এমকিউ-র সময়সূচী ব্যবহার করা অসম্ভব হয়ে পড়েছে, সুতরাং আপনি নফ সিএফকিউ এবং নন এমকিউ-র সময়সীমা হারাবেন

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

/etc/udev/rules.d/60-scheduler.rulesএটি উপস্থিত না থাকলে তৈরি করুন এবং যুক্ত করুন:

ACTION=="add|change", KERNEL=="sd*[!0-9]|sr*", ATTR{queue/scheduler}="bfq"

এখানে প্রয়োজন হিসাবে নির্দেশিত হিসাবে প্রয়োজন হিসাবে আপনি বৈশিষ্ট্যটি ব্যবহার করে ওদেব নিয়মে রোটাল (এইচডিডি) এবং নন-রোটেশনাল (এসএসডি) ডিভাইসের মধ্যে পার্থক্য করতে পারেন ATTR{queue/rotational}। সচেতন হতে হবে যে পাওলো Valente, BFQ ডেভেলপার LinuxCon ইউরোপে উল্লেখ করেছিলেন যে, BFQ একটি উন্নততর চেয়ে পছন্দ হতে পারে noopবা deadlineনির্ধারণ কম লেটেন্সি guaranties পরিপ্রেক্ষিতে, এটা কি SSDs জন্য খুব ব্যবহার করার জন্য একটি ভাল উপদেশ তোলে।

পাওলো এর তুলনা: https://www.youtube.com/watch?v=1cjZeaCXIyM&feature=youtu.be

এটি সংরক্ষণ করুন এবং পুনরায় লোড করুন এবং ট্রিগার করুন udev rules:

sudo udevadm control --reload
sudo udevadm trigger

3
আমি কেবল লক্ষ করতে চাই: লিনাক্স <4.15 সহ কম্পিউটারগুলিতে এটি করবেন না যে আপনি প্রত্যাশা করেছেন যে টু-র‌্যাম স্থগিত করতে সক্ষম হবেন; <4.15 সমস্ত আইও পুনরায় শুরুতে ঝুলিয়ে দেবে কারণ তাদের "নিরাপদ এসসিএসআই কোয়েজিং" সমাধানের অভাব রয়েছে।
ইভান কোজিক 23

আপনার কার্নেল ৪.১৪ এও সমস্যা থাকতে পারে যেখানে ব্লক-এমকিউ সক্ষম করা কিছু সিস্টেমের মধ্যে কার্নেলটি লোড করার শুরুতে একটি কার্নেলকে "ওফস" দেবে বলে মনে হয় (এটি কোনও পুরো স্টপ আতঙ্ক নয়, কার্নেলের অভ্যন্তরে কেবল নাল ডিফারেন্স)। আপনি যদি এটি সন্ধান না করেন তবে আপনি এটি মিস করতে পারেন তবে আপনি যদি ভৌত ​​হয়ে থাকেন তবে এটি কোনও কিছু ভেঙে যাওয়ার লক্ষণ হতে পারে।
সিআর

1
আমি কিছুটা আরও সঠিক ইউদেব নিয়ম ব্যবহার করার পরামর্শ দেব। আমি এখানে প্রদর্শিত একটিটিকে চেষ্টা করার পরে, উদেব এমন কিছু ডিভাইসের জন্য শিডিয়ুলার সেট করার চেষ্টা করেছিল যার নাম সেই প্যাটার্নের সাথে মেলে তবে এসসিএসআই ব্লক ডিভাইস নয় যা বিএফকিউ শিডিয়ুলার ব্যবহার করতে পারে। আমি যে নিয়মটি শেষ করেছিলাম তা হ'ল: ACTION=="add|change", SUBSYSTEM=="block", DRIVERS=="sd|sr", ATTR{queue/scheduler}!="bfq", ATTR{queue/scheduler}="bfq"এটি ডিভাইসের নামের সাথে প্যাটার্নের মিলটি এড়ায়, যা মিলাকে আরও সঠিক করে তোলে। এটি পার্টিশন ডিভাইসগুলির সাথে মেলে না কারণ তাদের কাছে "সারি / সময়সূচী" বৈশিষ্ট্য নেই।
ড্যান মোল্ডিং

3
এছাড়াও লক্ষণীয় গুরুত্বপূর্ণ যে কার্নেলগুলি 4.15-4.16 একটি দুর্দান্ত গুরুতর বাগ দ্বারা ভুগছে যেখানে বিএফকিউ ব্যবহার করার সময় একটি ড্রাইভের পার্টিশন স্কিম আপডেট করার ফলে সম্পূর্ণ আই / ও লক-আপ হতে পারে। সিএফ .: lkML.org/lkML/2017/12/1/80
গ্লুটানাইমেট

1

দুর্দান্ত রোমুলোপিডনেটি উত্তরটি প্রসারিত করতে :

আপনি পরীক্ষা করতে পারেন, যদি বিএফকিউ শিডিয়ুলারটি ইউডেভ PROGRAM=="/bin/grep -E -q '(^|[[:space:]])bfq($|[[:space:]])' '$sys$devpath/queue/scheduler'"নিয়ম ব্যবহার করে নির্দিষ্ট ডিভাইসে আসলে পাওয়া যায় । এটি কার্যকরভাবে প্রতিস্থাপন করবে DRIVERS=="sd|sr"এবং যদি কেউ ভুলে যায় তবে কেবল আগুন নয়scsi_mod.use_blk_mq=1

তুচ্ছ বস্তু:

  • PROGRAM- কোনও মিল আছে কিনা তা নির্ধারণের জন্য একটি প্রোগ্রাম কার্যকর করুন; প্রোগ্রামটি যদি সফলভাবে ফিরে আসে তবে কীটি সত্য; যদি কোনও নিখুঁত পাথ দেওয়া না হয় তবে প্রোগ্রামটি / লিবিব / উদেদে বাস করার আশা করা হচ্ছে।
  • $sys- sysfs মাউন্ট পয়েন্ট ( /sys)।
  • $devpath - ডিভাইসের ডেপথ (/ ডিভাইস / পিসিআই / ...)।
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.