تم اكتشاف خلل في نواة نظام التشغيل لينكس 7.0 يؤدي إلى انخفاض أداء PostgreSQL إلى النصف.

حدد مهندس في أمازون خللاً خاصاً بنواة لينكس 7.0، والمتوقع إصدارها في 13 أبريل. أدى تغيير في إعدادات جدولة المهام إلى انخفاض ملحوظ في الإنتاجية والاستجابة عند تشغيل PostgreSQL على أنظمة ARM64. باستخدام النواة 7.0، انخفض الأداء في اختبار pgbench "simple-update" إلى النصف تقريباً، من 98565 إلى 50751.

نتج التباطؤ عن تغيير وضع الاستباق الافتراضي للمجدول من PREEMPT_NONE إلى PREEMPT_LAZY على البنى التي تدعمه. تسبب هذا في استهلاك PostgreSQL لـ 55% من وقت وحدة المعالجة المركزية لاستدعاء الدالة s_lock() في مساحة المستخدم. لحل هذه المشكلة، يُقترح إعادة PREEMPT_NONE إلى الوضع الافتراضي وفصله عن إعداد ARCH_NO_PREEMPT.

صرح بيتر زيلسترا، مؤلف التغييرات التي تسببت في التراجع ومسؤول صيانة مُجدول المهام والأنظمة الفرعية المتعلقة بالأقفال في نواة النظام، بضرورة تطبيق إصلاح في كود PostgreSQL. ولمعالجة تدهور الأداء، أوصى باستخدام امتداد "rseq slice" (التسلسلات القابلة لإعادة التشغيل) المُضاف حديثًا إلى نواة PostgreSQL للحد من احتمالية إخلاء حامل القفل.

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

المصدر: opennet.ru

إضافة تعليق