Linux kernel 5.14 تحديث

Linux kernel 5.14 تحديث

بعد شهرين من تطوير لينوس تورفالدس المقدمة الافراج عن النواة لينكس شنومكس. من بين أبرز التغييرات: استدعاءات نظام quotactl_fd() وmemfd_secret() الجديدة، وإزالة برامج التشغيل ide وبرامج التشغيل الأولية، ووحدة تحكم أولوية الإدخال/الإخراج الجديدة لمجموعة cgroup، ووضع جدولة المهام SCHED_CORE، والبنية التحتية لإنشاء أدوات تحميل برنامج BPF التي تم التحقق منها.

يتضمن الإصدار الجديد 15883 إصلاحًا من 2002 مطورًا، وحجم التصحيح هو 69 ميجابايت (أثرت التغييرات على 12580 ملفًا، وتمت إضافة 861501 سطرًا من التعليمات البرمجية، وتم حذف 321654 سطرًا). حوالي 47% من جميع التغييرات التي تم إدخالها في 5.14 تتعلق ببرامج تشغيل الأجهزة، وحوالي 14% من التغييرات تتعلق بتحديث التعليمات البرمجية الخاصة ببنيات الأجهزة، و13% تتعلق بمكدس الشبكات، و3% تتعلق بأنظمة الملفات، و3% ترتبط بالأنظمة الفرعية للنواة الداخلية.

رئيسي الابتكارات:

  • نظام القرص الفرعي وأنظمة الإدخال/الإخراج وأنظمة الملفات:
    • لمجموعة cgroup مُنفّذ وحدة تحكم أولوية الإدخال/الإخراج الجديدة - rq-qos، والتي يمكنها التحكم في أولوية معالجة طلبات حظر الأجهزة التي تم إنشاؤها بواسطة أعضاء كل مجموعة تحكم. تمت إضافة دعم جديد لوحدة التحكم ذات الأولوية إلى برنامج جدولة الإدخال/الإخراج mq-deadline؛
    • على نظام الملفات ext4 مُنفّذ أمر ioctl الجديد EXT4_IOC_CHECKPOINT، الذي يفرض جميع المعاملات المعلقة من السجل والمخازن المؤقتة المرتبطة به على القرص، ويستبدل أيضًا المنطقة المستخدمة بواسطة مخزن السجل. تم إعداد التغيير كجزء من مبادرة لمنع تسرب المعلومات من أنظمة الملفات؛
    • في بترفس صنع تحسينات الأداء: من خلال إزالة التسجيل غير الضروري للسمات الموسعة أثناء تنفيذ fsync، زاد أداء العمليات المكثفة ذات السمات الموسعة بنسبة تصل إلى 17%. بالإضافة إلى ذلك، عند إجراء عمليات القطع التي لا تؤثر على النطاقات، يتم تعطيل المزامنة الكاملة، مما يقلل وقت العملية بنسبة 12%. تمت إضافة إعداد إلى sysfs للحد من عرض النطاق الترددي للإدخال/الإخراج عند التحقق من FS. تمت إضافة مكالمات ioctl لإلغاء تغيير حجم عمليات الجهاز وحذفها؛
    • في اكس اف اس إعادة صياغتها تنفيذ ذاكرة التخزين المؤقت، والتي يتم نقلها إلى تخصيص صفحات الذاكرة في الوضع الدفعي. تحسين كفاءة ذاكرة التخزين المؤقت.
    • أضاف F2FS خيارًا للعمل في وضع القراءة فقط وطبق وضع التخزين المؤقت للكتلة المضغوطة (compress_cache) لتحسين أداء القراءة العشوائية. تم تنفيذ الدعم لضغط الملفات المعينة للذاكرة باستخدام عملية mmap(). لتعطيل ضغط الملفات بشكل انتقائي بواسطة القناع، تم اقتراح خيار تحميل جديد nocompress؛
    • تم تنفيذ العمل في برنامج التشغيل exFAT لتحسين التوافق مع تخزين بعض الكاميرات الرقمية؛
    • تمت إضافة مكالمة النظام quotactl_fd()، والذي يسمح لك بإدارة الحصص ليس من خلال ملف جهاز خاص، ولكن عن طريق تحديد واصف ملف مرتبط بنظام الملفات الذي يتم تطبيق الحصة عليه؛
    • تمت إزالة برامج التشغيل القديمة لأجهزة الكتلة ذات واجهة IDE من النواة، وتم استبدالها منذ فترة طويلة بنظام libata الفرعي. تم الاحتفاظ بدعم الأجهزة القديمة بالكامل، وتتعلق التغييرات فقط بالقدرة على استخدام برامج التشغيل القديمة، والتي تم استدعاء محركات الأقراص عند استخدامها /dev/hd*، وليس /dev/sd*؛
    • تمت إزالة برنامج التشغيل "الخام" من النواة، مما يوفر وصولاً غير مخزن إلى الأجهزة المحظورة عبر واجهة /dev/raw. تم تنفيذ هذه الوظيفة منذ فترة طويلة في التطبيقات التي تستخدم علامة O_DIRECT؛
  • خدمات الذاكرة والنظام:
    • تم تنفيذ وضع جدولة جديد في برنامج جدولة المهام SCHED_CORE، والذي يسمح لك بالتحكم في العمليات التي يمكن تشغيلها معًا على نفس وحدة المعالجة المركزية. يمكن تعيين معرف ملف تعريف الارتباط لكل عملية والذي يحدد نطاق الثقة بين العمليات (على سبيل المثال، المنتمين إلى نفس المستخدم أو الحاوية). عند تنظيم تنفيذ التعليمات البرمجية، يمكن للمجدول التأكد من مشاركة نواة وحدة المعالجة المركزية (CPU) واحدة فقط بين العمليات المرتبطة بنفس المالك، والتي يمكن استخدامها لمنع بعض هجمات Spectre عن طريق منع تشغيل المهام الجديرة بالثقة وغير الجديرة بالثقة على نفس SMT (Hyper Threading). خيط؛
    • بالنسبة لآلية cgroup، تم تنفيذ دعم عملية القتل، والتي تسمح لك بقتل جميع العمليات المرتبطة بالمجموعة مرة واحدة (أرسل SIGKILL) عن طريق كتابة "1" في الملف الافتراضي cgroup.kill؛
    • القدرات الموسعة المتعلقة بالاستجابة لاكتشاف الأقفال المنقسمة ("الأقفال المقسمة") التي تحدث عند الوصول إلى البيانات غير المحاذاة في الذاكرة نظرًا لحقيقة أنه عند تنفيذ تعليمات ذرية، تتقاطع البيانات مع خطين من ذاكرة التخزين المؤقت لوحدة المعالجة المركزية. يؤدي هذا الحظر إلى انخفاض كبير في الأداء، لذا كان من الممكن في السابق إنهاء التطبيق الذي تسبب في الحظر بالقوة. يضيف الإصدار الجديد معلمة سطر أوامر kernel "split_lock_detect=ratelimit:N"، والتي تسمح لك بتحديد حد على مستوى النظام لمعدل عمليات القفل في الثانية، وبعد تجاوزه سيتم تجاوز أي عملية أصبحت مصدر القفل المقسم تضطر إلى التوقف لمدة 20 مللي ثانية بدلاً من الإنهاء؛
    • تتمتع وحدة التحكم في عرض النطاق الترددي cgroup CFS (وحدة التحكم في عرض النطاق الترددي CFS)، والتي تحدد مقدار وقت المعالج الذي يمكن تخصيصه لكل مجموعة cgroup، بالقدرة على تحديد حدود محدودة بمدة معينة من العمل، مما يسمح بتنظيم أفضل للأحمال الحساسة لزمن الوصول. على سبيل المثال، ضبط cpu.cfs_quota_us على 50000 وcpu.cfs_period_us على 100000 سيسمح لمجموعة من العمليات بإهدار 100 مللي ثانية من وقت وحدة المعالجة المركزية كل 50 مللي ثانية؛
    • مضاف البنية التحتية الأولية لإنشاء برامج تحميل برامج BPF، والتي ستسمح أيضًا بتنزيل برامج BPF فقط الموقعة بمفتاح رقمي جدير بالثقة؛
    • تمت إضافة عملية futex جديدة FUTEX_LOCK_PI2، والتي تستخدم مؤقتًا رتيبًا لحساب المهلة، والتي تأخذ في الاعتبار الوقت الذي يقضيه النظام في وضع السكون؛
    • لبنية RISC-V ودعم صفحات الذاكرة الكبيرة (Transparent Huge-Pages) والقدرة على استخدام كفينس لتحديد الأخطاء عند العمل مع الذاكرة.
    • في استدعاء النظام madvise()، والذي يوفر وسيلة لتحسين إدارة ذاكرة العملية، مضاف إشارات MADV_POPULATE_READ وMADV_POPULATE_WRITE لإنشاء "خطأ صفحة" على كافة صفحات الذاكرة المعينة لعمليات القراءة أو الكتابة، دون إجراء قراءة أو كتابة فعلية (الافتراضي). يمكن أن يكون استخدام العلامات مفيدًا لتقليل التأخير في تنفيذ البرنامج، وذلك بفضل التنفيذ الاستباقي لمعالج "خطأ الصفحة" لجميع الصفحات غير المخصصة مرة واحدة، دون انتظار الوصول الفعلي إليها؛
    • في نظام اختبار الوحدة كونيت مضاف دعم إجراء الاختبارات في بيئة QEMU؛
    • تمت إضافة تتبعات جديدة: "com.osnoise" لتتبع تأخيرات التطبيق الناتجة عن معالجة المقاطعة، و" timerlat " لعرض معلومات مفصلة حول التأخير عند الاستيقاظ من إشارة المؤقت؛
  • المحاكاة الافتراضية والأمن:
    • مضاف مكالمة النظام memfd_secret()، والذي يسمح لك بإنشاء منطقة ذاكرة خاصة في مساحة عنوان معزولة، تكون مرئية فقط لعملية المالك، ولا تنعكس في العمليات الأخرى ولا يمكن للنواة الوصول إليها مباشرة؛
    • في نظام تصفية مكالمات نظام seccomp، عند نقل معالجات القفل إلى مساحة المستخدم، من الممكن استخدام عملية ذرية واحدة لإنشاء واصف ملف لمهمة معزولة وإعادته عند معالجة استدعاء النظام. العملية المقترحة تحل المشكلة مع انقطاع المعالج في مساحة المستخدم عند وصول الإشارة؛
    • مضاف آلية جديدة لإدارة تحديد الموارد في مساحة اسم معرف المستخدم، والتي تربط عدادات rlimit الفردية بمستخدم في "مساحة اسم المستخدم". يعمل هذا التغيير على حل مشكلة استخدام عدادات الموارد العامة عندما يقوم مستخدم واحد بتشغيل العمليات في حاويات مختلفة؛
    • أضاف برنامج Hypervisor KVM لأنظمة ARM64 القدرة على استخدام ملحق MTE (MemTag، Memory Tagged Extension) في أنظمة الضيف، والذي يسمح لك بربط العلامات بكل عملية تخصيص للذاكرة وتنظيم التحقق من الاستخدام الصحيح للمؤشرات لمنع استغلال نقاط الضعف الناجمة عن الوصول إلى كتل الذاكرة المحررة بالفعل، والمخازن المؤقتة الفائضة، والوصول قبل التهيئة والاستخدام خارج السياق الحالي؛
    • يمكن الآن تكوين مصادقة المؤشر التي توفرها منصة ARM64 بشكل منفصل للنواة ومساحة المستخدم. تتيح لك هذه التقنية استخدام تعليمات ARM64 المتخصصة للتحقق من عناوين الإرجاع باستخدام التوقيعات الرقمية المخزنة في الأجزاء العلوية غير المستخدمة من المؤشر نفسه؛
    • في وضع المستخدم لينكس مضاف دعم استخدام برامج تشغيل أجهزة PCI مع ناقل PCI افتراضي، يتم تنفيذه بواسطة برنامج تشغيل PCI-over-virtio؛
    • بالنسبة لأنظمة x86، تمت إضافة دعم للجهاز شبه الافتراضي Virtio-iommu، والذي يسمح لك بإرسال طلبات IOMMU، مثل ATTACH وDETACH وMAP وUNMAP، عبر النقل الظاهري دون محاكاة جداول صفحات الذاكرة؛
    • بالنسبة لوحدات المعالجة المركزية Intel، من عائلة Skylake إلى Coffee Lake، يتم تعطيل استخدام Intel TSX (امتدادات مزامنة المعاملات)، التي توفر أدوات لتحسين أداء التطبيقات متعددة الخيوط عن طريق التخلص ديناميكيًا من عمليات المزامنة غير الضرورية، افتراضيًا. تم تعطيل الإضافات بسبب احتمالية حدوث هجمات Zombieload، معالجة تسرب المعلومات من خلال قنوات الطرف الثالث التي تحدث أثناء تشغيل آلية الانقطاع غير المتزامن للعمليات (TAA، TSX Asynchronous Abort)؛
  • النظام الفرعي للشبكة:
    • التكامل المستمر في جوهر MPTCP (MultiPath TCP)، وهو امتداد لبروتوكول TCP لتنظيم تشغيل اتصال TCP مع تسليم الحزم في وقت واحد عبر عدة مسارات عبر واجهات شبكة مختلفة مرتبطة بعناوين IP مختلفة. في العدد الجديد مضاف آلية لإعداد سياسات تجزئة حركة المرور الخاصة بك لـ IPv4 وIPv6 (سياسة التجزئة متعددة المسارات)، مما يتيح من مساحة المستخدم تحديد الحقول الموجودة في الحزم، بما في ذلك الحقول المغلفة، التي سيتم استخدامها عند حساب التجزئة التي تحدد اختيار المسار للحزمة؛
    • تمت إضافة دعم المقبس إلى خدمة النقل الافتراضية SOCK_SEQPACKET (نقل منظم وموثوق لوحدات البيانات)؛
    • تم توسيع إمكانيات آلية مأخذ التوصيل SO_REUSEPORT، مما يسمح لعدة مآخذ استماع بالاتصال بمنفذ واحد في وقت واحد لاستقبال الاتصالات مع توزيع الطلبات الواردة في وقت واحد عبر جميع المقابس المتصلة عبر SO_REUSEPORT، مما يبسط إنشاء تطبيقات خادم متعددة الخيوط . في النسخة الجديدة مضاف وسيلة لنقل التحكم إلى مأخذ توصيل آخر في حالة الفشل عند معالجة الطلب بواسطة المقبس المحدد في البداية (يحل مشكلة فقدان الاتصالات الفردية عند إعادة تشغيل الخدمات)؛
  • معدات:
    • في برنامج التشغيل amdgpu مُنفّذ دعم سلسلة وحدات معالجة الرسوميات AMD Radeon RX 6000 الجديدة، والتي تحمل الاسم الرمزي "Beige Goby" (Navi 24) و"Yellow Carp"، بالإضافة إلى الدعم المحسن لوحدة معالجة الرسوميات Aldebaran (gfx90a) وVan Gogh APU. تمت إضافة القدرة على العمل في وقت واحد مع العديد من لوحات eDP. بالنسبة لـ APU Renoir، تم تنفيذ دعم العمل مع المخازن المؤقتة المشفرة في ذاكرة الفيديو (TMZ، Trusted Memory Zone). تمت إضافة دعم لبطاقات الرسومات القابلة للفصل السريع. بالنسبة لوحدات معالجة الرسومات Radeon RX 6000 (Navi 2x) ووحدات معالجة الرسومات AMD الأقدم، يتم تمكين دعم آلية توفير الطاقة ASPM (إدارة الطاقة النشطة) افتراضيًا، والتي تم تمكينها مسبقًا فقط لوحدات معالجة الرسومات Navi 1x وVega وPolaris؛
    • بالنسبة لشرائح AMD، تمت إضافة دعم الذاكرة الافتراضية المشتركة (SVM، الذاكرة الافتراضية المشتركة) استنادًا إلى النظام الفرعي HMM (إدارة الذاكرة غير المتجانسة)، والذي يسمح باستخدام الأجهزة مع وحدات إدارة الذاكرة الخاصة بها (MMU، وحدة إدارة الذاكرة)، والتي يمكن الوصول إلى الذاكرة الرئيسية. بما في ذلك استخدام HMM، يمكنك تنظيم مساحة عنوان مشتركة بين وحدة معالجة الرسومات ووحدة المعالجة المركزية، حيث يمكن لوحدة معالجة الرسومات الوصول إلى الذاكرة الرئيسية للعملية؛
    • وأضاف الدعم التكنولوجي الأولي AMD التحول الذكي، والذي يغير ديناميكيًا معلمات استهلاك الطاقة لوحدة المعالجة المركزية ووحدة معالجة الرسومات على أجهزة الكمبيوتر المحمولة المزودة بمجموعة شرائح وبطاقة رسومات AMD لتعزيز الأداء عند اللعب وتحرير الفيديو والعرض ثلاثي الأبعاد؛
    • في برنامج التشغيل i915 لبطاقات فيديو Intel يتم تضمين ودعم رقائق Intel Alderlake P؛
    • تمت إضافة برنامج تشغيل drm/hyperv لمحول الرسومات الظاهري Hyper-V؛
    • مضاف برنامج تشغيل رسومات simpledrm الذي يستخدم مخزن الإطارات المؤقت EFI-GOP أو VESA الذي يوفره البرنامج الثابت UEFI أو BIOS للإخراج. الغرض الرئيسي من برنامج التشغيل هو توفير إمكانات الإخراج الرسومية أثناء المراحل الأولية للتمهيد، قبل استخدام برنامج تشغيل DRM الكامل. يمكن أيضًا استخدام برنامج التشغيل كحل مؤقت للمعدات التي لا تحتوي بعد على برامج تشغيل DRM أصلية؛
    • مضاف الكل في واحد دعم الكمبيوتر التوت بي 400;
    • تمت إضافة برنامج تشغيل الخصوصية dell-wmi لدعم مفاتيح أجهزة الكاميرا والميكروفون المضمنة في أجهزة الكمبيوتر المحمولة من Dell؛
    • لأجهزة الكمبيوتر المحمولة لينوفو مضاف واجهة WMI لتغيير معلمات BIOS عبر sysfs /sys/class/firmware-attributes/;
    • موسع دعم الأجهزة ذات واجهة USB4؛
    • مضاف دعم بطاقات الصوت وبرامج الترميز AmLogic SM1 TOACODEC وIntel AlderLake-M وNXP i.MX8 وNXP TFA1 وTDF9897 وRockchip RK817 وQualcomm Quinary MI2 وTexas Instruments TAS2505. تحسين دعم الصوت على أجهزة الكمبيوتر المحمولة HP وASUS. مضاف تصحيحات لتقليل التأخير قبل بدء تشغيل الصوت على الأجهزة المزودة بواجهة USB.

المصدر – opennet.ru.

المصدر: linux.org.ru