تلخّص هذه الصفحة الميزات الرئيسية في كل إصدار من إصدارات النواة وتوفّر روابط تؤدي إلى معلومات إضافية.
الميزات الجديدة في الإصدار 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 الحديثة للبرامج التي تشكّل جزءًا من مشروع Android المفتوح المصدر (AOSP).
تنفيذ الخادم الوكيل
تتيح عملية التنفيذ بالوكالة للمجدول استعارة دورات وحدة المعالجة المركزية من العمليات ذات الأولوية العالية لاسترداد الأقفال التي تحتفظ بها العمليات ذات الأولوية المنخفضة. تساعد هذه الميزة في الحدّ من مشاكل انعكاس الأولوية.
الميزات الجديدة في الإصدار 6.6 من النواة
يوضّح هذا القسم الميزات الجديدة في الإصدار 6.6 من النواة.
دعم Rust
تستخدم العديد من مشاريع النواة 6.6 لغة 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 من النواة.
أمان أسرع باستخدام ميزة "سلامة تدفّق التحكّم في النواة" (KCFI)
يحلّ KCFI محلّ ميزة "سلامة تدفق التحكّم" (CFI)، ما يؤدي إلى خفض تكلفة وقت التشغيل بدون أي تكلفة في وقت الإنشاء. تتيح تكلفة وقت التشغيل المنخفضة تفعيل KCFI في أماكن أكثر مقارنةً بـ CFI، لا سيما نقاط التتبّع وخطافات المورّد.
بالإضافة إلى KCFI، يقدّم الإصدار 6.1 من النواة العديد من ميزات الأمان، مثل
التحقّق الدقيق من حدود memcpy
وإجراءات التخفيف من هجمات التخمين المباشر.
لمزيد من المعلومات حول KCFI، يُرجى الاطّلاع على مقالة سلامة تدفّق التحكّم في النواة.
Multi-Generational LRU (MGLRU)
تمت إضافة MGLRU إلى الإصدار 6.1 من النواة لتحسين إدارة الذاكرة من خلال تحديد الصفحات المستخدَمة فعليًا بشكل أفضل. يقلّل هذا التحسين من الحاجة إلى إيقاف التطبيقات مؤقتًا عندما يواجه النظام نقصًا في الذاكرة. ويساهم هذا التحديث أيضًا في تحسين تجربة المستخدم لأنّه يحسّن استجابة الجهاز بشكل عام.
يتضمّن تنفيذ MGLRU أيضًا إتاحة استخدام شجرة maple جديدة آمنة في RCU، والتي يمكن استخدامها في بعض الحالات بدلاً من شجرة البحث الثنائي المتوازن (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)
- تحسينات على تصحيح ميزة "البدائل" تؤدي إلى تقليل حجم صورة النواة