حلّ المجتمع

تحقّق من سرعة وصلة NVMe PCIe على ZimaOS باستخدام lspci وnvme-cli

A user with several NVMe slots wanted to verify whether installed SSDs were actually negotiating PCIe Gen4 rather than Gen3. The discussion focused on lspci LnkCap/LnkSta output and nvme-cli device mapping.

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

كان الأمر المختصر الذي تمت مشاركته في النقاش هو:

واجهة تخزين ZimaOS تعرض SSD من نوع NVMe محدداً بالطراز والسعة
لقطة الشاشة الأصلية من المجتمع التي توضح كيفية ظهور جهاز NVMe في واجهة التخزين في ZimaOS.
مخطط عرض نطاق PCIe من المجتمع يُستخدم لتفسير سرعة الوصلة وعرضها من مخرجات lspci
مرجع لعرض نطاق PCIe مرفوع من المجتمع، استُخدم في النقاش لتفسير عرض الوصلة التي جرى التفاوض عليها.
sudo lspci -vv | grep -E 'PCI bridge|LnkCap|LnkSta'

بالنسبة إلى جهاز PCI محدد، يكون فحص الجهاز مباشرة أسهل عادةً بعد معرفة عنوان الناقل الخاص به:

sudo lspci -s 05:00.0 -vv

الحقول المهمة هي:

  • LnkCap: سرعة PCIe وعرض الوصلة اللذان يمكن لنقطة النهاية أو الوصلة الإعلان عن دعمهما.
  • LnkSta: السرعة وعرض المسارات اللذان جرى التفاوض عليهما حالياً.

إذا كان محرك الأقراص قادراً على العمل بوصلة أعرض، لكن أظهر LnkSta عدداً أقل من المسارات، فهذا يعني أن المنصة تشغّل الجهاز حالياً بعرض الوصلة الأضيق الذي جرى التفاوض عليه.

ربط أسماء NVMe بعناوين PCIe

وجد صاحب المنشور الأصلي أيضاً أن مخرجات nvme-cli المطوّلة مفيدة لمطابقة أسماء الأجهزة في Linux بوحدات التحكم وعناوين PCIe:

nvme list -v

وهذا يسهّل ربط إدخال مثل /dev/nvme1 بعنوان PCI الذي تفحصه باستخدام lspci.

يجيب LnkSta عن سؤال تفاوض PCIe. لكنه لا يخبرك بسرعة الكتابة التسلسلية الفعلية لمحرك SSD، أو عدد عمليات الإدخال والإخراج العشوائية في الثانية، أو سلوك خفض الأداء الحراري، أو الأداء المستدام.

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

لا تشغّل اختبارات مدمّرة على جهاز خام لنظام ملفات أو قرص يحتوي على بيانات تحتاج إليها.

السياق الحالي لـ PCIe والاختبارات

يفيد منظومة Zima لـ PCIe في فهم الفرق بين المنفذ الفعلي وعرض مساراته الكهربائية الفعلي. وتعرض بطاقات توسعة PCIe أنواع محولات NVMe والشبكات المستخدمة في مشروعات توسعة Zima، بينما توفّر أجهزة ZimaBoard 2 مثالاً حالياً ملموساً لمنصة تُحدَّد فيها صراحةً أجيال PCIe وعدد المسارات.

تعرّف أداة فحص الأجهزة lspci الأمر lspci على أنه أداة Linux لفحص نواقل PCI والأجهزة، بينما توضّح قائمة أجهزة nvme-cli كيفية ربط nvme list -v بين وحدات التحكم ومساحات الأسماء ووسيلة النقل وعناوين PCIe. ولقياس الإدخال والإخراج الفعلي بدلاً من تفاوض الناقل، استخدم وثائق أعباء العمل في fio؛ إذ يغيّر عمق قائمة الانتظار وحجم الكتلة ومزيج القراءة والكتابة وحجم الاختبار النتيجة كلها.

الخلاصة

استخدم lspci -vv للتحقق من جيل PCIe وعرض المسارات اللذين جرى التفاوض عليهما، واستخدم nvme list -v لربط أجهزة NVMe بعناوين PCIe الخاصة بها. ثم أجرِ اختباراً منفصلاً إذا كنت تحتاج إلى معرفة معدل نقل التخزين الفعلي. فمعدل الوصلة الذي جرى التفاوض عليه خاصية للناقل، وليس مقياساً لأداء SSD.