হার্ড ড্রাইভের পারফরম্যান্স কীভাবে চেক করবেন (হয় টার্মিনাল বা জিইউআই হয়ে)। লেখার গতি। পড়ার গতি। ক্যাশের আকার এবং গতি। এলোমেলো গতি।
হার্ড ড্রাইভের পারফরম্যান্স কীভাবে চেক করবেন (হয় টার্মিনাল বা জিইউআই হয়ে)। লেখার গতি। পড়ার গতি। ক্যাশের আকার এবং গতি। এলোমেলো গতি।
উত্তর:
hdparm
শুরু করার জন্য একটি ভাল জায়গা।
sudo hdparm -Tt /dev/sda
/dev/sda:
Timing cached reads: 12540 MB in 2.00 seconds = 6277.67 MB/sec
Timing buffered disk reads: 234 MB in 3.00 seconds = 77.98 MB/sec
sudo hdparm -v /dev/sda
পাশাপাশি তথ্য দেবে।
dd
লেখার গতিতে আপনাকে তথ্য দেবে।
ড্রাইভ একটি ফাইল সিস্টেম (এবং না থাকে কেবলমাত্র তখনই ), ব্যবহার of=/dev/sda
।
অন্যথায়, এটি / tmp এ মাউন্ট করুন এবং লিখুন তারপরে পরীক্ষার আউটপুট ফাইলটি মুছুন।
dd if=/dev/zero of=/tmp/output bs=8k count=10k; rm -f /tmp/output
10240+0 records in
10240+0 records out
83886080 bytes (84 MB) copied, 1.08009 s, 77.7 MB/s
gnome-disks
আপনি কি আরও কিছু চান?
/dev/urandom
পাশাপাশি /dev/zero
ইনপুটগুলিও সুপারিশ করবো কারণ dd
ডেটা সংকোচনের ফলে লেখার গতিতে ব্যাপক প্রভাব ফেলতে পারে।
/tmp
ফাইলসিস্টেম প্রায়ই এই দিন ramdisk এবং ব্যবহার করছে। সুতরাং লিখতে /tmp
আপনার ডিস্কের সাবসিস্টেমটি নয়, আপনার মেমরির পরীক্ষা করা হবে বলে মনে হচ্ছে।
সুমিনেন ঠিক আছে, আমাদের এক ধরণের সিঙ্ক ব্যবহার করা উচিত; তবে একটি সহজ পদ্ধতি আছে, কনফারেন্স = fdatasync কাজটি করবে:
dd if=/dev/zero of=/tmp/output conv=fdatasync bs=384k count=1k; rm -f /tmp/output
1024+0records in
1024+0 records out
402653184 bytes (403 MB) copied, 3.19232 s, 126 MB/s
আমি এটি ব্যবহারের পরামর্শ দেব না /dev/urandom
কারণ এটি সফ্টওয়্যার ভিত্তিক এবং শূকর হিসাবে ধীর। র্যামডিস্কে এলোমেলো তথ্য নেওয়া ভাল। হার্ড ডিস্কে টেস্টিং এলোমেলো কিছু যায় আসে না, কারণ প্রতিটি বাইট যেমন হয় তেমন লেখা হয় (এসএসডি তেও ডিডি সহ)। তবে আমরা যদি খাঁটি শূন্য বা এলোমেলো ডেটা দিয়ে কাটা জেডএফএস পুলটি পরীক্ষা করি তবে পারফরম্যান্সের বিশাল পার্থক্য রয়েছে।
আরেকটি দৃষ্টিকোণ হতে হবে সিঙ্ক সময় অন্তর্ভুক্তি; সমস্ত আধুনিক ফাইল সিস্টেম ফাইল অপারেশনে ক্যাশিং ব্যবহার করে।
সত্যই ডিস্কের গতি মাপার জন্য এবং মেমরিটি নয়, ক্যাচিংয়ের প্রভাব থেকে মুক্তি পাওয়ার জন্য আমাদের অবশ্যই ফাইল সিস্টেম সিঙ্ক করতে হবে। এটি সহজেই করা যায়:
time sh -c "dd if=/dev/zero of=testfile bs=100k count=1k && sync"
এই পদ্ধতির সাহায্যে আপনি আউটপুট পাবেন:
sync ; time sh -c "dd if=/dev/zero of=testfile bs=100k count=1k && sync" ; rm testfile
1024+0 records in
1024+0 records out
104857600 bytes (105 MB) copied, 0.270684 s, 387 MB/s
real 0m0.441s
user 0m0.004s
sys 0m0.124s
সুতরাং ডিস্কের ডেটরেটটি কেবল 104857600 / 0.441 = 237772335 বি / এস -> 237 এমবি / গুলি
এটি ক্যাশিংয়ের তুলনায় 100MB / s কম।
শুভ বেঞ্চমার্কিং,
আপনি যদি ডিস্কটি রিয়েল-টাইম পড়ার এবং লেখার নিরীক্ষণ করতে চান তবে আপনি আইটপ সরঞ্জামটি ব্যবহার করতে পারেন ।
কোনও নির্দিষ্ট অ্যাপ্লিকেশন বা কাজের জন্য কোনও ডিস্ক কীভাবে কার্য সম্পাদন করে সে সম্পর্কে সঠিক তথ্য পেতে এটি দরকারী। আউটপুট আপনাকে প্রতি প্রক্রিয়া অনুযায়ী পড়ার / লেখার গতি এবং সার্ভারের জন্য মোট পঠন / লেখার গতি দেখাবে, অনেকটা এরকম top
।
আইওটপ ইনস্টল করতে:
sudo apt-get install iotop
এটি চালানোর জন্য:
sudo iotop
আপনি যদি নির্ভুলতা চান তবে আপনার ব্যবহার করা উচিত fio
। এর জন্য ম্যানুয়ালটি পড়তে man fio
হবে ( ) তবে এটি আপনাকে সঠিক ফলাফল দেবে। নোট করুন যে কোনও নির্ভুলতার জন্য আপনাকে ঠিক কী পরিমাপ করতে চান তা নির্দিষ্ট করতে হবে। কিছু উদাহরণ:
বড় ব্লকগুলির সাথে সিক্যুয়েনাল রিএডি গতি (এটি আপনার ড্রাইভের জন্য নির্দিষ্টকরণে দেখানো সংখ্যার কাছাকাছি হওয়া উচিত):
fio --name TEST --eta-newline=5s --filename=fio-tempfile.dat --rw=read --size=500m --io_size=10g --blocksize=1024k --ioengine=libaio --fsync=10000 --iodepth=32 --direct=1 --numjobs=1 --runtime=60 --group_reporting
বড় ব্লকগুলির সাথে সিক্যুয়ালিবল রাইটিং গতি (এটি আপনার ড্রাইভের জন্য নির্দিষ্টকরণগুলির মধ্যে সংখ্যার কাছাকাছি হওয়া উচিত):
fio --name TEST --eta-newline=5s --filename=fio-tempfile.dat --rw=write --size=500m --io_size=10g --blocksize=1024k --ioengine=libaio --fsync=10000 --iodepth=32 --direct=1 --numjobs=1 --runtime=60 --group_reporting
এলোমেলো 4 কে কিউডি 1 পড়ুন (এটি এমনই সংখ্যা যা সত্যিকারের বিশ্বের পারফরম্যান্সের জন্য গুরুত্বপূর্ণ যা আপনি যদি না নিশ্চিত হয়ে ভাল জানেন):
fio --name TEST --eta-newline=5s --filename=fio-tempfile.dat --rw=randread --size=500m --io_size=10g --blocksize=4k --ioengine=libaio --fsync=1 --iodepth=1 --direct=1 --numjobs=1 --runtime=60 --group_reporting
মিশ্র এলোমেলো 4K সিউন্ডের সাথে কিউডি 1 পড়ুন এবং লিখুন (এটি আপনার ড্রাইভ থেকে আশা করা উচিত সবচেয়ে খারাপ ক্ষেত্রে,
fio --name TEST --eta-newline=5s --filename=fio-tempfile.dat --rw=randrw --size=500m --io_size=10g --blocksize=4k --ioengine=libaio --fsync=1 --iodepth=1 --direct=1 --numjobs=1 --runtime=60 --group_reporting
--size
ফাইলের আকার বাড়াতে যুক্তি বাড়ান । বড় ফাইলগুলি ব্যবহার করা ড্রাইভ প্রযুক্তি এবং ফার্মওয়্যারের উপর নির্ভর করে আপনার প্রাপ্ত নম্বরগুলি হ্রাস করতে পারে। ছোট ফাইলগুলি ঘূর্ণন মাধ্যমের জন্য "খুব ভাল" ফলাফল দেবে কারণ পঠন শিরোনামকে এত বেশি স্থানান্তরিত করার দরকার নেই। যদি আপনার ডিভাইসটি খালি কাছে থাকে তবে ড্রাইভটি প্রায় পূরণের জন্য যথেষ্ট বড় ফাইল ব্যবহার করা আপনাকে প্রতিটি পরীক্ষার জন্য সবচেয়ে খারাপ ক্ষেত্রে আচরণ করে। এসএসডি-র ক্ষেত্রে ফাইল আকারটি তেমন গুরুত্ব দেয় না।
তবে নোট করুন যে কিছু স্টোরেজ মিডিয়াতে ফাইলের আকার স্বল্প সময়ের জন্য মোট বাইট হিসাবে লেখা গুরুত্বপূর্ণ নয়। উদাহরণস্বরূপ, কিছু এসএসডিগুলির প্রাক-মুছে ফেলা ব্লকগুলির সাথে উল্লেখযোগ্যভাবে দ্রুত পারফরম্যান্স থাকতে পারে বা এতে ছোট এসএলসি ফ্ল্যাশ অঞ্চল থাকতে পারে যা রাইট ক্যাশে হিসাবে ব্যবহৃত হয় এবং এসএলসি ক্যাশে পূর্ণ হওয়ার পরে কর্মক্ষমতা পরিবর্তন হয়। অন্য উদাহরণ হিসাবে, সিগেট এসএমআর এইচডিডিগুলির প্রায় 20 গিগাবাইট পিএমআর ক্যাশে এলাকা রয়েছে যা বেশ উচ্চতর পারফরম্যান্সযুক্ত তবে এটি পূর্ণ হয়ে গেলে সরাসরি এসএমআর এরিয়ায় লিখতে পারফরম্যান্সটি মূল থেকে 10% এ কেটে যেতে পারে। এবং এই কর্মক্ষমতা হ্রাস দেখার একমাত্র উপায় হ'ল প্রথমে যত তাড়াতাড়ি সম্ভব 20+ গিগাবাইট লেখা। অবশ্যই এটি আপনার কাজের চাপের উপর নির্ভর করে: যদি আপনার লেখার অ্যাক্সেস দীর্ঘতর বিলম্বের সাথে ফেটে যায় যা ডিভাইসটিকে অভ্যন্তরীণ ক্যাশে পরিষ্কার করতে দেয়, সংক্ষিপ্ত পরীক্ষার ক্রমগুলি আপনার বাস্তব বিশ্বের পারফরম্যান্সকে আরও ভালভাবে প্রতিফলিত করবে। আপনার যদি প্রচুর আইও করার দরকার হয় তবে আপনার উভয়ই বাড়ানো দরকার--io_size
এবং --runtime
পরামিতি। মনে রাখবেন যে কিছু মিডিয়া (যেমন বেশিরভাগ ফ্ল্যাশ ডিভাইস) এ জাতীয় পরীক্ষা থেকে অতিরিক্ত পরিধান পাবে। আমার মতে, যদি কোনও ডিভাইস এই ধরণের পরীক্ষার ব্যবস্থা না করার পক্ষে যথেষ্ট দুর্বল হয় তবে কোনও অবস্থাতেই এটি কোনও মূল্যবান ডেটা ধরে রাখতে ব্যবহার করা উচিত নয়।
এছাড়াও কয়েকটি উচ্চমানের এসএসডি ডিভাইসে আরও বুদ্ধিমান পরিধান সমতলকরণ অ্যালগরিদম থাকতে পারে যেখানে অভ্যন্তরীণ এসএলসি ক্যাশে সেই একই স্থানে হিট করে যদি পরীক্ষার সময় পুনরায় লেখা হয় এমন জায়গায় ডেটা প্রতিস্থাপনের জন্য পর্যাপ্ত স্মার্ট থাকে (এটি, পরীক্ষার ফাইল মোট এসএলসি ক্যাশে থেকে ছোট)। এই জাতীয় ডিভাইসের জন্য, ফাইলের আকার আবার গুরুত্বপূর্ণ হয়ে যায়। আপনার যদি আপনার প্রকৃত কাজের চাপের প্রয়োজন হয় তবে ফাইলের আকারের সাথে এটি পরীক্ষা করা ভাল যা আপনি বাস্তবে বাস্তব জীবনে দেখবেন। অন্যথায় আপনার সংখ্যাগুলি খুব ভাল দেখাচ্ছে।
দ্রষ্টব্য যে fio
প্রথম দৌড়ে প্রয়োজনীয় অস্থায়ী ফাইল তৈরি করবে। স্থায়ী স্টোরেজে লেখার আগে ডেটা সংকুচিত করে যে ডিভাইস প্রতারণা করে তাদের থেকে খুব ভাল নম্বর পাওয়া এড়াতে এটি এলোমেলো ডেটা দিয়ে পূর্ণ হবে। অস্থায়ী ফাইলটিকে fio-tempfile.dat
উপরের উদাহরণগুলিতে ডাকা হবে এবং বর্তমান ওয়ার্কিং ডিরেক্টরিতে সঞ্চিত করা হবে। সুতরাং আপনার প্রথমে সেই ডিরেক্টরিতে পরিবর্তন করা উচিত যা আপনি পরীক্ষা করতে চান এমন ডিভাইসে মাউন্ট করা হয়।
আপনার যদি ভাল এসএসডি থাকে এবং আরও বেশি নম্বর দেখতে চান তবে --numjobs
উপরে বাড়ান increase এটি পঠন এবং লেখার জন্য সামঞ্জস্যকে সংজ্ঞায়িত করে। উপরোক্ত উদাহরণগুলি সমস্ত numjobs
সেট করেছে 1
তাই পরীক্ষাটি একক থ্রেডেড প্রক্রিয়া পাঠ এবং লেখার বিষয়ে (সম্ভবত একটি সারি সেট সহ iodepth
) রয়েছে। উচ্চ প্রান্তের এসএসডি (যেমন ইন্টেল অপটেন) খুব বেশি না বাড়িয়েও উচ্চ সংখ্যক হওয়া উচিত numjobs
(উদাহরণস্বরূপ 4
সর্বাধিক নির্দিষ্ট নম্বরগুলি পাওয়ার জন্য যথেষ্ট হওয়া উচিত) তবে কিছু "এন্টারপ্রাইজ" এসএসডিগুলিতে যাওয়ার প্রয়োজন হয় 32
- নির্দিষ্ট 128
নম্বরগুলি পেতে কারণ সেগুলির অভ্যন্তরীণ প্রচ্ছন্নতা ডিভাইসগুলি বেশি তবে সামগ্রিক থ্রুপুটটি উন্মাদ।
max_sectors_kb
। আমি উপরের উদাহরণস্বরূপ 1 এমবি ব্লক আকার ব্যবহার করার জন্য পরিবর্তন করেছি কারণ এটি বাস্তব বিশ্বের হার্ডওয়্যারের সাথে কাজ করে বলে মনে হচ্ছে। এবং আমি এটিও পরীক্ষা fsync
করে দেখেছি যে পড়ার জন্য কোনও বিষয় নয়।
iodepth
করতে 1
রেণ্ডম এক্সেস ঠিক কারণ বাস্তব জগতে প্রোগ্রাম প্রায়ই আলগোরিদিম চালানোর / যুক্তিবিজ্ঞান যে গভীরতা কোনো বেশী 1. ফলে সঙ্গে কাজ করে না, যদি এই ধরনের গভীরতা জন্য "খুব কম" আপনার I / O ডিভাইস খারাপ। এটি সত্য যে কয়েকটি এসএসডি ডিভাইসগুলি 32-র চেয়ে বেশি গভীরতার থেকে উপকৃত হবে However তবে, আপনি এমন কোনও বাস্তব ওয়ার্ল্ড ওয়ার্কলোডকে নির্দেশ করতে পারেন যা পড়ার অ্যাক্সেস প্রয়োজন এবং 32 টিরও বেশি আওডেপথ রাখতে সক্ষম? টি এল; ডিআর: আপনি যদি উচ্চ বিলম্বিত ডিভাইসের সাথে কিছু অতি উচ্চমানের পঠিত বেঞ্চমার্ক নম্বরটি পুনঃপ্রজনিত করতে চান iodepth=256 --numjobs=4
তবে ব্যবহার করুন তবে কখনই বাস্তবের জন্য এই জাতীয় সংখ্যা দেখার আশা করবেন না।
বনি ++ হ'ল লিনাক্সের জন্য আমি জানি চূড়ান্ত মানদণ্ডের ইউটিলিটি।
(আমি বর্তমানে এটির সাথে আমাদের উইন্ডোজ-ভিত্তিক মেশিনটি পরীক্ষা করতে এটিতে +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +> + +] + তে]]
এটি ক্যাচিং, সিঙ্কিং, এলোমেলো ডেটা, ডিস্কে এলোমেলো অবস্থান, ছোট আকারের আপডেট, বৃহত আপডেটগুলি, পড়া, লিখতে ইত্যাদির যত্ন নেয় us ফাইল সিস্টেমটি নবজাতকের জন্য খুব তথ্যপূর্ণ হতে পারে।
এটি উবুন্টুতে অন্তর্ভুক্ত করা হয়েছে কিনা আমার কোনও ধারণা নেই তবে আপনি এটি উত্স থেকে সহজেই সংকলন করতে পারেন।
লেখার গতি
$ dd if=/dev/zero of=./largefile bs=1M count=1024
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 4.82364 s, 223 MB/s
ব্লকের আকার আসলে বেশ বড়। আপনি 64k বা 4k এমনকি ছোট আকারের সাথে চেষ্টা করতে পারেন।
পড়ার গতি
মেমরি ক্যাশে সাফ করার জন্য নিম্নলিখিত কমান্ডটি চালান
$ sudo sh -c "sync && echo 3 > /proc/sys/vm/drop_caches"
লিখিত পরীক্ষায় তৈরি করা ফাইলটি এখন পড়ুন:
$ dd if=./largefile of=/dev/null bs=4k
165118+0 records in
165118+0 records out
676323328 bytes (676 MB) copied, 3.0114 s, 225 MB/s
বনি ++ কীভাবে ব্যবহার করবেন সে সম্পর্কে কিছু ইঙ্গিত
bonnie++ -d [TEST_LOCATION] -s [TEST_SIZE] -n 0 -m [TEST_NAME] -f -b -u [TEST_USER]
bonnie++ -d /tmp -s 4G -n 0 -m TEST -f -b -u james
আরও কিছু এখানে: সিম্পল বনি ++ উদাহরণ ।
অখণ্ডতা পরীক্ষা করুন, জাল ফ্ল্যাশ ড্রাইভগুলি এবং পরীক্ষার কার্যকারিতা সনাক্ত করুন, তিনটিই একটি শটে।
আরো এই উত্তর ।