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

تلخِّص هذه الصفحة الميزات الرئيسية في كل إصدار من إصدارات 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 (BPF)

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

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

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

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

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

دعم الصدأ

تستخدم مشاريع متعددة من الإصدار 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 من نواة Linux

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

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

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

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

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

"الذاكرة المؤقتة ذات العناصر الأقل استخدامًا من عدة أجيال" (MGLRU)

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

يتضمّن تنفيذ MGLRU أيضًا إتاحة شجرة خريف جديدة متوافقة مع تقنية RCU، ويمكن استخدامها في بعض الحالات لاستبدال شجرة red-black (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.

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

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

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

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