تلخّص هذه الصفحة الميزات الرئيسية في كل إصدار من إصدارات النواة وتوفّر روابط تؤدي إلى معلومات إضافية.
الميزات الجديدة في الإصدار 6.12 من النواة
يوضّح هذا القسم الميزات الجديدة في الإصدار 6.12 من النواة.
تحليل استخدام الذاكرة
يكمن مفتاح فهم استخدام الذاكرة في معرفة الأماكن التي يتم فيها تخصيص الذاكرة.
يتضمّن الإصدار 6.12 من النواة نظامًا جديدًا لتحديد مصدر تخصيص الذاكرة يُعرف باسم
تحديد مصدر تخصيص الذاكرة (CONFIG_MEM_ALLOC_PROFILING في الإعداد).
باستخدام ميزة تحليل تخصيص الذاكرة، يتم ربط كل عملية تخصيص بسطر مصدر فريد حتى يمكن تحديد المشاكل المتعلقة بعمليات التخصيص بسرعة.
بالإضافة إلى ذلك، يتيح لك تحليل تخصيص الذاكرة ما يلي:
يتم استخدامها أثناء مرحلة الهندسة، ولكنّها متاحة في صورة GKI العادية.
يمكن تفعيلها باستخدام المَعلمة
sysctl.vm.mem_profilingboot.يمكن استخدامها لكلّ من الوحدات النمطية المضمّنة في النواة والوحدات النمطية المحمَّلة.
تحسين أداء 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_lock (المعروفة سابقًا باسم mmap_sem). ونتيجةً لذلك، قد تنخفض أوقات تشغيل التطبيقات التي تستخدم عددًا كبيرًا من سلاسل التعليمات بنسبة تصل إلى %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 جديدة آمنة للاستخدام المتزامن، والتي يمكن استخدامها في بعض الحالات بدلاً من شجرة البحث الثنائية المتوازنة (rbtree). عند استخدام شجرة Maple المتوافقة مع RCU، يتحسّن الأداء بسبب صغر حجمها وعدم الحاجة إلى قفلها.
لمزيد من المعلومات عن MGLRU، يُرجى الاطّلاع على Multi-Gen LRU.
الجدولة
يُعدّ الحفاظ على أداة الجدولة وتعديلها جانبًا أساسيًا من العمل على تحسين النواة. تشمل تحديثات النواة في الإصدار 6.1 ما يلي:
- تمت إضافة ميزة الجدولة المتوافقة مع المجموعات، ما يؤدي إلى تحسين الأداء من خلال نقل البيانات إلى النوى التي تشارك ذاكرة التخزين المؤقت من المستوى الثاني.
- تمت إزالة قاعدة الاستدلال غير الضرورية المتعلقة بهامش الطاقة. من خلال الحدّ من بعض عمليات نقل البيانات، يحسّن هذا التحديث من استخدام الطاقة بنسبة تصل إلى %5.
- تحسين موازنة التحميل لتقليل وقت استجابة التنشيط
- تم نقل فترات السماح المعجَّلة لوحدة RCU إلى kthread في الوقت الفعلي. أدّى هذا التحديث إلى تقليل القيم المتطرفة لوقت الاستجابة المرتبطة بوحدة RCU بشكل كبير.
الرسومات
يتضمّن الإصدار 6.1 من النواة طرقًا جديدة لاستيراد ملفات المزامنة وتصديرها إلى dma-buf، بما يتوافق مع متطلبات Vulcan Video API.
تسهّل طريقة futex_waitv() الجديدة نقل الألعاب من منصات أخرى من خلال انتظار عدة futex في الوقت نفسه.
أدوات تصحيح الأخطاء
استخدِم أداة Kernel Concurrency SANitizer (KCSAN) في إصدارات تصحيح الأخطاء لتحديد حالات التزامن المتعارض في رمز النواة.
بالإضافة إلى ذلك، استخدِم أداة Kernel Memory SANitizer (KMSAN) للعثور على القيم غير المهيأة في النواة.
تحسينات على توافق ARM64
يتضمّن الإصدار 6.1 من النواة العديد من التحسينات لبنية ARM64، بما في ذلك:
- توفير دعم لإضافات المؤقت ARMv8.6
- إتاحة خوارزمية مصادقة المؤشر QARMA3
- توفير الدعم الأولي لـ ARMv9 Scalable Matrix Extension (SME)
- تحسينات على ميزة تصحيح الأخطاء في الرموز البديلة، ما يؤدي إلى تقليل حجم صورة النواة