এই নিবন্ধে আমরা আলোচনা করব কিভাবে লিনাক্সে একটি ডিস্ক বা স্টোরেজ অ্যারের কর্মক্ষমতা পরীক্ষা করা যায়। IOPS (প্রতি সেকেন্ডে ইনপুট/আউটপুট অপারেশন) হল ইনপুট-আউটপুট অপারেশনগুলির সংখ্যা যা একটি ডেটা স্টোরেজ সিস্টেম প্রতি সেকেন্ডে করে (এটি একটি একক ডিস্ক, একটি RAID অ্যারে বা একটি বহিরাগত স্টোরেজ ডিভাইসে একটি LUN হতে পারে)। সাধারণভাবে, IOPS বলতে এমন ব্লকের সংখ্যা বোঝায় যা একটি মিডিয়া থেকে পড়া বা লেখা যায়।
বেশিরভাগ ডিস্ক নির্মাতারা নামমাত্র IOPS মান নির্দিষ্ট করে, কিন্তু আসলে এগুলো নিশ্চিত নয়। একটি প্রকল্প শুরু করার আগে আপনার স্টোরেজ সাবসিস্টেমের কার্যকারিতা বোঝার জন্য, আপনার স্টোরেজ পরিচালনা করতে পারে এমন সর্বাধিক IOPS মানগুলি পাওয়া মূল্যবান৷
স্টোরেজ বেঞ্চমার্কিংয়ের জন্য FIO (নমনীয় I/O) টুল ব্যবহার করা
লিনাক্সে ডিস্ক IOPS কর্মক্ষমতা পরিমাপ করতে, আপনি fio ব্যবহার করতে পারেন (ইপিইএল সংগ্রহস্থলে CentOS/RHEL-এর জন্য টুলটি উপলব্ধ)। সুতরাং, RHEL বা CentOS-এ fio ইনস্টল করতে, yum (dnf) প্যাকেজ ম্যানেজার ব্যবহার করুন:
# yum install epel-release -y
# yum install fio -y
অথবা ডেবিয়ান বা উবুন্টুতে apt-get:
# apt-get install fio
তারপর আপনি পরীক্ষা করতে ডিস্ক সনাক্ত. আপনার ডিস্ক বা LUN যে ডিরেক্টরিতে মাউন্ট করা হয়েছে সেখানে পঠন/লেখার ক্রিয়াকলাপ সম্পাদন করে পরীক্ষাটি করা হয়৷
আসুন বিভিন্ন ডিস্ক লোড পরিস্থিতিতে বিভিন্ন ধরণের ডিস্ক IOPS পারফরম্যান্স পরীক্ষা করি (একটি পরীক্ষার মোড যা আপনি একটি হোস্ট করা অ্যাপের যুক্তি এবং একটি প্রকল্পের সাধারণ পরিকাঠামোর উপর নির্ভর করে নির্বাচন করেন)।
র্যান্ডম রিড/রাইট অপারেশন টেস্ট
পরীক্ষা চালানোর সময়, একটি 8 জিবি ফাইল তৈরি করা হবে। তারপর fio একটি 4KB পড়বে/লিখবে ব্লক (একটি স্ট্যান্ডার্ড ব্লক সাইজ) 75/25% সহ পঠিত এবং লেখার ক্রিয়াকলাপগুলির সংখ্যা দ্বারা এবং কর্মক্ষমতা পরিমাপ করুন। কমান্ডটি নিম্নরূপ:
# fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=fiotest --filename=testfio --bs=4k --iodepth=64 --size=8G --readwrite=randrw --rwmixread=75
আমি একটি অ্যারেতে আমার প্রথম পরীক্ষা চালিয়েছিলাম যা দুটি SSD নিয়ে গঠিত s এবং ভাল ফলাফল পেয়েছে:
- পড়ুন: 3280MiB/s, IOPS avg 83000
- লিখুন: 110MiB/s, IOPS গড় 28000
যেহেতু আমরা একটি সম্মিলিত পঠন/লেখা পরীক্ষা চালিয়েছি, তাই পৃথক পরীক্ষার মান বেশি হবে।
তুলনা করে, আমি একটি SATA-এ কর্মক্ষমতা পরিমাপ করেছি ড্রাইভ:
- পড়ুন: IOPS=430, BW=1.7 MiB/s
- লিখুন: IOPS=143, BW=0.6 MiB/s
অবশ্যই, HDD ফলাফল SSD এর চেয়ে খারাপ।
র্যান্ডম রিড অপারেশন টেস্ট
শুধুমাত্র র্যান্ডম রিড অপারেশনের জন্য ডিস্কের কর্মক্ষমতা পরিমাপ করতে, নিম্নলিখিত কমান্ডটি চালান:
# fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=fiotest --filename=testfio --bs=4k --iodepth=64 --size=8G --readwrite=randread
কমান্ডের চূড়ান্ত অংশটি —readwrite=randread
এ পরিবর্তিত হয়েছে .
যেমনটি আমি আগেই বলেছি, আলাদাভাবে পরিমাপ করলে রিড/রাইট কর্মক্ষমতা বেশি হবে:
READ: IOPS=150k, BW=584MiB/s (612MB/s)
এলোমেলোভাবে লেখা অপারেশন পরীক্ষা
এলোমেলো লেখার ক্রিয়াকলাপের জন্য ডিস্কের কর্মক্ষমতা পরিমাপ করতে, এই কমান্ডটি চালান:
# fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=fiotest --filename=fiotest --bs=4k --iodepth=64 --size=8G --readwrite=randwrite
WRITE: IOPS=84.7k, BW=331MiB/s (347MB/s)
ভাল SSD-তে লেখার অপারেশন পারফরম্যান্সও খুব বেশি। রিড অপারেশন টেস্টের মতো, মিশ্র পরীক্ষার তুলনায় পার্থক্য 200-250 MiB/s এবং 50000 IOPS-এ পৌঁছে।
আপনি যদি প্রস্তুতকারকের অফিসিয়াল ডকুমেন্টেশনগুলি উল্লেখ করেন (এগুলি ইন্টেল এসএসডি), তবে এটি বলা নিরাপদ যে মানগুলি সত্য৷
Fio কনফিগার ফাইলের উদাহরণ
Fio ইন্টারেক্টিভ কমান্ড ব্যবহার করে এবং পরীক্ষার জন্য আগে থেকে প্রস্তুত করা কনফিগারেশন ফাইলগুলির সাথে ডিস্কের কার্যক্ষমতা পরীক্ষা করার অনুমতি দেয়। এই বিকল্পটি ব্যবহার করতে, একটি ফাইল তৈরি করুন:
# nano read.fio
এবং এতে নিম্নলিখিত বিষয়বস্তু যোগ করুন:
[global] rw=randread size=8G filename=/tmp/testfio ioengine=libaio iodepth=4 invalidate=1 direct=1 [bgread] rw=randread iodepth=64
তারপর পরীক্ষা শুরু করুন:
# fio read.fio
পরীক্ষাটি একটি ডিস্কের রিড কর্মক্ষমতা পরিমাপ করবে। লেখার কর্মক্ষমতা পরীক্ষা করতে, নিম্নলিখিত কনফিগারেশন ফাইলটি ব্যবহার করুন:
[global] rw=randwrite size=8G filename=/tmp/testfio ioengine=libaio iodepth=4 invalidate=1 direct=1 [bgwrite] rw=randwrite iodepth=64
আইওপিং ব্যবহার করে ডিস্কের লেটেন্সি পরিমাপ করা
IOPS ছাড়াও, আরেকটি গুরুত্বপূর্ণ প্যারামিটার রয়েছে যা আপনার স্টোরেজের গুণমানকে চিহ্নিত করে:এটি হল লেটেন্সি। লেটেন্সি একটি ইনপুট/আউটপুট অনুরোধ বিলম্ব যা একটি স্টোরেজ অ্যাক্সেসের সময় নির্ধারণ করে (মিলিসেকেন্ডে পরিমাপ করা হয়)। লেটেন্সি যত বেশি হবে, আপনার অ্যাপটিকে আপনার ডিস্ক থেকে ডেটা না পাওয়া পর্যন্ত অপেক্ষা করতে হবে। বিলম্বের মান 20 ms এর বেশি সাধারণ ডেটা স্টোরেজ সিস্টেমের জন্য দুর্বল বলে মনে করা হয়।
লিনাক্সে ডিস্ক লেটেন্সি চেক করতে, ioping টুল ব্যবহার করা হয়:
# yum install ioping -y
# apt-get install ioping
আপনার ডিস্কের জন্য লেটেন্সি পরীক্ষা চালান (20টি অনুরোধ চালানো হয়):
# ioping -c 20 /tmp/
4 KiB <<< /tmp/ (ext4 /dev/md126p5): request=1 time=1.55 ms (warmup) ...................... 4 KiB <<< /tmp/ (ext4 /dev/md126p5): request=19 time=176.3 us (fast) 4 KiB <<< /tmp/ (ext4 /dev/md126p5): request=20 time=356.9 us --- /tmp/ (ext4 /dev/md126p5) ioping statistics --- 19 requests completed in 5.67 ms, 76 KiB read, 3.35 k iops, 13.1 MiB/s generated 20 requests in 19.0 s, 80 KiB, 1 iops, 4.21 KiB/s min/avg/max/mdev = 176.3 us / 298.7 us / 368.9 us / 45.7 us
গড় মান হল 298.7 us (মাইক্রোসেকেন্ড), তাই আমাদের ক্ষেত্রে গড় বিলম্ব হল 0.3 ms , এটা চমৎকার।
লেটেন্সি মান আমাদের-এ নির্দিষ্ট করা যেতে পারে (মাইক্রোসেকেন্ড) বা ms (মিলিসেকেন্ড)। একটি US থেকে একটি ms মান পেতে, এটিকে 1,000 দ্বারা ভাগ করুন।সুতরাং আপনি একটি প্রকল্প চালু করার আগে আপনার সার্ভারে একটি স্টোরেজ লোড পরীক্ষা করতে পারেন এবং সর্বোচ্চ কর্মক্ষমতা মান পরীক্ষা করতে পারেন। যাইহোক, পরীক্ষাটি গ্যারান্টি দেয় না যে আপনার ডিস্ক অ্যারে বা ডিস্ক ক্রমাগত একই কর্মক্ষমতা দেখাবে, তবে এটি একটি প্রকল্পের প্রাথমিক পর্যায়ে পরীক্ষা নেওয়ার জন্য মূল্যবান। এই নিবন্ধে উইন্ডোজে IOPS কিভাবে পরীক্ষা করা যায় তা শিখুন।