উত্তর:
আমি সাধারণত hdparm
আমার এইচডিডি এর মানদণ্ডে ব্যবহার করি। আপনি প্রত্যক্ষ পাঠ এবং ক্যাশেড পঠন উভয়কেই মাপদণ্ড করতে পারেন। গড় মান প্রতিষ্ঠিত করতে আপনি কয়েকবার কমান্ডগুলি চালাতে চান।
এখানে সরাসরি পড়া।
$ sudo hdparm -t /dev/sda2
/dev/sda2:
Timing buffered disk reads: 302 MB in 3.00 seconds = 100.58 MB/sec
এবং এখানে একটি ক্যাশেড পঠন।
$ sudo hdparm -T /dev/sda2
/dev/sda2:
Timing cached reads: 4636 MB in 2.00 seconds = 2318.89 MB/sec
-t Perform timings of device reads for benchmark and comparison
purposes. For meaningful results, this operation should be repeated
2-3 times on an otherwise inactive system (no other active processes)
with at least a couple of megabytes of free memory. This displays
the speed of reading through the buffer cache to the disk without
any prior caching of data. This measurement is an indication of how
fast the drive can sustain sequential data reads under Linux, without
any filesystem overhead. To ensure accurate measurements, the
buffer cache is flushed during the processing of -t using the
BLKFLSBUF ioctl.
-T Perform timings of cache reads for benchmark and comparison purposes.
For meaningful results, this operation should be repeated 2-3
times on an otherwise inactive system (no other active processes)
with at least a couple of megabytes of free memory. This displays
the speed of reading directly from the Linux buffer cache without
disk access. This measurement is essentially an indication of the
throughput of the processor, cache, and memory of the system under
test.
আমিও dd
এই ধরণের পরীক্ষার জন্য ব্যবহার করেছি। আমি উপরের কমান্ডটিতে একটি পরিবর্তন করব যা হ'ল আপনার কমান্ডের শেষে এই বিটটি যুক্ত করা ; rm ddfile
,।
$ time sh -c "dd if=/dev/zero of=ddfile bs=8k count=250000 && sync"; rm ddfile
ddfile
কমান্ডটি শেষ হওয়ার পরে এটি সরিয়ে ফেলবে । দ্রষ্টব্য: ddfile
এমন একটি ক্ষণস্থায়ী ফাইল যা আপনার রাখার দরকার নেই, এটি আপনার ফাইলের এইচডিডি বোঝার নিচে রাখার সময় dd
( of=ddfile
) লিখতে থাকে।
আপনার এইচডিডি'র আরও কঠোর পরীক্ষার প্রয়োজন হলে আপনি বনি ++ ব্যবহার করতে পারেন ।
hdparm
দ্রুত বেঞ্চমার্কের জন্যও পছন্দ করি । একমাত্র ক্ষতি এটি হ'ল ব্যান্ডমার্কগুলি কেবলমাত্র ব্যান্ডউইথটি পড়ে এবং অনেক ধরণের ব্লক ডিভাইসগুলির (যেমন RAID, iSCSI) পারফরম্যান্স অত্যন্ত অসামান্য হতে পারে। একই বক্সে 'আগে' এবং 'পরে' পারফরম্যান্স তুলনা করার জন্য, dd
খুব ভাল কাজ করে।
hdparm
+ dd
বা কেবল bonnie++
বা সমস্ত 3 ব্যবহার করতে হয়
(এটি একটি খুব জনপ্রিয় প্রশ্ন - আপনি https://stackoverflow.com/q/1198691 , https://serverfault.com/q/219739/203726 এবং https://askubuntu.com/q এ এর বিভিন্নতা দেখতে পারেন / 87035/740413 )
[ডিডির চেয়ে] [বেঞ্চমার্ক ডিস্ক] এর থেকে আরও ভাল পদ্ধতি কি আছে?
হ্যাঁ তবে তারা চালাতে আরও সময় নিবে এবং ফলাফলগুলি কীভাবে ব্যাখ্যা করতে হবে তার জ্ঞানের প্রয়োজন হবে - এমন একক সংখ্যা নেই যা আপনাকে একসাথে সব কিছু বলে দেবে কারণ নিম্নলিখিত পরীক্ষার ধরণটি আপনার চালানো উচিত:
ইত্যাদি।
শীর্ষে চালানো সবচেয়ে সহজ এবং আরও নিবিড়তর আরও নিখুঁত / আরও ভালতর কাছাকাছি থাকা সরঞ্জামগুলির একটি সংক্ষিপ্ত তালিকা:
গ্রেগ - জেনসের FIO কোড পান। এটি প্রকৃত সিউডো-এলোমেলো বিষয়বস্তু লেখার পাশাপাশি কাজগুলি ঠিক করে দেয় যা ডিস্কটি কিছু "ডি-ডুপ্লিকেশন" (ওরফে "বেঞ্চমার্কের জন্য অনুকূলিত করে) করে কিনা তা দেখায়:
[ https://github.com/axboe/fio/ ]
অন্য যে কোনও কিছু সন্দেহজনক - বোনি বা অন্যান্য traditionalতিহ্যবাহী সরঞ্জামগুলি ভুলে যান।
উত্স: মন্তব্য লিনাস টোরভাল্ডস দ্বারা গ্রেগ Kroah-Hartman করতে গুগল প্লাস রেখে ।
আপনি যদি এই সমস্ত পড়তে বিরক্ত না হন তবে আমি কেবল IOPS সরঞ্জামটি সুপারিশ করব । এটি আপনাকে ব্লকের আকারের উপর নির্ভর করে বাস্তব-বিশ্বের গতি বলবে।
অন্যথায় - আইও বেঞ্চমার্ক করার সময় আমি নীচের জিনিসগুলি দেখব:
সিপিইউ ব্যবহার
আপনি কোন ব্লক সাইজটি ব্যবহার করবেন : আপনি যদি / 1 ডিস্ক থেকে 1 জিবি পড়তে / লিখতে চান তবে আপনি যদি I / O অপারেশন করেন তবে তা দ্রুত হবে be তবে যদি আপনার অ্যাপ্লিকেশনটিতে হার্ড-ডিস্ক্কে 512 বাইট খণ্ডে অ-অনুক্রমিক টুকরো (র্যান্ডম আই / ও বলা হয় যদিও এটি এলোমেলো নয়) লিখতে হয় তবে এটি আলাদাভাবে দেখাবে। এখন, ডাটাবেসগুলি প্রকৃতির কারণে লগ ভলিউমের জন্য ডেটা ভলিউমের জন্য এলোমেলো I / O এবং ক্রমযুক্ত I / O করবে । সুতরাং, প্রথমে আপনাকে কী পরিমাপ করতে চান তা পরিষ্কার হওয়া দরকার। আপনি যদি লিনাক্স ইনস্টল করতে চান তার চেয়ে আলাদা যে বড় ভিডিও ফাইলগুলি অনুলিপি করতে চান।
এই ব্লকসাইজটি আপনার দ্বারা চালিত আই / ও ক্রিয়াকলাপের প্রভাবকে প্রভাবিত করছে। যদি আপনি উদাহরণস্বরূপ 8 টি ক্রমবর্ধমান পঠিত (বা লিখুন, কেবল মিশ্রিত নয়) অপারেশন করেন তবে ওএসের আই / ও শিডিয়ুলার তাদের একীভূত করবে। যদি এটি না হয় তবে নিয়ামকের ক্যাশে একীভূত করবে do 512 বাইট বা একটি 4096 বাইট অংশের 8 টি ক্রমিক ব্লক পড়লে কার্যত কোনও পার্থক্য নেই। একটি ব্যতিক্রম - আপনি যদি সরাসরি সিঙ্ক সিও পরিচালনা করেন এবং আপনি পরবর্তী 512 বাইটের অনুরোধ করার আগে 512 বাইটের জন্য অপেক্ষা করেন। এই ক্ষেত্রে, ব্লকের আকার বাড়ানো ক্যাশে যুক্ত করার মতো।
এছাড়াও আপনার সচেতন হওয়া উচিত যে সিঙ্ক এবং অ্যাসিঙ্ক আইও রয়েছে: সিঙ্ক আইও দিয়ে আপনি বর্তমান আইটি রিটার্নের আগে পরবর্তী আইও অনুরোধটি প্রকাশ করবেন না। অ্যাসিঙ্ক আইও দিয়ে আপনি অনুরোধ করতে পারেন উদাহরণস্বরূপ 10 অংশ তথ্য এবং তারপরে সেগুলি অপেক্ষা করার জন্য। বিচ্ছিন্ন ডাটাবেস থ্রেডগুলি সাধারণত লগের জন্য সিঙ্ক আইও এবং ডেটার জন্য অ্যাসিঙ্ক আইও ব্যবহার করবে। আইওপিএস সরঞ্জাম 512 বাইট থেকে শুরু করে সমস্ত প্রাসঙ্গিক ব্লক মাপ পরিমাপ করে সেটি যত্ন করে।
আপনি কি পড়বেন বা লিখবেন : সাধারণত লেখার চেয়ে পড়া দ্রুত হয়। তবে নোট করুন যে ক্যাচিং পড়া এবং লেখার জন্য বেশ আলাদাভাবে কাজ করে:
লেখকদের জন্য, ডেটাটি নিয়ামকের কাছে হস্তান্তর করা হবে এবং যদি এটি ক্যাশে হয় তবে ক্যাশে পূর্ণ না হলে ডেটা ডিস্কে থাকার আগে তা স্বীকার করবে। আইওজোন সরঞ্জামটি ব্যবহার করে আপনি ক্যাশে এফেক্টস (সিপিইউ ক্যাশে প্রভাব এবং বাফার ক্যাশে প্রভাব) এর প্লেটিয়াসের সুন্দর গ্রাফগুলি আঁকতে পারেন। ক্যাশে কম দক্ষ হয়ে ওঠে আরও বেশি লেখা হয়েছে।
পাঠকদের জন্য, পড়ার ডেটা প্রথম পড়ার পরে ক্যাশে রাখা হয়। প্রথম পাঠগুলি সবচেয়ে দীর্ঘ সময় নেয় এবং ক্যাটাইম আপটাইমের সময় আরও বেশি কার্যকর হয়। উল্লেখযোগ্য ক্যাশে হ'ল সিপিইউ ক্যাশে, ওএস'র ফাইল সিস্টেম ক্যাশে, আইও নিয়ন্ত্রকের ক্যাশে এবং স্টোরেজের ক্যাশে। IOPS সরঞ্জামটি কেবল পঠনযোগ্য পদক্ষেপগুলি পরিমাপ করে। এটি এটিকে "পুরো জায়গা জুড়ে পড়তে" অনুমতি দেয় এবং আপনি পড়ার পরিবর্তে এটি লিখতে চান না।
আপনি কতগুলি থ্রেড ব্যবহার করবেন : আপনি যদি একটি থ্রেড ব্যবহার করেন ( ডিস্ক বেঞ্চমার্কের জন্য ডিডি ব্যবহার করে ) আপনি সম্ভবত বেশ কয়েকটি থ্রেডের চেয়ে আরও খারাপ পারফরম্যান্স পাবেন। আইওপিএস সরঞ্জাম এটিকে বিবেচনায় নেয় এবং বিভিন্ন থ্রেডে পড়ে reads
আপনার জন্য প্রচ্ছন্নতা কতটা গুরুত্বপূর্ণ : ডাটাবেসের দিকে তাকানো, আইও লেটেন্সি অত্যন্ত গুরুত্বপূর্ণ হয়ে ওঠে। যে কোনও সন্নিবেশ / আপডেট / মুছে ফেলা এসকিউএল কমান্ড স্বীকৃত হওয়ার আগে কমিট করার জন্য ডাটাবেস জার্নালে (ডাটাবেস লিঙ্গোতে "লগ") লেখা হবে be এর অর্থ সম্পূর্ণ ডাটাবেসটি এই আইও অপারেশনটি সম্পূর্ণ হওয়ার জন্য অপেক্ষা করছে। আমি এখানে দেখিয়েছি কীভাবে আইওস্ট্যাট সরঞ্জামটি ব্যবহার করে গড় অপেক্ষা সময়ের (অপেক্ষা) মাপতে হবে ।
আপনার জন্য সিপিইউর ব্যবহার কতটা গুরুত্বপূর্ণ : আপনার সিপিইউ সহজেই আপনার অ্যাপ্লিকেশনটির পারফরম্যান্সের জন্য বাধা হয়ে দাঁড়াতে পারে। এক্ষেত্রে আপনাকে অবশ্যই জানতে হবে প্রতি বাইট পড়া / লিখিত প্রতি সিপিইউ চক্রটি কতটা পোড়া হয় এবং সেই দিকটিতে অনুকূলিত হয়। এর অর্থ আপনার পরিমাপের ফলাফলের উপর নির্ভর করে পিসিআই ফ্ল্যাশ মেমরির পক্ষে / বিপক্ষে সিদ্ধান্ত নেওয়া হতে পারে। আবার আইওস্ট্যাট সরঞ্জামটি আপনার আইও অপারেশনগুলির দ্বারা আপনাকে সিপিইউ ব্যবহারের বিষয়ে মোটামুটি অনুমান দিতে পারে।
আপনি যদি PostgreSQL ইনস্টল করে থাকেন তবে আপনি তাদের দুর্দান্ত pg_test_fsync বেঞ্চমার্ক ব্যবহার করতে পারেন । এটি মূলত আপনার লেখার সিঙ্ক কার্যকারিতা পরীক্ষা করে।
উবুন্টুতে আপনি এটি এখানে পাবেন: /usr/lib/postgresql/9.5/bin/pg_test_fsync
এটি সম্পর্কে দুর্দান্ত বিষয়টি হল এন্টারপ্রাইজ এসএসডি অতিরিক্ত মূল্যমানের জন্য কেন এই সরঞ্জামটি আপনাকে দেখায় $
postgresql-contrib
প্যাকেজে উপলব্ধ ।
আপনি ব্যবহার করতে পারেন fio
- মাল্টিথ্রেডেড IO প্রজন্মের সরঞ্জাম । এটি বেশ কয়েকটি বিতরণ দ্বারা প্যাকেজ করা হয়েছে, যেমন ফেডোরা 25, ডেবিয়ান এবং ওপেনসিএসডাব্লু।
ফাইও সরঞ্জামটি খুব নমনীয়, এটি বিভিন্ন আইও দৃশ্যের বেঞ্চমার্ক করতে সহজেই ব্যবহার করা যেতে পারে - সহকারীগুলি সহ। প্যাকেজটি কয়েকটি উদাহরণ কনফিগারেশন ফাইল (সিএফ। উদাহরণস্বরূপ /usr/share/doc/fio/examples
) নিয়ে আসে। এটি জিনিসগুলিকে যথাযথভাবে পরিমাপ করে, যেমন এটি কিছু পরিসংখ্যানের জন্য স্ট্যান্ডার্ড বিচ্যুতি এবং পরিমাণগত পরিসংখ্যানও মুদ্রণ করে। কিছু অন্যান্য জনপ্রিয় বেঞ্চমার্কিং সরঞ্জামগুলির পক্ষে যত্নশীল নয়।
একটি সাধারণ উদাহরণ (সাধারণ দৃশ্যের একটি ধারা: অনুক্রমিক / এলোমেলো এক্স পড়ুন / লিখুন):
$ cat fio.cfg
[global]
size=1g
filename=/dev/sdz
[randwrite]
rw=randwrite
[randread]
wait_for=randwrite
rw=randread
size=256m
[seqread]
wait_for=randread
rw=read
[seqwrite]
wait_for=seqread
rw=write
কল:
# fio -o fio-seagate-usb-xyz.log fio.cfg
$ cat fio-seagate-usb-xyz.log
[..]
randwrite: (groupid=0, jobs=1): err= 0: pid=11858: Sun Apr 2 21:23:30 2017
write: io=1024.0MB, bw=16499KB/s, iops=4124, runt= 63552msec
clat (usec): min=1, max=148280, avg=240.21, stdev=2216.91
lat (usec): min=1, max=148280, avg=240.49, stdev=2216.91
clat percentiles (usec):
| 1.00th=[ 2], 5.00th=[ 2], 10.00th=[ 2], 20.00th=[ 7],
| 30.00th=[ 10], 40.00th=[ 11], 50.00th=[ 11], 60.00th=[ 12],
| 70.00th=[ 14], 80.00th=[ 16], 90.00th=[ 19], 95.00th=[ 25],
| 99.00th=[ 9408], 99.50th=[10432], 99.90th=[21888], 99.95th=[38144],
| 99.99th=[92672]
bw (KB /s): min= 7143, max=371874, per=45.77%, avg=15104.53, stdev=32105.17
lat (usec) : 2=0.20%, 4=15.36%, 10=6.58%, 20=69.35%, 50=6.07%
lat (usec) : 100=0.49%, 250=0.07%, 500=0.01%, 750=0.01%
lat (msec) : 4=0.01%, 10=1.20%, 20=0.54%, 50=0.08%, 100=0.03%
lat (msec) : 250=0.01%
cpu : usr=1.04%, sys=4.79%, ctx=4977, majf=0, minf=11
IO depths : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%
submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
issued : total=r=0/w=262144/d=0, short=r=0/w=0/d=0, drop=r=0/w=0/d=0
latency : target=0, window=0, percentile=100.00%, depth=1
randread: (groupid=0, jobs=1): err= 0: pid=11876: Sun Apr 2 21:23:30 2017
read : io=262144KB, bw=797863B/s, iops=194, runt=336443msec
[..]
bw (KB /s): min= 312, max= 4513, per=15.19%, avg=591.51, stdev=222.35
[..]
নোট করুন যে [global]
বিভাগটির গ্লোবাল ডিফল্ট রয়েছে যা অন্যান্য বিভাগগুলি দ্বারা ওভার্রাইড করা যেতে পারে। প্রতিটি বিভাগ একটি কাজ বর্ণনা করে, বিভাগের নামটি কাজের নাম এবং নিখরচায় চয়ন করা যেতে পারে। ডিফল্টরূপে, বিভিন্ন কাজ সমান্তরালভাবে শুরু হয়, সুতরাং উপরের উদাহরণটি স্পষ্টভাবে wait_for
কী দিয়ে কাজ সম্পাদনকে সিরিয়ালাইজ করে
। এছাড়াও, ফাইও 4 কিবি-র একটি ব্লক আকার ব্যবহার করে - যা পরিবর্তন করা যায়। উদাহরণটি পড়ার জন্য এবং লেখার কাজগুলির জন্য কাঁচা ডিভাইসটি সরাসরি ব্যবহার করে, সুতরাং নিশ্চিত করুন যে আপনি সঠিক ডিভাইসটি ব্যবহার করেছেন use সরঞ্জামটি বিদ্যমান ফাইল সিস্টেমগুলিতে একটি ফাইল / ডিরেক্টরি ব্যবহার করে সমর্থন করে।
hdparm
উপযোগ একটি খুব সহজ পঠিত বেঞ্চমার্ক, যেমন প্রদান করে:
# hdparm -t -T /dev/sdz
এটি ফাইওর মতো একটি অত্যাধুনিক বেঞ্চমার্কিং সরঞ্জামের প্রতিস্থাপন নয়, এটি কেবল প্রথম কার্যকারিতা পরীক্ষার জন্য ব্যবহার করা উচিত। উদাহরণস্বরূপ, বাহ্যিক ইউএসবি 3 ড্রাইভটি ভুলভাবে ইউএসবি 2 ডিভাইস হিসাবে স্বীকৃত কিনা তা পরীক্ষা করতে (আপনি তখন ~ 100 মাইবি / এস বনাম ~ 30 মাইবি / সেটের হারগুলি দেখতে পাবেন)।
হিসাবে এখানে উল্লেখ এখানে , আপনি ব্যবহার করতে পারেন gnome-disks
(যদি আপনি, Gnome ব্যবহার করুন)।
আপনি যে ড্রাইভটি পরীক্ষা করতে চান তাতে ক্লিক করুন এবং "অতিরিক্ত পার্টিশন বিকল্পগুলি" (চাকা) এ ক্লিক করুন। তারপরে Benchmark Partition
। আপনি এমবি / সেকেন্ডে গড় পঠন / লেখার এবং মিলিসেকেন্ডে গড় অ্যাক্সেসের সময় পাবেন। আমি খুব আরামদায়ক পেয়েছি।
এটি সামান্য অশোধিত, তবে এটি একটি চিমটিতে কাজ করে:
find <path> -type f -print0 | cpio -0o >/dev/null
আপনি সমস্ত প্রযুক্তি /lib
এবং সমস্ত /usr/bin
ফাইল ক্যাশে সহ এই কৌশলটি দিয়ে কিছু আকর্ষণীয় কাজ করতে পারেন । আপনি একটি বেঞ্চমার্কিং প্রচেষ্টার অংশ হিসাবে এটি ব্যবহার করতে পারেন:
find / -xdev -type f -print0 |
sort -R --from0-file=- |
timeout "5m" cpio -0o >/dev/null
মূলের সমস্ত ফাইলের নাম পাওয়া যায়, এলোমেলোভাবে বাছাই করা হয় এবং এটিকে 1 মিনিটের জন্য ক্যাশে অনুলিপি করে। সিপিও থেকে আউটপুট আপনাকে জানায় যে কতগুলি ব্লক অনুলিপি করা হয়েছিল। গড় প্রতি মিনিটে ব্লক পেতে 3 বার পুনরাবৃত্তি করুন। (দ্রষ্টব্য, সন্ধান / বাছাইয়ের ক্রিয়াকলাপটি অনেক বেশি সময় নিতে পারে - অনুলিপিটির থেকে অনেক বেশি দীর্ঘ split
।