براي درك بهتر از مشخصات هر وسيله ذخيرهسازي بهتر است كه حداقل سه ويژگي مختلف آن مد نظر گرفته شود. IOPS، زمان پاسخدهي و حجمكاري. حال ما در اين مقاله قصد داريم در رابطه با iops صحبت كنيم، پس با ما همراه باشيد.
iops چيست؟
IOPS مخفف عبارات input output operation per second مي باشد كه يك واحد اندازه گيري حداكثر ميزان خواندن و نوشتن بر روي تجهيزات ذخيره سازي اطلاعات است. در واقع به واحد استاندارد اندازه گيري براي بيشترين تعداد خواندن و نوشتن در فضاهاي ذخيره سازي ( مانند هارد ديسك، SSD و درايو هاي SAN) گفته مي شود. به طور كلي مي توان گفت دستگاه يا هاردي كه مقدار IOPS آن بيشتر باشد مي تواند عمليات بيشتري را در يك ثانيه انجام دهد.
براي آنكه بهتر متوجه IOPS شويد مثالي مي زنيم: براي مثال ميتوان IOPS را به سرعت در دقيقه يك موتور در ماشين تشبيه كرد. يك موتور قدرت گردش 10 هزار دور در دقيقه را دارد. انجام اين مقدار گردش در حالي كه موتور دنده در حالت خلاص قرار گرفته اهميت خاصي ندارد. اما اگر موتوري بتواند اسب بخار و گشتاور خاصي را با استفاده از ده هزار دور در دقيقه به كار گيرد ميتوان به قدرت آن موتور اطمينان داشت.
در سال 1999 اكثر شركت هاي توليد كننده سخت افزار شروع به سواستفاده از IOPS كرده كه اين عامل مشكلات زيادي را به وجود آورد. اين شركت ها شروع به اعلام اعداد غير واقعي در رابطه با IOPS كردند. براي حل اين مشكل شركت اينتل بنچمارك IOmeter را براي اندازهگيري ويژگيهاي مختلف وسايل ذخيرهسازي منتشر كرد. سازمان Storage Performance Council نيز توانست بنچماركي به نام SPC-1 Benchmark Suite را منتشر كند كه يكي از دقيقترين بنچماركهاي موجود است.
SPC-1 از توليدكنندگان درخواست ميكند تا تمام مشخصات مربوط به دستگاههاي ذخيرهسازي خود را اعلام كنند. استانداردهايي كه در محيطكاري استفاده ميشوند. در اين ميان بايد ميزان IOPS و زمان پاسخدهي به دقت مشخص شود تا از تقلب و ارائه اعداد غيرواقعي جلوگيري شود. در نتيجه تست و بنچمارك SPC-1 نتيجهاي واقعگرا از IOPS، زمان پاسخدهي، پايداري داده و عملكرد در وسيله ذخيرهسازي است.
همچنين اين تست با توجه به دريافت قيمت قطعات استفاده شده در ساخت وسيله ذخيرهسازي انجام ميشود و در نهايت ارزش خريد نسبت به هر IOPS نيز ارائه ميشود. مقدار دقيق IOPS در هر سيستم بسته به تنظيمات مختلف ميتواند بسيار متفاوت باشد. شايد مهمترين نوع تست IOPS دسترسي به دادهها به صورت ترتيبي و يا تصادفي است. گرچه تستهاي ديگري نيز وجود دارند. از عوامل محيطي موثر روي نتيجه تست SPC-1 ميتوان به كانفيگ سيستم، سيستم عامل و … اشاره كرد.
بررسي IOPS، تاخير (latency) و توان عملياتي (throughput):
در اين جا لازم است كه به اين نكته اشاره كنيم كه iops به تنهايي نمي تواند معيار خوبي براي اندازه گيري عملكرد باشد. از اين رو آي او پي اس همراه با يكي از دو معيار توان عملياتي (throughput) و تاخير (latency) مي توانند براي اندازه گيري عملكرد، معيارهاي مناسبي باشند.
Throughput (توان عملياتي) تعداد واحدهاي اطلاعاتي را كه يك سيستم مي تواند در يك دوره ي زماني پردازش كند، اندازه گيري مي نمايد. همچنين تعداد عمليات I/O در ثانيه را شامل مي شود اما معمولا به صورت بايت بر ثانيه محاسبه مي شود. IOPS و throughput به تنهايي نمي توانند معيار مناسبي براي اندازه گيري عملكرد باشند.
Latency (تاخير) فاصله زماني بين ارسال يك درخواست و دريافت يك پاسخ است. در رابطه با IOPS تاخير به مدت زماني گفته مي شود كه يك درخواست I/O از طرف اپليكيشن كامل مي شود. همانطور كه گفته شد مقياس هايي همچون latency، IOPS و throughput به تنهايي تصوير كاملي ارائه نمي دهند اما در كنار هم، به سنجش عملكرد كمك مي كنند.
بررسي IOPS و Latency و Storage Performance:
وقتي صحبت از ذخيره سازي مي شود اغلب افراد به throughput فكر مي كنند. اما throughput مانند حداكثر سرعت يك خودرو مي ماند كه ممكن است شما نتوانيد از حداكثر سرعت يك خودرو استفاده نماييد. برخي ويژگي هايي مانند سرعت ماشين شما و نحوه كنترل خميدگي ها و پيچ ها، اغلب از حداكثر سرعت آن مهم تر هستند. و اين مثال براي عملكرد ذخيره سازي نيز صادق است.
همانطور كه مي دانيد SSD ها اغلب بسيار سريعتر از هارد ديسك هاي معمولي هستند اما اين در مورد توان عملياتي يا throughput نمي توان اين مسأله را عنوان كرد. همه چيز به عمليات ورودي/خروجي در ثانيه (IOPS) بر مي گردد. اما IOPS كل داستان نيست. به بيان دقيق تر IOPS يك رقم بي معني است مگر اينكه به ميانگين latency و اندازه درخواست معين (چه مقدار داده با I/O پردازش مي شود) مرتبط باشد. بياييد ابتدا روي IOPS و Latency تمركز كنيم و بعداً در مورد اندازه درخواست صحبت كنيم.
پس اول تمركزمون رو روي IOPS و latency مي گذاريم.
latency بسيار مهم است، زيرا يك سيستم ذخيرهسازي كه ميتواند 1000 IOPS با تاخير متوسط 10 ميليثانيه را مديريت كند، ممكن است عملكرد برنامه بهتري نسبت به يك زيرسيستم كه ميتواند 5000 IOPS با تأخير متوسط 50 ميليثانيه را مديريت كند، داشته باشد. به خصوص اگر برنامه شما به latency حساس باشد، مانند سرويس پايگاه داده.
درك اين موضوع بسيار مهم است: IOPS و latency چگونه با يكديگر ارتباط دارند. تصور كنيد كه در يك سوپر ماركت هستيد. اين يك سوپرماركت ويژه است كه در آن به مشتريان (I/Os) با صندوقدار (ديسك) با سرعت متوسط 10 ميلي ثانيه خدمات ارائه مي شود. اگر يك ثانيه را با 10 ميلي ثانيه تقسيم كنيد، متوجه مي شويم كه اين صندوقدار مي تواند 100 مشتري در ثانيه را اداره كند. اما فقط يكي در يك زمان و پشت سر هم.
واضح است كه با اينكه صندوقدار مي تواند در هر ثانيه 100 مشتري را اداره كند، اما نمي تواند همزمان از عهده آنها برآيد! بنابراين هنگامي كه مشتري به ثبت مي رسد، و در مدت زمان رسيدگي به 10 ميلي ثانيه، مشتري دوم مي رسد، آن مشتري بايد منتظر بماند. هنگامي كه مشتري منتظر توسط صندوقدار رسيدگي مي شود، رسيدگي به آن مشتري هنوز فقط 10 ميلي ثانيه طول مي كشد، اما زمان پردازش كلي شايد 15 ميلي ثانيه يا در بدترين حالت (دو مشتري همزمان وارد مي شوند) حتي 20 ميلي ثانيه بود.
البته يك ديسك ممكن است ورودي/خروجي هاي با تاخير متوسط 10 ميلي ثانيه را مديريت كند. تأخير واقعي همانطور كه توسط برنامه درك مي شود ممكن است بيشتر باشد زيرا برخي از I/O ها بايد در صف منتظر بمانند.
اين مثال همچنين نشان ميدهد كه انتظار در صف، تأخير يك I/O خاص را افزايش ميدهد. بنابراين اگر صف خواندن ورودي/خروجي را افزايش دهيد، متوجه خواهيد شد كه ميانگين تأخير افزايش خواهد يافت. صف هاي طولاني تر به معناي تأخير بيشتر و همچنين IOPS بيشتر خواهد بود!!!
چطور ممكنه؟ چگونه يك هارد ديسك مي تواند ناگهان IOP هاي تصادفي بيشتري را به قيمت latency انجام دهد؟ ترفند در اين است كه سيستم ذخيره سازي مي تواند هوشمند باشد و به صف نگاه كند و سپس ورودي/خروجي ها را به گونه اي سفارش دهد كه الگوي دسترسي واقعي به ديسك سريالي تر شود. بنابراين يك ديسك مي تواند IOPS/s بيشتري را به قيمت افزايش متوسط latency ارائه دهد. بسته به تأخير به دست آمده و الزامات عملكرد لايه كاربردي، اين مي تواند قابل قبول باشد يا خير.
ميانگين سرعت iops در HDD ها و SSD ها:
ميزان iops هارد ديسك ها به زمان جستجو بستگي دارد ولي ميزان iops در SSD ها عمدتا به كنترلر داخلي دستگاه بستگي دارد. لازم به ذكر است كه عملكرد SSD در طول زمان تغيير مي كند و در مراحل اوليه بيشتر است به طوري كه حتي زماني كه به حالت پايدار مي رسد همچنان از نظر آي او پي اس نسبت به هارد ديسك ها بهتر عمل مي كند زيرا HDD ها اغلب درگير مسائلي از قبيل تاخير و زمان خواندن و نوشتن مي باشند.
اعداد مربوط به آي او پي اس در هر دو وسايل ذخيره سازي SSD و HDD معمولا بيشترين سرعت را نمايش مي دهد و تعداد آي او پي اس ترتيبي معمولا حداكثر پهناي باند پايدار را نشان مي دهد كه سيستم ذخيره سازي قادر به انجام آن مي باشد. اغلب آي او پي اس ترتيبي به عنوان يك مگابايت بر ثانيه به شرح زير گزارش مي شود:
IOPS*TransferSizeInBytes = BytesPerSec
كه اصولا نتيجه عمليات فوق به مگابايت بر ثانيه تبديل مي شود.
با افزايش تعداد IO ها، برخي از HDD ها در عملكرد بهبود مي يابند. اين معمولاً نتيجه منطق كنترلر پيشرفته تري درايو است كه فرماندهي را مرتب مي كند كه مرتب سازي مجدد آن را معمولاً يا Tagged Command Queaching (TCQ) يا Native Command Queaching (NCQ) مي نامند. اكثر درايوهاي SATA قادر به انجام اين كار نيستند و يا اجراي آنها به حدي ضعيف است كه هيچ فايده اي از عملكرد را نمي توان مشاهده كرد.
در حالي كه HDD هاي سنتي تقريباً داراي همان آي او پي اس براي عمليات خواندن و نوشتن هستند، اكثر SSD هاي مبتني بر فلش NAND نوشتن آن بسيار كندتر از خواندن به دليل عدم امكان بازنويسي مستقيم به طور مكتوب در مكان قبلي است كه مجبور مي شود روشي به نام garbage collection را انجام دهد.
IOPS ∗ TransferSizeInBytes = BytesPerSec {displaystyle {text{IOPS}}*{text{TransferSizeInBytes}}={text{BytesPerSec}}}
IOPS در SATA و SAS:
اين دو نوع از هارد ها در دنياي امروز بيشترين كاربرد را دارند. هر دو اين هارد ها براي انجام عمليات خود در حال چرخاندن يك ديسك هستند. فقط يك نوع از هارد ديسك SATA در بازار موجود مي باشد اين در حالي است كه از هارد ديسك SAS دو نوع در بازار موجود است. مبناي اين دسته بندي مقدار IOPS آن هاست. در ادامه به اين دسته بندي ها خواهيم پرداخت.
ـ SATA:
ميانگين سرعت SATA 7.2K rpm است و مي تواند حداكثر ۱۰۰ عمليات ورودي و خروجي را در ثانيه انجام دهد. اين هارد با سرعت ۱۰K rpm مي تواند حداكثر ۱۵۰ عمليات را در ثانيه انجام دهد.
ـ SAS:
اين نوع از هارد ديسك با دو سرعت ۱۰k و ۱۵k در بازار موجود است. SAS 10k مي تواند ۱۴۰ عمليات را در ثانيه انجام دهد و SAS 15k مي تواند ۲۱۰ عمليات را در ثانيه انجام دهد. SAS سريعتر از SATA است و در معاملات بانكي و تجارت الكترونيكي استفاده مي شود.
ـ SSD:
در اين نوع از هارد ها مقدار IOPS بسته به نياز سرعت خواندن و نوشتن بسيار زياد است. مقدار IOPS در هارد هاي SSD بين ۴۶۰۰ تا ۷۵۰۰ است ولي اين مقدار نيز قابل افزايش است. امروزه يك هارد SSD مدرن مي تواند ۱۰۰۰۰۰ عمليات را در يك ثانيه انجام دهد.
اهميت iops:
جالب است بدانيد كه ميزان اهميت IOPS به عنوان يك مقياس اندازه گيري همچنان سوال برانگيز است. با توجه به ميزان لود بار اعداد مربوط به واحد بيشترين تعداد خواندن و نوشتن بسيار متفاوت است در نتيجه نمي توان IPOS را به تنهايي پارامتر موثري براي تصميم گيري در نظر گرفت.
از آنجايي كه اعداد بيشترين تعداد خواندن و نوشتن تحت تاثير اندازه بلوك داده ها و حجم كار است، بعيد است كه فروشندگان در هنگام اندازه گيري آن از متغيرهاي استاندارد استفاده كنند. حتي در صورت استفاده از سيستم استانداري با در نظر گرفتن اندازه بلوك و عمليات خواندن و نوشتن، عدد به دست آمده معنايي به جز ميزان كارايي در يك حجم كار مشخص ندارد.
منبع : iops چيست