إصدار Linux 5.14 kernel

بعد شهرين من التطوير، قدم لينوس تورفالدس إصدار 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% ترتبط بالأنظمة الفرعية للنواة الداخلية.

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

  • نظام القرص الفرعي ، I / O وأنظمة الملفات
    • تم تطبيق وحدة تحكم جديدة في أولويات الإدخال/الإخراج لمجموعات التحكم، rq-qos، والتي يمكنها التحكم في أولوية معالجة طلبات حظر الأجهزة التي تم إنشاؤها بواسطة أعضاء كل مجموعة تحكم. تمت إضافة دعم جديد لوحدة التحكم ذات الأولوية إلى برنامج جدولة الإدخال/الإخراج mq-deadline.
    • يطبق نظام الملفات ext4 أمر ioctl جديد، EXT4_IOC_CHECKPOINT، الذي يفرض مسح جميع المعاملات المعلقة من المجلة والمخازن المؤقتة المرتبطة بها على القرص، كما يقوم بالكتابة فوق المنطقة التي تستخدمها المجلة في التخزين. تم إعداد التغيير كجزء من مبادرة لمنع تسرب المعلومات من أنظمة الملفات.
    • تم إجراء تحسينات على الأداء لـ Btrfs: من خلال إزالة التسجيل غير الضروري للسمات الموسعة أثناء تنفيذ fsync، زاد أداء العمليات المكثفة ذات السمات الموسعة بنسبة تصل إلى 17%. بالإضافة إلى ذلك، عند إجراء عمليات القطع التي لا تؤثر على النطاقات، يتم تعطيل المزامنة الكاملة، مما يقلل وقت العملية بنسبة 12%. تمت إضافة إعداد إلى sysfs للحد من عرض النطاق الترددي للإدخال/الإخراج عند التحقق من FS. تمت إضافة مكالمات ioctl لإلغاء تغيير حجم وحذف عمليات الجهاز.
    • في XFS، تمت إعادة تصميم تنفيذ ذاكرة التخزين المؤقت المؤقتة، والتي تم تحويلها إلى تخصيص صفحات الذاكرة في الوضع الدفعي. تحسين كفاءة ذاكرة التخزين المؤقت.
    • يضيف F2FS خيارًا للعمل في وضع القراءة فقط وينفذ وضع ذاكرة التخزين المؤقت للكتلة المضغوطة (compress_cache) لتحسين أداء القراءة العشوائية. لقد تم تنفيذ الدعم لضغط الملفات المعينة للذاكرة باستخدام عملية mmap(). لتعطيل ضغط الملفات بشكل انتقائي بناءً على قناع، تم اقتراح خيار تحميل جديد nocompress.
    • تم تنفيذ العمل في برنامج التشغيل exFAT لتحسين التوافق مع بعض وحدات تخزين الكاميرا الرقمية.
    • تمت إضافة استدعاء النظام quotactl_fd()، والذي يسمح لك بإدارة الحصص ليس من خلال ملف جهاز خاص، ولكن عن طريق تحديد واصف ملف مرتبط بنظام الملفات الذي يتم تطبيق الحصة عليه.
    • تمت إزالة برامج التشغيل القديمة للأجهزة ذات الواجهة IDE من النواة، وتم استبدالها منذ فترة طويلة بنظام libata الفرعي.
    • تمت إزالة برنامج التشغيل "الخام" من النواة، مما يوفر وصولاً غير مخزن إلى الأجهزة المحظورة عبر واجهة /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، يتم تنفيذ دعم صفحات الذاكرة الكبيرة (الصفحات الضخمة الشفافة) والقدرة على استخدام آلية KFENCE لاكتشاف الأخطاء عند العمل مع الذاكرة.
    • قام استدعاء النظام madvise()، الذي يوفر وسيلة لتحسين إدارة ذاكرة العملية، بإضافة علامتي MADV_POPULATE_READ وMADV_POPULATE_WRITE لإنشاء "خطأ صفحة" على كافة صفحات الذاكرة المعينة لعمليات القراءة أو الكتابة، دون إجراء قراءة أو كتابة فعلية (الافتراضي). يمكن أن يكون استخدام العلامات مفيدًا لتقليل التأخير في تنفيذ البرنامج، وذلك بسبب التنفيذ الاستباقي لمعالج "خطأ الصفحة" لجميع الصفحات غير المخصصة مرة واحدة، دون انتظار الوصول الفعلي إليها.
    • أضاف نظام اختبار وحدة kunit دعمًا لإجراء الاختبارات في بيئة QEMU.
    • تمت إضافة أدوات تتبع جديدة: "osnoise" لتتبع تأخيرات التطبيق الناتجة عن معالجة المقاطعة، و"timerlat" لعرض معلومات مفصلة حول التأخير عند الاستيقاظ من إشارة المؤقت.
  • المحاكاة الافتراضية والأمن
    • تمت إضافة استدعاء النظام memfd_secret() لإنشاء منطقة ذاكرة خاصة في مساحة عنوان معزولة، مرئية فقط لعملية الامتلاك، ولا تنعكس على العمليات الأخرى، ولا يمكن للنواة الوصول إليها مباشرة.
    • في نظام تصفية مكالمات نظام seccomp، عند نقل معالجات الحظر إلى مساحة المستخدم، من الممكن استخدام عملية ذرية واحدة لإنشاء واصف ملف لمهمة معزولة وإعادته عند معالجة استدعاء النظام. تحل العملية المقترحة مشكلة مقاطعة المعالج في مساحة المستخدم عند وصول الإشارة.
    • تمت إضافة آلية جديدة لإدارة حدود الموارد في مساحة اسم معرف المستخدم، والتي تربط عدادات rlimit الفردية بمستخدم في "مساحة اسم المستخدم". يعمل هذا التغيير على حل مشكلة استخدام عدادات الموارد العامة عندما يقوم مستخدم واحد بتشغيل العمليات في حاويات مختلفة.
    • أضاف برنامج Hypervisor KVM لأنظمة ARM64 القدرة على استخدام ملحق MTE (MemTag، Memory Tagged Extension) في أنظمة الضيف، والذي يسمح لك بربط العلامات بكل عملية تخصيص للذاكرة وتنظيم التحقق من الاستخدام الصحيح للمؤشرات لمنع استغلال نقاط الضعف الناجمة عن الوصول إلى كتل الذاكرة المحررة بالفعل، وتجاوز سعة المخزن المؤقت، والوصول قبل التهيئة والاستخدام خارج السياق الحالي.
    • يمكن الآن تكوين مرافق مصادقة المؤشر الخاصة بمنصة ARM64 بشكل منفصل للنواة ومساحة المستخدم. تتيح لك هذه التقنية استخدام تعليمات ARM64 المتخصصة للتحقق من عناوين الإرجاع باستخدام التوقيعات الرقمية المخزنة في الأجزاء العلوية غير المستخدمة من المؤشر نفسه.
    • أضاف Linux في وضع المستخدم دعمًا لاستخدام برامج تشغيل لأجهزة 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 Smart Shift، التي تعمل بشكل ديناميكي على تغيير إعدادات طاقة وحدة المعالجة المركزية ووحدة معالجة الرسومات على أجهزة الكمبيوتر المحمولة المزودة بمجموعة شرائح AMD وبطاقة الرسومات لتعزيز أداء الألعاب وتحرير الفيديو والعرض ثلاثي الأبعاد.
    • يتضمن برنامج التشغيل i915 لبطاقات الرسومات Intel دعمًا لرقائق Intel Alderlake P.
    • تمت إضافة برنامج تشغيل drm/hyperv لمحول الرسومات الظاهري Hyper-V.
    • تمت إضافة دعم للكمبيوتر Raspberry Pi 400 الكل في واحد.
    • تمت إضافة برنامج تشغيل الخصوصية dell-wmi لدعم الكاميرا ومفاتيح الميكروفون المضمنة في أجهزة الكمبيوتر المحمولة من Dell.
    • بالنسبة لأجهزة الكمبيوتر المحمولة من Lenovo، تمت إضافة واجهة 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

إضافة تعليق