উত্তর:
এটি অবশ্যই তুচ্ছ কাজ নয় যা ব্যবহারকারীক্ষেত্রে করা যায় না। ভাগ্যক্রমে, লিনাক্সটিতেcgroup
মেকানিজম এবং এর ব্লকিও নিয়ামক ব্যবহার করে এটি করা সম্ভব ।
সিগ্রুপ সেট আপ করা কোনওরকম বিতরণ নির্দিষ্ট কারণ এটি ইতিমধ্যে মাউন্ট করা হতে পারে বা কোথাও ব্যবহার করা যেতে পারে। এখানে সাধারণ ধারণাটি রয়েছে (ধরে নিলেও আপনার সঠিক কার্নেল কনফিগারেশন রয়েছে):
mount -t tmpfs cgroup_root /sys/fs/cgroup
mkdir -p /sys/fs/cgroup/blkio
mount -t cgroup -o blkio none /sys/fs/cgroup/blkio
এখন আপনার কাছে blkio
কন্ট্রোলার সেট রয়েছে, আপনি এটি ব্যবহার করতে পারেন:
mkdir -p /sys/fs/cgroup/blkio/limit1M/
echo "X:Y 1048576" > /sys/fs/cgroup/blkio/limit1M/blkio.throttle.write_bps_device
এখন আপনার কাছে একটি সিগ্রুপ রয়েছে limit1M
যা বড় / গৌণ সংখ্যার X: Y থেকে 1MB / s পর্যন্ত ডিভাইসে লেখার গতি সীমিত করে । আপনি দেখতে পাচ্ছেন, এই সীমাটি প্রতি ডিভাইস is আপনাকে এখন যা করতে হবে তা হ'ল এই গোষ্ঠীর ভিতরে কিছু প্রক্রিয়া রাখা এবং এটি সীমাবদ্ধ হওয়া উচিত:
echo $PID > /sys/fs/cgroup/blkio/limit1M/tasks
অন্যান্য অপারেটিং সিস্টেমে এটি কীভাবে করা যায় তা আমি জানি না।
dd ... oflag=direct
করবে : প্রত্যাশার মতো কাজ করবে। cgroup v2 এটি পরিচালনা করতে পারে যদি ফাইল সিস্টেম সমর্থন করে। বিশদ: I / O সীমাবদ্ধ করতে cgroups ব্যবহার করে
ionice
থেকে util-linux
আপনি যা চান তেমন কিছু করে।
এটি নিখুঁত IO সীমা নির্ধারণ করে না, এটি IO অগ্রাধিকার এবং 'niceness' নির্ধারণ করে - nice
কোনও প্রক্রিয়া 'CPU- এর অগ্রাধিকারের জন্য যা করতে হবে তার সমান ।
ম্যান পৃষ্ঠা থেকে:
আয়নিস - I / O সময়সূচী শ্রেণি এবং অগ্রাধিকার সেট করুন বা পান বর্ণনা এই প্রোগ্রামটি I / O সময়সূচী শ্রেণি সেট করে বা পায় এবং এর জন্য অগ্রাধিকার দেয় কার্যক্রম. যদি কোনও আর্গুমেন্ট বা জাস্ট-পি দেওয়া না হয় তবে আয়নিস প্রশ্নটি করবে বর্তমান I / O সময়সূচী শ্রেণি এবং সেই প্রক্রিয়াটির জন্য অগ্রাধিকার। কমান্ড দেওয়া হলে, আয়নিস প্রদত্তটি দিয়ে এই কমান্ডটি পরিচালনা করবে আর্গুমেন্ট। যদি কোনও শ্রেণি নির্দিষ্ট না করা থাকে, তবে আদেশটি কার্যকর করা হবে "সেরা প্রচেষ্টা" শিডিয়ুলিং ক্লাসের সাথে। ডিফল্ট অগ্রাধিকার স্তর 4।
CFQ
I / O সময়সূচী নিয়ে কাজ করে। অনেকগুলি আধুনিক সিস্টেমে deadline
একটি ডিফল্টরূপে সক্ষম হয়।
systemd সিগ্রুপ-ম্যানিপুলেটেড প্রসেসগুলির জন্য একটি মোড়ক সরবরাহ করে। সিস্টেম-চালিত (1) ম্যান পৃষ্ঠা থেকে:
নিম্নলিখিত কমান্ডটি আপডেটবিড (8) সরঞ্জামটি আহ্বান করেছে, তবে এটির জন্য ব্লক আইওর ওজন 10-এ কমিয়েছে ব্লকআইওউইট = সম্পত্তি সম্পর্কে আরও তথ্যের জন্য systemd.resource-control (5) দেখুন।
systemd-run -p BlockIOWeight=10 updatedb
অগ্রভাগে প্রোগ্রামটি চালানোর --scope
বিকল্পটি বিবেচনা করুন systemd-run
।
Fche- এর উত্তর একটি খুব ভাল ইঙ্গিত, এর জন্য ধন্যবাদ, যদিও এটি সমস্যার সমাধান সত্যিই করতে পারে না কারণ প্রশ্নটি একটি নির্দিষ্ট ব্যান্ডউইথের মধ্যে একটি প্রক্রিয়া সীমাবদ্ধ করেছিল।
আমি এই জাতীয় কিছু প্রস্তাব করব:
systemd-run -p "IOWriteBandwidthMax=/dev/sdX 1M" updatedb
বা অবচিত সংস্করণ:
systemd-run -p "BlockIOWriteBandwidth=/dev/sdX 1M" updatedb
তবুও এটি প্রশ্নটির সাথে খাপ খায় না কারণ এটি ইতিমধ্যে চলমান প্রক্রিয়ার জন্য ব্যবহার করা যাচ্ছে না তবে এটি অন্য কোনও ক্ষেত্রে এটি সহায়ক।
লিঙ্ক:
echo "X:Y 1073741824" > /sys/fs/cgroup/blkio/blkio.throttle.write_bps_device
করতে হবে এবং আপনি এক্স এবং ওয়াই অর্থাত্ls -l /dev/sda