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

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

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

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

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

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

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

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

  • يعمل هذا الإجراء مع الوحدات المضمّنة في النواة والوحدات المحمَّلة.

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

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

بالإضافة إلى ذلك، ينفِّذ إصدار kernel هذا ميزة القراءة المتعدّدة حيث يمكن لعملية قراءة واحدة retrieving multiple pieces of data simultaneously، ما يؤدي إلى تحسين الأداء.

تحسين إمكانات ودعم Berkeley Packet Filter (BPF)

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

التنفيذ الوكيل

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

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

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

دعم Rust

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

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

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

جدولة "أقرب مهلة افتراضية مؤهَّلة أولاً" (EEVDF) تحلّ محلّ جدولة "الاستجابة السريعة" (CFS)

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

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

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

ضغط أفضل للذاكرة في ZRAM

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

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

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

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

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

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

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

LRU متعددة الأجيال (MGLRU)

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

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

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

الجدولة

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

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

الرسومات

يحتوي الإصدار 6.1 من "النواة" على طرق جديدة لـ dma-buf من أجل تصدير ملفات sync واستيرادها، بما يتوافق مع الحاجة إلى Vulcan Video API.

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

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

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

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

تحسينات على دعم ARM64

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

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