ملاحظات حول إصدار النواة

تلخّص هذه الصفحة الميزات الرئيسية في كل إصدار من إصدارات النواة وتوفّر روابط تؤدي إلى معلومات إضافية.

الميزات الجديدة في الإصدار 6.12 من النواة

يوضّح هذا القسم الميزات الجديدة في الإصدار 6.12 من النواة.

تحليل تخصيص الذاكرة

يكمن مفتاح فهم استخدام الذاكرة في معرفة أماكن عمليات التخصيص. يتضمّن الإصدار 6.12 من النواة نظامًا جديدًا لتحديد مصدر تخصيص الذاكرة يُعرف باسم تحديد مصدر تخصيص الذاكرة (CONFIG_MEM_ALLOC_PROFILING في الإعداد). باستخدام ميزة "تحديد مصدر تخصيص الذاكرة"، يتم ربط كل عملية تخصيص بسطر مصدر فريد حتى يمكن تحديد المشاكل المتعلّقة بعمليات التخصيص بسرعة. بالإضافة إلى ذلك، يتيح لك تحليل تخصيص الذاكرة ما يلي:

  • يتم استخدامها أثناء مرحلة الهندسة، ولكنّها متاحة في صورة GKI العادية.

  • يمكن تفعيلها باستخدام المَعلمة sysctl.vm.mem_profiling boot.

  • يمكن استخدامها لكلّ من الوحدات النمطية المضمّنة في النواة وتلك التي تم تحميلها.

‫io_uring أسرع مع ميزة "النسخ بدون وسيط" والقراءة المتعدّدة

في النواة 6.12، تستخدم الوحدتان statsd وlogd ميزة sendfile zero-copy، ما يؤدي إلى تحسين أدائهما.

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

تحسين إمكانات "مرشّح حزمة بيانات بيركلي" (BPF) وتوفير الدعم له

في النواة 6.12، تم نقل سلسلة أدوات BPF لتتوافق مع CO-RE والعديد من الميزات الحديثة. بالإضافة إلى ذلك، يتيح برنامج تحميل BPF الجديد استخدام BPF الحديثة للبرامج التي تشكّل جزءًا من مشروع AOSP.

تنفيذ الخادم الوكيل

تتيح عملية التنفيذ بالوكالة للمجدول استعارة دورات وحدة المعالجة المركزية من العمليات ذات الأولوية العالية لاسترداد الأقفال التي تحتفظ بها العمليات ذات الأولوية المنخفضة. تساعد هذه الميزة في الحدّ من مشاكل انعكاس الأولوية.

الميزات الجديدة في الإصدار 6.6 من النواة

يوضّح هذا القسم الميزات الجديدة في الإصدار 6.6 من النواة.

دعم Rust

تستخدم العديد من مشاريع النواة 6.6 لغة Rust.

عمليات قفل لكل منطقة ذاكرة افتراضية (VMA)

يستخدم الإصدار 6.6 من النواة عمليات قفل لكل مساحة ذاكرة افتراضية لمعالجة مشاكل التنازع مع mmap_lock (المعروفة سابقًا باسم mmap_sem). ونتيجةً لذلك، قد تنخفض أوقات تشغيل التطبيقات التي تستخدم عددًا كبيرًا من سلاسل التعليمات بنسبة تصل إلى %20.

يحلّ برنامج جدولة "أقرب موعد نهائي افتراضي مؤهّل أولاً" محلّ CFS

يحلّ EEVDF محلّ Completely Fair Scheduler (CFS) لتحقيق توازن أفضل في إمكانية الوصول إلى وحدة المعالجة المركزية بين المهام القصيرة والطويلة الأمد.

تقليل استهلاك الطاقة من عمليات معاودة الاتصال في "تحديث النسخة للقراءة" (RCU)

يستخدم الخيار RCU_LAZY طريقة تجميع دفعات استدعاءات RCU المستندة إلى المؤقت لتوفير الطاقة. بالنسبة إلى نظام ذي حمل خفيف أو نظام غير نشط، يمكن أن يقلّل هذا الخيار من استهلاك الطاقة بنسبة تتراوح بين% 5 و%10.

ضغط أفضل للذاكرة باستخدام ZRAM

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

الميزات الجديدة في الإصدار 6.1 من النواة

يوضّح هذا القسم الميزات الجديدة في الإصدار 6.1 من النواة.

أمان أسرع باستخدام ميزة "سلامة تدفّق التحكّم في النواة" (KCFI)

يحلّ KCFI محلّ ميزة "سلامة تدفق التحكّم" (CFI)، ما يؤدي إلى خفض تكلفة وقت التشغيل بدون أي تكلفة في وقت الإنشاء. تتيح تكلفة وقت التشغيل المنخفضة تفعيل KCFI في أماكن أكثر مقارنةً بـ CFI، لا سيما نقاط التتبُّع وخطافات المورّدين.

بالإضافة إلى KCFI، يقدّم الإصدار 6.1 من النواة العديد من ميزات الأمان، مثل التحقّق الدقيق من حدود memcpy وإجراءات التخفيف من هجمات التخمين المباشر.

لمزيد من المعلومات حول KCFI، يُرجى الاطّلاع على مقالة سلامة تدفّق التحكّم في النواة.

Multi-Generational LRU (MGLRU)

تمت إضافة MGLRU إلى الإصدار 6.1 من النواة لتحسين إدارة الذاكرة من خلال تحديد الصفحات المستخدَمة فعليًا بشكل أفضل. يقلّل هذا التحسين من الحاجة إلى إيقاف التطبيقات مؤقتًا عندما يواجه النظام نقصًا في الذاكرة. ويحسّن هذا التحديث أيضًا تجربة المستخدم لأنّه يرفع من مستوى استجابة الجهاز بشكل عام.

يتضمّن تنفيذ MGLRU أيضًا إتاحة استخدام شجرة maple جديدة آمنة للاستخدام المتزامن، والتي يمكن استخدامها في بعض الحالات بدلاً من شجرة البحث الثنائية المتوازنة (rbtree). عند استخدام شجرة Maple المتوافقة مع RCU، يتحسّن الأداء بسبب صغر حجمها وعدم الحاجة إلى قفلها.

لمزيد من المعلومات عن MGLRU، يُرجى الاطّلاع على Multi-Gen LRU.

الجدولة

يُعدّ الحفاظ على أداة الجدولة وتحديثها جانبًا أساسيًا من العمل على تحسين النواة. تشمل تحديثات النواة في الإصدار 6.1 ما يلي:

  • تمت إضافة جدولة متوافقة مع المجموعات، ما يؤدي إلى زيادة الأداء من خلال نقل البيانات إلى النوى التي تتشارك ذاكرة التخزين المؤقت من المستوى الثاني.
  • تمت إزالة قاعدة الاستدلال غير الضرورية بشأن هامش الطاقة. من خلال الحدّ من بعض عمليات نقل البيانات، يحسّن هذا التحديث من استخدام الطاقة بنسبة تصل إلى %5.
  • تحسين موازنة التحميل لتقليل وقت استجابة التنشيط
  • تم نقل فترات السماح المعجَّلة لوحدة RCU إلى سلسلة kthread في الوقت الفعلي. أدّى هذا التحديث إلى خفض كبير في القيم المتطرفة لزمن الاستجابة المرتبط بعمليات القراءة والتحديث والمقارنة.

الرسومات

يتضمّن الإصدار 6.1 من النواة طرقًا جديدة لاستيراد ملفات المزامنة وتصديرها إلى dma-buf، بما يتوافق مع متطلبات Vulcan Video API.

تسهّل طريقة futex_waitv() الجديدة نقل الألعاب من منصات أخرى من خلال انتظار عدة futexes في الوقت نفسه.

أدوات تصحيح الأخطاء

استخدِم أداة Kernel Concurrency SANitizer (KCSAN) في إصدارات تصحيح الأخطاء لتحديد حالات التزامن المتعارض في رمز النواة.

بالإضافة إلى ذلك، استخدِم أداة Kernel Memory SANitizer (KMSAN) للعثور على القيم غير المهيأة في النواة.

تحسينات على توافق ARM64

يوفّر إصدار النواة 6.1 العديد من التحسينات لبنية ARM64، بما في ذلك:

  • توفير دعم لإضافات المؤقت ARMv8.6
  • التوافق مع خوارزمية مصادقة المؤشر QARMA3
  • إتاحة الدعم الأولي لـ ARMv9 Scalable Matrix Extension (SME)
  • تحسينات على تصحيح ميزة "البدائل" تؤدي إلى تقليل حجم صورة النواة