قياس أداء قرص

ينطبق على: ✔️ أجهزة ظاهرية بنظام التشغيل Linux ✔️ أجهزة ظاهرية بنظام التشغيل Windows ✔️ مجموعات التوسعة المرنة ✔️ مجموعات التوسعة الموحدة

لأن القياس هي عملية محاكاة أحمال العمل المختلفة على التطبيق الخاص بك وقياس أداء التطبيق لكل حمل عمل. باستخدام الخطوات الموضحة في تصميم المقالة عالية الأداء، قمت بتجميع متطلبات أداء التطبيق. من خلال تشغيل أدوات قياس الأداء على الأجهزة الظاهرية التي تستضيف التطبيق، يمكنك تحديد مستويات الأداء التي يمكن أن يحققها تطبيقك باستخدام محركات الأقراص ذات الحالة الصلبة المتميزة. في هذه المقالة، نقدم لك أمثلة على قياس Standard_D8ds_v4 VM المقدمة مع أقراص Azure SSD المميزة.

لقد استخدمنا أدوات القياس المشتركة DiskSpd وFIO لـWindows وLinux على التوالي. تنتج هذه الأدوات مؤشرات ترابط متعددة تحاكي إنتاجًا مثل حمل العمل، وتقيس أداء النظام. باستخدام الأدوات، يمكنك أيضًا تكوين معلمات مثل حجم الكتلة وعمق قائمة الانتظار، والتي لا يمكنك تغييرها عادة لأحد التطبيقات. يمنحك هذا مزيدًا من المرونة لتحقيق أقصى أداء على جهاز ظاهري عالي النطاق مزود بمحركات أقراص SSD متميزة لأنواع مختلفة من أحمال عمل التطبيقات. لمعرفة المزيد حول كل أداة قياس، تفضل بزيارة DiskSpd وFIO.

لاتباع الأمثلة أدناه، قم بإنشاء Standard_D8ds_v4 وإرفاق أربعة محركات أقراص SSD متميزة بالجهاز الظاهري. من بين الأقراص الأربعة، قم بتكوين ثلاثة مع التخزين المؤقت للمضيف كـ"لا شيء" وقم بتخطيطها في وحدة تخزين تسمى NoCacheWrites. قم بتكوين التخزين المؤقت للمضيف كـ"للقراءة فقط" على القرص المتبقي وإنشاء وحدة تخزين تسمى CacheReads باستخدام هذا القرص. باستخدام هذا الإعداد، يمكنك رؤية الحد الأقصى لأداء القراءة والكتابة من جهاز ظاهري Standard_D8ds_v4. للحصول على خطوات مفصلة حول إنشاء Standard_D8ds_v4 باستخدام محركات أقراص SSD متميزة، راجع التصميم للحصول على أداء عال.

قم بتجهيز ذاكرة التخزين المؤقت

القرص الذي يحتوي على التخزين المؤقت لمضيف ReadOnly قادر على إعطاء IOPS أعلى من حد القرص. للحصول على هذا الحد الأقصى من أداء القراءة من ذاكرة التخزين المؤقت للمضيف، يجب عليك أولًا تجهيز ذاكرة التخزين المؤقت لهذا القرص. يضمن هذا أن IOs القراءة التي ستديرها أداة المقارنة المرجعية على وحدة تخزين CacheReads، تضرب ذاكرة التخزين المؤقت بالفعل، وليس القرص مباشرة. تؤدي ضربات ذاكرة التخزين المؤقت إلى المزيد من عمليات IOPS من القرص الفردي الذي تم تمكين ذاكرة التخزين المؤقت له.

هام

يجب عليك تجهيز ذاكرة التخزين المؤقت قبل تشغيل المعايير في كل مرة يتم فيها إعادة تشغيل الجهاز الظاهري.

DISKSPD

تحميل أداة DISKSP على الجهاز الظاهري. DISKSPD هي أداة يمكنك تخصيصها لإنشاء أعباء العمل الاصطناعية الخاصة بك. سنستخدم نفس الإعداد المذكور أعلاه لتشغيل اختبارات القياس. يمكنك تغيير المواصفات لاختبار أحمال العمل المختلفة.

في هذا المثال، نستخدم المجموعة التالية من معلمات الأساس:

  • -c200G: إنشاء (أو إعادة إنشاء) نموذج الملف المستخدم في الاختبار. يمكن تعيينه في بايت أو KiB أو MiB أو GiB أو كتل. في هذه الحالة، يتم استخدام ملف كبير من الملف المستهدف 200-GiB لتقليل التخزين المؤقت للذاكرة.
  • -w100: يحدد النسبة المئوية للعمليات التي تمثل طلبات كتابة (-w0 يعادل قراءة 100٪).
  • -b4K: يشير إلى حجم الكتلة بالبايت أو KiB أو MiB أو GiB. في هذه الحالة، يتم استخدام حجم كتلة 4K لمحاكاة اختبار إدخال/ إخراج عشوائي.
  • -F4: يحدد ما مجموعه أربعة خيوط.
  • -r: يشير إلى اختبار الإدخال/ الإخراج العشوائي (يتجاوز المعلمة -s).
  • -o128: يشير إلى عدد طلبات الإدخال/ الإخراج المعلقة لكل هدف لكل مؤشر ترابط. يعرف هذا أيضًا باسم عمق قائمة الانتظار. في هذه الحالة، يتم استخدام 128 للتأكيد على وحدة المعالجة المركزية.
  • -W7200: يحدد مدة وقت الإحماء قبل بدء القياسات.
  • -d30: يحدد مدة الاختبار، ولا يشمل الإحماء.
  • -Sh: تعطيل التخزين المؤقت للكتابة بالبرامج والأجهزة (أي ما يعادل -Suw).

للحصول على قائمة كاملة بالمعلمات، راجع مستودع GitHub.

الحد الأقصى للكتابة IOPS

نحن نستخدم عمق قائمة انتظار عالية تبلغ 128، وحجم كتلة صغير يبلغ 8 كيلوبايت، وأربعة مؤشرات ترابط للعمال لدفع عمليات الكتابة. يقوم عمال الكتابة بقيادة نسبة استخدام الشبكة على وحدة تخزين "NoCacheWrites"، والتي تحتوي على ثلاثة أقراص مع تعيين ذاكرة التخزين المؤقت إلى "لا شيء".

قم بتشغيل الأمر التالي لمدة 30 ثانية من الإحماء و30 ثانية من القياس:

diskspd -c200G -w100 -b8K -F4 -r -o128 -W30 -d30 -Sh testfile.dat

تظهر النتائج أن Standard_D8ds_v4 VM تقدم الحد الأقصى للكتابة IOPS البالغ 12,800.

بالنسبة لإجمالي وحدات البايت 3208642560، يبلغ الحد الأقصى لإجمالي الإدخال/الإخراج 391680، بإجمالي 101.97 ميجابايت/ثانية، والإجمالي 13052.65 إدخال/إخراج في الثانية.

الحد الأقصى لقراءة IOPS

نستخدم عمق قائمة انتظار عالية تبلغ 128، وحجم كتلة صغير يبلغ أربعة كيلوبايت، وأربعة مؤشرات ترابط للعمال لدفع عمليات القراءة. يقوم عمال القراءة بقيادة نسبة استخدام الشبكة على وحدة تخزين "CacheReads"، والتي تحتوي على قرص واحد مع تعيين ذاكرة التخزين المؤقت إلى "للقراءة فقط".

قم بتشغيل الأمر التالي لمدة ساعتين من الإحماء و30 ثانية من القياس:

diskspd -c200G -b4K -F4 -r -o128 -W7200 -d30 -Sh testfile.dat

تظهر النتائج أن Standard_D8ds_v4 VM تقدم الحد الأقصى لقراءة IOPS البالغ 77000.

بالنسبة 9652785152 إجمالي وحدات البايت، كان هناك 2356637 إجمالي الإدخال/الإخراج، عند 306.72 ميبي بايت/ثانية، وإجمالي 78521.23 I/Os في الثانية.

الحد الأقصى لمعدل النقل

للحصول على الحد الأقصى لمعدل نقل القراءة والكتابة، يمكنك التغيير إلى حجم كتلة أكبر يبلغ 64 كيلوبايت.

FIO

FIO هي أداة شائعة لقياس التخزين على أجهزة Linux الظاهرية. لديها المرونة لتحديد أحجام IO مختلفة، والقراءة والكتابة المتسلسلة أو العشوائية. ينتج مؤشرات ترابط أو عمليات العامل لتنفيذ عمليات الإدخال/ الإخراج المحددة. يمكنك تحديد نوع عمليات الإدخال/ الإخراج التي يجب على كل مؤشر ترابط عامل تنفيذها باستخدام ملفات الوظائف. أنشأنا ملف وظيفة واحد لكل سيناريو موضح في الأمثلة أدناه. يمكنك تغيير المواصفات في ملفات المهام هذه لقياس أحمال العمل المختلفة التي تعمل على التخزين Premium. في الأمثلة، نستخدم Standard_D8ds_v4 تشغيل Ubuntu. استخدم نفس الإعداد الموضح في بداية قسم المعيار وقم بتسخين ذاكرة التخزين المؤقت قبل تشغيل اختبارات المعيار.

قبل البدء، قم بتنزيل FIO وتثبيته على جهازك الظاهري.

قم بتشغيل الأمر التالي لـUbuntu،

apt-get install fio

نحن نستخدم أربعة مؤشرات ترابط للعمال لقيادة عمليات الكتابة وأربعة مؤشرات ترابط عامل لتشغيل عمليات القراءة على الأقراص. يقوم عمال الكتابة بقيادة نسبة استخدام الشبكة على وحدة تخزين "nocache"، والتي تحتوي على ثلاثة أقراص مع تعيين ذاكرة التخزين المؤقت إلى "لا شيء". يقوم عمال القراءة بقيادة نسبة استخدام الشبكة على وحدة تخزين "readcache"، والتي تحتوي على قرص واحد مع تعيين ذاكرة التخزين المؤقت إلى "للقراءة فقط".

الحد الأقصى للكتابة IOPS

قم بإنشاء ملف المهمة بالمواصفات التالية للحصول على الحد الأقصى لكتابة عمليات IOPS. سمها "fiowrite.ini".

[global]
size=30g
direct=1
iodepth=256
ioengine=libaio
bs=4k
numjobs=4

[writer1]
rw=randwrite
directory=/mnt/nocache

لاحظ الأشياء الرئيسية التالية التي تتماشى مع إرشادات التصميم التي تمت مناقشتها في الأقسام السابقة. هذه المواصفات ضرورية لدفع الحد الأقصى لعمليات IOPS،

  • عمق قائمة انتظار مرتفع يبلغ 256.
  • كتلة صغيرة الحجم من 4 كيلو بايت.
  • مؤشرات ترابط متعددة تؤدي عمليات كتابة عشوائية.

قم بتشغيل الأمر التالي لبدء اختبار FIO لمدة 30 ثانية،

sudo fio --runtime 30 fiowrite.ini

أثناء تشغيل الاختبار، يمكنك رؤية عدد عمليات IOPS للكتابة التي يوفرها الجهاز الظاهري والأقراص Premium. كما هو موضح في العينة أدناه، يقدم Standard_D8ds_v4 VM الحد الأقصى للكتابة IOPS البالغ 12800 IOPS.
عدد أجهزة IOPS الظاهرية للكتابة وأقراص SSD المميزة التي يتم تسليمها، يظهر أن عمليات الكتابة هي 13.1 ألف IOPS.

الحد الأقصى لقراءة IOPS

قم بإنشاء ملف المهمة بالمواصفات التالية للحصول على أقصى قدر من قراءة IOPS. سمها "fioread.ini".

[global]
size=30g
direct=1
iodepth=256
ioengine=libaio
bs=4k
numjobs=4

[reader1]
rw=randread
directory=/mnt/readcache

لاحظ الأشياء الرئيسية التالية التي تتماشى مع إرشادات التصميم التي تمت مناقشتها في الأقسام السابقة. هذه المواصفات ضرورية لدفع الحد الأقصى لعمليات IOPS،

  • عمق قائمة انتظار مرتفع يبلغ 256.
  • كتلة صغيرة الحجم من 4 كيلو بايت.
  • مؤشرات ترابط متعددة تؤدي عمليات كتابة عشوائية.

قم بتشغيل الأمر التالي لبدء اختبار FIO لمدة 30 ثانية،

sudo fio --runtime 30 fioread.ini

أثناء تشغيل الاختبار، يمكنك رؤية عدد عمليات IOPS المقروءة التي يوفرها الجهاز الظاهري والأقراص Premium. كما هو موضح في العينة أدناه، يقدم Standard_D8ds_v4 VM أكثر من 77000 قراءة IOPS. هذا هو مزيج من القرص وأداء ذاكرة التخزين المؤقت.
لقطة شاشة لعدد الكتابة التي يقدمها IOPS VM وSSDs المتميزة، تظهر أن القراءات هي 78.6k.

الحد الأقصى للقراءة والكتابة IOPS

قم بإنشاء ملف المهمة بالمواصفات التالية للحصول على الحد الأقصى من القراءة والكتابة لعمليات IOPS. سمها "fioreadwrite.ini".

[global]
size=30g
direct=1
iodepth=128
ioengine=libaio
bs=4k
numjobs=4

[reader1]
rw=randread
directory=/mnt/readcache

[writer1]
rw=randwrite
directory=/mnt/nocache
rate_iops=3200

لاحظ الأشياء الرئيسية التالية التي تتماشى مع إرشادات التصميم التي تمت مناقشتها في الأقسام السابقة. هذه المواصفات ضرورية لدفع الحد الأقصى لعمليات IOPS،

  • عمق قائمة انتظار مرتفع يبلغ 128.
  • كتلة صغيرة الحجم من 4 كيلو بايت.
  • مؤشرات ترابط متعددة تؤدي عمليات قراءة وكتابة عشوائية.

قم بتشغيل الأمر التالي لبدء اختبار FIO لمدة 30 ثانية،

sudo fio --runtime 30 fioreadwrite.ini

أثناء تشغيل الاختبار، يمكنك رؤية عدد عمليات IOPS للقراءة والكتابة المدمجة التي يوفرها VM والأقراص Premium. كما هو موضح في العينة أدناه، يقدم Standard_D8ds_v4 VM أكثر من 90000 عملية قراءة وكتابة مجتمعة. هذا هو مزيج من القرص وأداء ذاكرة التخزين المؤقت.
قراءة وكتابة IOPS مجتمعة، يظهر أن القراءات هي 78.3k والكتابة هي 12.6k IOPS.

الحد الأقصى لمعدل النقل المجمع

للحصول على الحد الأقصى من معدل نقل القراءة والكتابة المدمجة، استخدم حجم كتلة أكبر وعمق قائمة انتظار كبير مع مؤشرات ترابط متعددة تقوم بإجراء عمليات القراءة والكتابة. يمكنك استخدام حجم كتلة 64 كيلوبايت وعمق قائمة انتظار 128.

الخطوات التالية

انتقل إلى مقالتنا حول التصميم للأداء العالي.

في هذه المقالة، يمكنك إنشاء قائمة اختيار مشابهة للتطبيق الحالي الخاص بك للنموذج الأولي. باستخدام أدوات المقارنة المعيارية، يمكنك محاكاة أحمال العمل وقياس الأداء على تطبيق النموذج الأولي. من خلال القيام بذلك، يمكنك تحديد عرض القرص الذي يمكن أن يطابق أو يتجاوز متطلبات أداء التطبيق الخاص بك. ثم يمكنك تنفيذ نفس الإرشادات لتطبيق الإنتاج الخاص بك.