ডিস্ক লোড: iostat ও iotop
মেশিন ডিস্ক-বাউন্ড কি না, ঠিক কে লিখছে এবং সংখ্যাগুলোকে আপনার VPS টিয়ারের স্পিড লিমিটের সাথে কীভাবে সম্পর্কিত করবেন।
আপডেট: ২৩ আগস্ট, ২০২৬
ডিস্কই হলো “সবকিছু ধীর কিন্তু CPU অলস” সমস্যার সবচেয়ে সাধারণ কারণ। প্রসেসগুলো I/O-এর জন্য অপেক্ষা করে বসে থাকে, লোড অ্যাভারেজ বাড়তে থাকে, অথচ htop-এ প্রায় শূন্য CPU% দেখায়। চলুন দেখি কীভাবে সংখ্যায় এটি বোঝা যায়।
আপনাকে যা বরাদ্দ করা হয়েছে
নোডগুলোর ডিস্ক NVMe, তবে গতি টিয়ার অনুযায়ী সীমিত: লেখা — প্রতি কোর 60 MB/s, তবে 60-এর কম নয় এবং 400 MB/s-এর বেশি নয়; পড়ার গতি লেখার দ্বিগুণ। সীমার উপরে 30 সেকেন্ডের জন্য তিন গুণ বেশি বার্স্ট অনুমোদিত — একটি আর্কাইভ খুলতে বা প্রজেক্ট বিল্ড করতে যথেষ্ট, কিন্তু একটানা এক টেরাবাইট আপলোড করতে নয়।
| টিয়ার | কোর | লেখা, MB/s | পড়া, MB/s |
|---|---|---|---|
| VDS-1 | 1 | 60 | 120 |
| VDS-2 | 2 | 120 | 240 |
| VDS-3 | 4 | 240 | 480 |
| VDS-4 | 6 | 360 | 720 |
| VDS-5 এবং VDS-6 | 8 এবং 10 | 400 | 800 |
আপনার পরিমাপ যদি ঠিক এই সংখ্যাগুলোতে পৌঁছায়, তাহলে আপনি সীমায় পৌঁছে গেছেন — কিছু ভাঙেনি। এর বাইরে শুধু পরের টিয়ারে যাওয়াই সাহায্য করে।
iostat: বড় ছবি
apt install -y sysstat # Debian, Ubuntu
dnf install -y sysstat # AlmaLinux, CentOS Stream
iostat -xz 2
কমান্ডটি প্রতি দুই সেকেন্ডে একটি স্ন্যাপশট দেখায়। প্রথম আউটপুটটি বুট হওয়ার পর থেকে গড় — এটি বাদ দিন। vda বা sda লাইনটি দেখুন:
r/s,w/s— প্রতি সেকেন্ডে পড়া ও লেখার অপারেশন।rkB/s,wkB/s— মেগাবাইট, 1024 দিয়ে ভাগ করুন। উপরের টেবিলের সাথে তুলনা করুন।await— মিলিসেকেন্ডে প্রতি অপারেশনের গড় অপেক্ষা। এক অঙ্কের সংখ্যা স্বাভাবিক; দশ ও শতক মানে একটি কিউ তৈরি হয়েছে।%util— ডিস্ক কতটা ব্যস্ত। একটানা 90–100 % মানে আপনি দেয়ালে ঠেকে গেছেন।
vmstat 2-ও কাজে লাগে: wa কলামটি (io wait) শতাংশে দেখায় CPU কতটা সময় শুধু ডিস্কের জন্য অপেক্ষা করছে।
iotop: আসলে কে লিখছে
apt install -y iotop && iotop -oPa
-o শুধু সক্রিয় প্রসেস দেখায়, -P থ্রেডের বদলে প্রসেস দেখায়, -a চালু হওয়ার পর থেকে জমা হওয়া ভলিউম দেখায়। এক মিনিট নজর রাখলেই আসল অপরাধী ধরা পড়বে: সাধারণত একটি ডেটাবেস, একটি লগ কালেক্টর বা একটি ব্যাকআপ।
ইন্টারঅ্যাকটিভ UI ছাড়া একবার যাচাই:
iotop -boPan 3 | head -20
যা পাবেন তা নিয়ে কী করবেন
- জার্নাল লিখছে। এর আকার সীমিত করুন:
journalctl --vacuum-size=200Mএবং/etc/systemd/journald.conf-এSystemMaxUse=200M। আরও জানতে দেখুন systemd journals। - ডেটাবেস লিখছে। ইনডেক্স না থাকার কারণে কোনো ফুল টেবিল স্ক্যান চলছে কি না, এবং বাফার খুব ছোট সেট করা আছে কি না — যার ফলে সবকিছু ডিস্কে যাচ্ছে — তা যাচাই করুন।
- কাজের সময়ে ব্যাকআপ বা rsync। গতি সীমিত করুন:
rsync --bwlimit=20M; আর্কাইভিংয়ের জন্যionice -c3 nice -n19 tar ...ব্যবহার করুন, যাতে টাস্কটি ছেড়ে দেয়। - Swap। ডিস্ক যদি পেজিং নিয়ে ব্যস্ত থাকে, সমস্যা ডিস্কে নয়, মেমরিতে — পড়ুন Memory and swap।
সাধারণ ভুল
dd এবং conv=fdatasync দিয়ে গতি মাপা এবং একবার চালিয়েই সিদ্ধান্তে পৌঁছানো: প্রথম কয়েক সেকেন্ড বার্স্টে চলে এবং অতিরঞ্জিত ফলাফল দেয়। সঠিক পদ্ধতি আছে Benchmarking disk and network speed-এ।
ডিস্ক ভরে গেলেও “সবকিছু ধীর” মনে হয়: খালি জায়গা নেই, কোনো সার্ভিস টেম্পোরারি ফাইল লিখতে পারে না এবং হ্যাং করে। প্রথমে
df -hদেখুন — এক সেকেন্ড লাগে।