আমি স্টাম্পড এবং আমি আশা করি অন্য কেউ এই সমস্যার লক্ষণগুলি স্বীকৃতি দেবেন।
হার্ডওয়্যার: নতুন ডেল টি 110 II, ডুয়াল-কোর পেন্টিয়াম জি 850 2.9 গিগাহার্টজ, জাহাজে থাকা এসটিএ কন্ট্রোলার, একটি নতুন 500 জিবি 7200 আরপিএম বাক্সের ভিতরে হার্ড ড্রাইভ, অন্য ড্রাইভগুলি তবে এখনও মাউন্ট করা হয়নি। কোন RAID। সফ্টওয়্যার: ভিএমওয়্যার ইএসএক্সআই 5.5.0 (বিল্ড 1746018) + ভিএসফায়ার ক্লায়েন্টের অধীনে তাজা CentOS 6.5 ভার্চুয়াল মেশিন। 2.5 জিবি র্যাম বরাদ্দ। ডিস্কটি হ'ল সেন্টোস কীভাবে এটি সেট আপ করার প্রস্তাব করেছিল, এলভিএম ভলিউম গ্রুপের ভিতরে একটি ভলিউম হিসাবে, আমি আলাদা / বাড়ি থাকা বাদ দিয়েছি এবং কেবল / এবং / বুট রাখি। সেন্টোস প্যাচড আপ, ইএসএক্সআই প্যাচড আপ, ভিএম-এ সর্বশেষতম ভিএমওয়্যার সরঞ্জাম ইনস্টল করা হয়েছে। সিস্টেমে কোনও ব্যবহারকারী নেই, কোনও পরিষেবা চলছে না, ডিস্কে কোনও ফাইল নেই ওএস ইনস্টলেশন। আমি ভিএসফিয়ার ক্লায়েন্টের ভিএম ভার্চুয়াল কনসোলের মাধ্যমে ভিএম এর সাথে ইন্টারেক্ট করছি।
আরও যাওয়ার আগে, আমি যাচাই করতে চেয়েছিলাম যে আমি কম-বেশি যুক্তিসঙ্গতভাবে জিনিসগুলি কনফিগার করেছি। আমি ভিএম এর শেলের মূল হিসাবে নিম্নলিখিত কমান্ডটি চালিয়েছি:
for i in 1 2 3 4 5 6 7 8 9 10; do
dd if=/dev/zero of=/test.img bs=8k count=256k conv=fdatasync
done
অর্থাৎ, কেবলমাত্র dd কমান্ডটি 10 বার পুনরাবৃত্তি করুন, যার ফলে প্রতিবার স্থানান্তর হার মুদ্রণ করা যায়। ফলাফল বিরক্তিকর। এটি ভাল শুরু হয়:
262144+0 records in
262144+0 records out
2147483648 bytes (2.1 GB) copied, 20.451 s, 105 MB/s
262144+0 records in
262144+0 records out
2147483648 bytes (2.1 GB) copied, 20.4202 s, 105 MB/s
...
তবে এর 7-8 এর পরে এটি মুদ্রণ করে
262144+0 records in
262144+0 records out
2147483648 bytes (2.1 GG) copied, 82.9779 s, 25.9 MB/s
262144+0 records in
262144+0 records out
2147483648 bytes (2.1 GB) copied, 84.0396 s, 25.6 MB/s
262144+0 records in
262144+0 records out
2147483648 bytes (2.1 GB) copied, 103.42 s, 20.8 MB/s
যদি আমি একটি উল্লেখযোগ্য পরিমাণ অপেক্ষা করি, 30-45 মিনিট বলুন এবং আবার চালনা করুন, এটি আবার 105 এমবি / সেকেন্ডে ফিরে যায় এবং বেশ কয়েকটি রাউন্ডের পরে (কখনও কখনও কয়েকটি, কখনও কখনও 10+), এটি নেমে আসে ~ 20- আবার 25 এমবি / সে।
সম্ভাব্য কারণগুলির জন্য প্রাথমিক অনুসন্ধানের ভিত্তিতে, বিশেষত ভিএমওয়্যার কেবি 2011861 তে , আমি লিনাক্সের i / o সময়সূচীটিকে noop
ডিফল্টের পরিবর্তে " " হিসাবে পরিবর্তন করেছি। cat /sys/block/sda/queue/scheduler
এটি কার্যকর হয় তা দেখায়। তবে, আমি দেখতে পাচ্ছি না যে এটি এই আচরণে কোনও পার্থক্য করেছে।
ভিএসফিয়ারের ইন্টারফেসে ডিস্কের বিলম্বকে প্লট করা, এটি নিম্ন থ্রুটপুট প্রতিবেদন করার সময়কালে উচ্চ ডিস্কের ল্যাটেন্সিকে 1.2-1.5 সেকেন্ডের সময়কালে দেখায় dd
। (এবং হ্যাঁ, ঘটনাগুলি ঘটে যাওয়ার সময় জিনিসগুলি বেশ প্রতিক্রিয়াশীল হয় get)
কি এই সৃষ্টি হতে পারে?
আমি আরামদায়ক যে এটি ডিস্ক ব্যর্থ হওয়ার কারণে নয়, কারণ আমি একই সিস্টেমে অতিরিক্ত ভলিউম হিসাবে অন্য দুটি ডিস্কও কনফিগার করেছি। প্রথমে আমি ভেবেছিলাম যে আমি এই ভলিউমটিতে কিছু ভুল করেছি, তবে / ইত্যাদি / fstab এবং রিবুট থেকে ভলিউমটি মন্তব্য করার পরে এবং উপরে প্রদর্শিত হিসাবে / পরীক্ষার চেষ্টা করার পরে, এটি স্পষ্ট হয়ে গেছে যে সমস্যাটি অন্য কোথাও আছে। এটি সম্ভবত একটি ESXi কনফিগারেশন সমস্যা, তবে আমি ESXi এর সাথে খুব অভিজ্ঞ নই। এটি সম্ভবত বোকামি কিছু, তবে একাধিক দিন ধরে বেশ কয়েক ঘন্টা ধরে এটি বোঝার চেষ্টা করার পরেও আমি সমস্যাটি খুঁজে পাই না, তাই আমি আশা করি কেউ আমাকে সঠিক দিকে নির্দেশ করতে পারে।
(পিএস: হ্যাঁ, আমি জানি যে এই হার্ডওয়্যার কম্বোটি সার্ভার হিসাবে কোনও গতি পুরষ্কার জিততে পারে না, এবং আমার কাছে এই নিম্ন-প্রান্তের হার্ডওয়্যার ব্যবহার এবং একক ভিএম চালানোর কারণ রয়েছে, তবে আমি মনে করি এটি এই প্রশ্নের মূল বিষয় ছাড়াও রয়েছে [যদি না এটি আসলে একটি হার্ডওয়্যার সমস্যা]।)
যোগ # # : এই উত্তরগুলির মতো অন্যান্য উত্তরগুলি পড়ার ফলে আমাকে যুক্ত oflag=direct
করার চেষ্টা করায় dd
। যাইহোক, এটি ফলাফলের ধরণে কোনও পার্থক্য করে না: প্রাথমিকভাবে সংখ্যাগুলি অনেক রাউন্ডের জন্য বেশি হয়, তারপরে তারা 20-25 এমবি / সেকেন্ডে নেমে যায়। (প্রাথমিক পরম সংখ্যাগুলি 50 এমবি / সেকেন্ডের মধ্যে রয়েছে range)
যোগ # 2 : sync ; echo 3 > /proc/sys/vm/drop_caches
লুপে যুক্ত করা মোটেও কোনও পার্থক্য করে না।
সংযুক্তি # 3 : আরও ভেরিয়েবলগুলি বের করতে, আমি এখন dd
এমনটি চালিত করি যে এটি তৈরি করা ফাইলটি সিস্টেমের র্যামের পরিমাণের চেয়ে বড়। নতুন কমান্ডটি হ'ল dd if=/dev/zero of=/test.img bs=16k count=256k conv=fdatasync oflag=direct
। কমান্ডের এই সংস্করণ সহ প্রাথমিক থ্রুপুট সংখ্যা হ'ল 50 এমবি / সেকেন্ড। যখন জিনিসগুলি দক্ষিণে যায় তখন তারা 20-25 এমবি / সেকেন্ডে যায়।
সংযুক্তি # 4 : iostat -d -m -x 1
পারফরম্যান্স "ভাল" থাকাকালীন আবার অন্য টার্মিনাল উইন্ডোতে চলার ফলাফল আউটপুটটি যখন "খারাপ" হয় তখন আবার। (এটি চলার সময়, আমি দৌড়াচ্ছি dd if=/dev/zero of=/test.img bs=16k count=256k conv=fdatasync oflag=direct
)) প্রথমে, যখন জিনিসগুলি "ভাল" হয়, তখন এটি এটি দেখায়:
যখন জিনিসগুলি "খারাপ" হয়, তখন এটি iostat -d -m -x 1
দেখায়:
অ্যাডেন্ডাম # 5 : @wwite এর পরামর্শে, আমি tuned
বিভিন্ন প্রোফাইল ব্যবহার করে চেষ্টা করেছি iozone
। এই সংযোজনে, আমি উপরের বর্ণিত আচরণে বিভিন্ন tuned
প্রোফাইলের কোনও প্রভাব ছিল কিনা তা নিয়ে পরীক্ষার ফলাফলের প্রতিবেদন করি dd
। আমি প্রফাইল পরিবর্তন চেষ্টা virtual-guest
, latency-performance
এবং throughput-performance
, অন্য সব কিছুর একই রেখে প্রতিটি পরিবর্তনে পর পুনরায় বুট করার, এবং তারপর প্রতিটি সময় চলমান dd if=/dev/zero of=/test.img bs=16k count=256k conv=fdatasync oflag=direct
। এটি আচরণের উপর প্রভাব ফেলেনি: ঠিক আগের মতোই, জিনিসগুলি সূক্ষ্মভাবে শুরু হয় এবং অনেকগুলি পুনরাবৃত্ত রান dd
একই পারফরম্যান্স দেখায়, তবে তারপরে 10-40 রানের পরে কিছুটা সময় পারফরম্যান্স অর্ধেক কমে যায়। পরবর্তী, আমি ব্যবহার iozone
। এই ফলাফলগুলি আরও বিস্তৃত, তাই আমি তাদের নীচে # 6 সংযোজন হিসাবে রাখছি।
অ্যাডেন্ডাম # 6 : @Wewite এর পরামর্শে, আমি ইনস্টল করেছি এবং iozone
পারফরম্যান্স পরীক্ষা করতে ব্যবহার করি । আমি এটি বিভিন্ন tuned
প্রোফাইলের অধীনে চালিত করেছি এবং এতে খুব বড় সর্বোচ্চ ফাইল আকার (4 জি) পরামিতি ব্যবহার করেছি iozone
। (ভিএমের র্যামের 2.5 গিগাবাইট বরাদ্দ রয়েছে, এবং হোস্টটি মোট 4 জিবি রয়েছে)) এই পরীক্ষার রানগুলি বেশ কিছুটা সময় নিয়েছিল। FWIW, কাঁচা তথ্য ফাইলগুলি নীচের লিঙ্কগুলিতে উপলব্ধ। সব ক্ষেত্রেই ফাইলগুলি তৈরি করতে ব্যবহৃত কমান্ডটি ছিল iozone -g 4G -Rab filename
।
- প্রোফাইল
latency-performance
:- কাঁচা ফলাফল: http://cl.ly/0o043W442W2r
- প্লট সহ এক্সেল (ওএসএক্স সংস্করণ) স্প্রেডশিট: http://cl.ly/2M3r0U2z3b22
- প্রোফাইল
enterprise-storage
:- কাঁচা ফলাফল: http://cl.ly/333U002p2R1n
- প্লট সহ এক্সেল (ওএসএক্স সংস্করণ) স্প্রেডশিট: http://cl.ly/3j0T2B1l0P46
নিম্নলিখিতটি আমার সংক্ষিপ্তসার।
কিছু ক্ষেত্রে আমি আগের রানের পরে পুনরায় বুট করেছি, অন্য ক্ষেত্রে আমি তা করি নি, এবং iozone
প্রোফাইলটি পরিবর্তন করে আবার দৌড়ে এসেছি tuned
। এটি সামগ্রিক ফলাফলগুলিতে সুস্পষ্ট তাত্পর্যপূর্ণ বলে মনে হচ্ছে না।
বিভিন্ন tuned
প্রোফাইল দ্বারা বর্ণিত বিস্তৃত আচরণকে প্রভাবিত করতে (আমার স্বীকারোক্তিহীন অনভিজ্ঞ চোখের কাছে) মনে হয়নি iozone
, যদিও প্রোফাইলগুলি নির্দিষ্ট বিশদগুলিকে প্রভাবিত করে। প্রথমত, আশ্চর্যরূপে, কিছু প্রোফাইল প্রারম্ভিক পরিবর্তন করেছে যার পারফরম্যান্স খুব বড় ফাইলগুলি লেখার জন্য বাদ পড়েছিল: iozone
ফলাফলগুলি বানাতে গিয়ে আপনি প্রোফাইলের জন্য 0.5 গিগাবাইটে একটি নিখরচায় ক্লিফ দেখতে পাবেন latency-performance
তবে এই ড্রপটি প্রোফাইলের অধীনে 1 জিবিতে প্রকাশ পায়enterprise-storage
। দ্বিতীয়ত, যদিও সমস্ত প্রোফাইল ছোট ফাইল আকার এবং ছোট রেকর্ড আকারের সংমিশ্রণের জন্য অদ্ভুত পরিবর্তনশীলতা প্রদর্শন করে, প্রোফাইলের মধ্যে পরিবর্তনের যথাযথ প্যাটার্নটি পৃথক হয়। অন্য কথায়, নীচে প্রদর্শিত প্লটগুলিতে, বাম দিকের ক্রেজি প্যাটার্নটি সমস্ত প্রোফাইলের জন্য বিদ্যমান তবে পিটগুলির অবস্থান এবং তার গভীরতা বিভিন্ন প্রোফাইলে আলাদা। (তবে, আমি একই প্রোফাইলগুলির রানের পুনরাবৃত্তি করিনি তা দেখতে iozone
একই প্রোফাইলের অধীনে রানগুলির মধ্যে উল্লেখযোগ্যভাবে পরিবর্তনশীলতার প্যাটার্ন পরিবর্তন হয় কিনা, তাই এটি সম্ভবত সম্ভব যে প্রোফাইলগুলির মধ্যে পার্থক্যের মতো দেখতে আসলেই কেবল এলোমেলো পরিবর্তনশীলতা))
নীচের প্রোফাইলগুলির iozone
জন্য বিভিন্ন পরীক্ষার পৃষ্ঠতল প্লট tuned
রয়েছে latency-performance
। পরীক্ষাগুলির বিবরণগুলির জন্য ডকুমেন্টেশন থেকে অনুলিপি করা হয় iozone
।
পরীক্ষা পড়ুন: এই পরীক্ষাটি একটি বিদ্যমান ফাইল পড়ার কর্মক্ষমতা পরিমাপ করে।
পরীক্ষা লিখুন: এই পরীক্ষাটি একটি নতুন ফাইল লেখার কর্মক্ষমতা পরিমাপ করে।
এলোমেলো পঠন: এই পরীক্ষাটি ফাইলের মধ্যে এলোমেলো অবস্থানগুলিতে অ্যাক্সেস সহ একটি ফাইল পড়ার কর্মক্ষমতা পরিমাপ করে।
এলোমেলো রচনা: এই পরীক্ষাটি ফাইলের মধ্যে এলোমেলো অবস্থানগুলিতে অ্যাক্সেস সহ একটি ফাইল লেখার কর্মক্ষমতা পরিমাপ করে।
ফ্রেড: এই পরীক্ষাটি লাইব্রেরির ফাংশন ফ্রেড () ব্যবহার করে কোনও ফাইল পড়ার পারফরম্যান্সকে পরিমাপ করে। এটি একটি লাইব্রেরির রুটিন যা বাফার এবং ব্লকড রিড অপারেশনগুলি সম্পাদন করে। বাফারটি ব্যবহারকারীর ঠিকানা জায়গার মধ্যে রয়েছে। যদি কোনও অ্যাপ্লিকেশন খুব ছোট আকারের স্থানান্তরগুলিতে পড়তে হয় তবে বাফারড এবং ব্লকড আই / ও ফ্রিডের কার্যকারিতা () অপারেটিং সিস্টেমের সময় প্রকৃত অপারেটিং সিস্টেমের কল সংখ্যা এবং ট্রান্সফারের আকার বাড়িয়ে অ্যাপ্লিকেশনটির কার্যকারিতা বাড়িয়ে তুলতে পারে কল করা হয়।
ফাইরাইট: এই পরীক্ষাটি লাইব্রেরির ফাংশন fwrit () ব্যবহার করে একটি ফাইল রচনার কর্মক্ষমতা পরিমাপ করে। এটি একটি লাইব্রেরির রুটিন যা বাফার রাইটিং অপারেশন করে। বাফারটি ব্যবহারকারীর ঠিকানা জায়গার মধ্যে রয়েছে। যদি কোনও অ্যাপ্লিকেশন খুব ছোট আকারের স্থানান্তরগুলিতে লিখতে থাকে তবে ফাইরাইটের বাফারড এবং ব্লকড I / O কার্যকারিতা প্রকৃত অপারেটিং সিস্টেম কলগুলির সংখ্যা হ্রাস করে এবং অপারেটিং সিস্টেমের সময় স্থানান্তরগুলির আকার বাড়িয়ে অ্যাপ্লিকেশনটির কার্যকারিতা বাড়িয়ে তুলতে পারে কল করা হয়। এই পরীক্ষাটি একটি নতুন ফাইল লিখছে তাই আবার মেটাডেটারের ওভারহেড পরিমাপের অন্তর্ভুক্ত।
অবশেষে, iozone
এটির কাজটি করার সময় , আমি ভিএসফিয়ার 5 এর ক্লায়েন্ট ইন্টারফেসে ভিএমের জন্য পারফরম্যান্স গ্রাফগুলিও পরীক্ষা করেছিলাম। আমি ভার্চুয়াল ডিস্ক এবং ডেটাস্টোরের রিয়েল-টাইম প্লটের মধ্যে পিছনে পিছনে স্যুইচ করেছি। ভার্চুয়াল ডিস্কের চেয়ে ডেটাস্টোরের জন্য উপলব্ধ প্লটিং প্যারামিটারগুলি বৃহত্তর ছিল এবং ডেটাস্টোর পারফরম্যান্স প্লটগুলি ডিস্ক এবং ভার্চুয়াল ডিস্ক প্লটগুলি কী করছিল তা মিরর বলে মনে হয়েছিল, সুতরাং আমি এখানে সম্পূর্ণ করার পরে নেওয়া ডেটাস্টোর গ্রাফের কেবল একটি স্ন্যাপশট আবদ্ধ করেছি iozone
( tuned
প্রোফাইলের অধীনে latency-performance
)। রং একটি সামান্য বিট কঠিন পড়তে হয়, কিন্তু কি সম্ভবত সবচেয়ে উল্লেখযোগ্য মধ্যে ধারালো উল্লম্ব স্পাইক হয় পঠিতবিলম্বিতা (উদাহরণস্বরূপ, 4:25 এ, তারপরে আবার 4:30 পরে কিছুটা পরে এবং আবার 4: 50-4: 55 এর মধ্যে)। দ্রষ্টব্য: এখানে এম্বেড করার সময় প্লটটি অপঠনযোগ্য, সুতরাং আমি এটি http://cl.ly/image/0w2m1z2T1z2b এও আপলোড করেছি
আমাকে অবশ্যই স্বীকার করতে হবে, এই সমস্ত কী তৈরি করতে হবে তা আমি জানি না। iozone
প্লটগুলির ছোট রেকর্ড / ছোট ফাইল আকারের অঞ্চলগুলিতে আমি অদ্ভুত পোথোল প্রোফাইলগুলি বিশেষত বুঝতে পারি না ।
iostat
এবং এটি আগে এবং পরে উভয়ই ~ 90% ব্যবহার দেখিয়েছে। তবে আমি এই বিষয়গুলি বিচার করার জন্য বিশেষজ্ঞ নই - সম্ভবত কোথাও স্যাচুরেশন ঘটছে। আমি আমার প্রশ্নটি iostat
আউটপুটটি কার্যকর হলে তা প্রদর্শনের জন্য আপডেট করছি ।