بعد شهرين من التطوير، أصدر لينوس تورفالدز النواة. Linux 6.13. من بين أبرز التغييرات: وضع الاستباق الكسول في جدولة المهام، ودعم الكتابة الذرية في XFS و Ext4، وآلية "الطوابع الزمنية متعددة الحبوب"، ووضع الاستقصاء التكيفي في النظام الفرعي للشبكة، والقدرة على البناء مع تحسينات AutoFDO، ودعم آلية حماية ARM65 Guarded Control Stack، وعزل الآلة الافتراضية باستخدام امتداد ARM CCA، ومكدسات منفصلة في BPF، وإزالة ReiserFS، وبرنامج تشغيل virtual-cpufreq، ومُشكّل الشبكة netlink API، ووضع تركيب tmpfs الحساس لحالة الأحرف، ودعم امتدادات POSIX في SMB3، وبرنامج تشغيل AMD Cache Optimizer.
يتضمن الإصدار الجديد 14172 إصلاحًا من 2086 مطورًا، وحجم التصحيح هو 46 ميجابايت (أثرت التغييرات على 15375 ملفًا، وتمت إضافة 598707 سطرًا من التعليمات البرمجية، وتم حذف 406294 سطرًا). الإصدار الأخير يحتوي على 14607 إصلاحًا من 2167 مطورًا، وكان حجم التصحيح 37 ميجابايت. حوالي 52% من جميع التغييرات التي تم إدخالها في 6.13 تتعلق ببرامج تشغيل الأجهزة، وحوالي 13% من التغييرات تتعلق بتحديث التعليمات البرمجية الخاصة ببنيات الأجهزة، و11% تتعلق بمكدس الشبكات، و4% تتعلق بأنظمة الملفات، و3% ترتبط بالأنظمة الفرعية للنواة الداخلية.
الابتكارات الرئيسية في kernel 6.13:
- نظام القرص الفرعي ، I / O وأنظمة الملفات
- تمت إضافة آلية “الطوابع الزمنية المتعددة الحبوب” والتي تتيح لك الحصول على معلومات حول وقت التعديل أو الوصول إلى الملفات بدقة تزيد عن ميلي ثانية، ولكن دون تأثير سلبي على الأداء. تؤدي زيادة دقة التسميات إلى زيادة الحمل بسبب زيادة كثافة كتابة البيانات التعريفية على القرص، لذلك في التنفيذ المقترح، لا يتم إنشاء تسميات أكثر دقة لجميع الملفات، ولكن فقط لتلك التي تطلب العمليات مثل هذه التسميات عبرها. استدعاء getattr().
- تمت إضافة دعم للكتابة الذرية، حيث تتم كتابة البيانات الأكبر من حجم القطاع ذريًا على أجهزة التخزين التي توفر هذه الإمكانية. حاليًا، يتم تنفيذ الكتابة الذرية لـ XFS وExt4 في وضع O_DIRECT (الإدخال/الإخراج المباشر) وmd RAID 0/1/10.
- تم اقتراح آلية جديدة لحساب مرجع الملف والتي توفر زيادة في الأداء بنسبة 3-5% في أحمال العمل التي تحتوي على أكثر من 255 مؤشر ترابط.
- تمت إزالة تطبيق نظام الملفات ReiserFS، الذي تم الإعلان عن أنه قديم في العام السابق.
- تمت إضافة معلمة sysctl "fs.dentry-negative" لتعيين سياسة VFS لمسح إدخالات "dentry" (التمثيل الداخلي لعناصر الدليل) بعد حذف الملفات المرتبطة بها. بالنسبة لبعض أنواع التحميل، من الأفضل ترك مثل هذه السجلات حول الملفات المحذوفة، وبالنسبة للآخرين، لحذفها، لذلك توفر النواة خيارًا (افتراضيًا، لا يتم حذف "dentries" تلقائيًا).
- تمت إضافة علامة STATMOUNT_OPT_ARRAY إلى استدعاء النظام statmount() لإرجاع قائمة بخيارات نظام الملفات كمصفوفة من السلاسل المنتهية بقيمة خالية والتي لا تستخدم الهروب "\000". تمت إضافة دعم لإعادة النوع الفرعي FS (fs_subtype، لتحديد ما إذا كان يتم استخدام FUSE)، وخيارات التثبيت الآمن، والكتلة الفائقة المصدر (sb_source).
- يوفر OverlayFS القدرة على تحديد الطبقات عبر واصفات الملفات بدلاً من أسماء مسارات الملفات.
- تمت إضافة خيار التثبيت "casefold" إلى نظام الملفات tmpfs للعمليات غير الحساسة لحالة الأحرف وخيار "strict_encoding" لمنع إنشاء ملفات بأسماء تحتوي على أحرف UTF-8 غير صالحة.
- تم اقتراح مجموعة جديدة من استدعاءات النظام لإدارة سمات الملفات الموسعة: setxattrat() وgetxattrat() وlistxattrat() وremovexattrat(). على عكس استدعاءات النظام setxattr() وgetxattr() وlistxattr() وremovexattr()، تتطلب الخيارات الجديدة تحديد واصف ملف للدليل الذي سيتم من خلاله البحث عن مسار الملف.
- تمت إضافة عملية ioctl BTRFS_IOC_SUBVOL_SYNC_WAIT إلى Btrfs، والتي تتضمن انتظار اكتمال تنظيف المجلد الفرعي، مما يسمح بتنفيذ الأمر "btrfs subvolume sync" بواسطة مستخدم لا يتمتع بالامتيازات وليس لديه حق الوصول إلى SEARCH_TREE ioctl (مفيد في تطبيقات النسخ الاحتياطي التي تقوم بتنظيف المجلدات الفرعية) . تمت إضافة عملية ioctl ENCODED_READ لقراءة البيانات المشفرة عبر io_uring، على سبيل المثال، لقراءة النطاقات المضغوطة مباشرة دون فك الضغط. استمر العمل على الانتقال إلى استخدام صفحات الصفحات. تم تقليل حدوث عمليات القفل المتزامنة ("تنافس القفل") عند البحث عن الروابط الخلفية المضمنة وعند التكرار عبر المخازن المؤقتة للنطاق. تحسين كفاءة ضغط خريطة المدى.
- في نظام الملفات EROFS (نظام الملفات القابل للقراءة فقط القابل للتوسيع)، المخصص للاستخدام على الأقسام التي يمكن الوصول إليها في وضع القراءة فقط، من الممكن استخدام خيارات SEEK_HOLE وSEEK_DATA في استدعاء النظام lseek().
- يدعم F2FS الآن تسمية الأجهزة، مما يسمح لك بحجز منطقة مؤقتة في F2FS لاستخدام جزء من جهاز كتلة في FS آخر. بعد اكتمال العملية الخارجية، يمكن إرجاع المنطقة المحجوزة إلى F2FS. على سبيل المثال، يمكنك إنشاء نظام ملفات (FS) باستخدام الأمر "mkfs.f2fs -c /dev/vdc@vdc.file /dev/vdb"، وبعد ذلك سيتم حجز محتويات الجهاز /dev/vdc وانعكاسها في الملف vdc.file ويمكن استخدام القسم /dev/vdc وفقًا لاحتياجاتك، على سبيل المثال، تنسيقه لنظام ملفات آخر. لإرجاع المحتوى المحجوز، قم ببساطة بحذف ملف vdc.
- يتضمن XFS دعمًا للحصص النسبية لأجهزة الوقت الفعلي. تمت إضافة دعم لدليل البيانات التعريفية، الذي يحتوي على جميع إدخالات البيانات التعريفية.
- يتضمن محرك FUSE القدرة على تغيير الحد الأقصى لعدد الصفحات (FUSE_MAX_MAX_PAGES) ديناميكيًا باستخدام "sysctl fs.fuse.max_pages_limit". يتضمن العمل أوراق صفحة الذاكرة.
- يدعم بروتوكول SMB الآن امتدادات POSIX لبروتوكول SMB3، وهي ضرورية لتخزين أنواع الملفات الخاصة مثل FIFOs وملفات الأجهزة والروابط الرمزية. أُضيفت إمكانية ربط قسم بكلمة مرور بديلة لتغيير كلمات المرور. كما أُضيف خيار ربط جديد، "cifs.upcall"، لتحديد مساحة اسم. يتم إنشاء ملفات الأجهزة النصية وملفات الأجهزة الكتلية في Windows خادم NFS. تمت إضافة دعم للروابط الرمزية بنمط WSL (Windows النظام الفرعي لـ Linux).
- تم تحويل أنظمة الملفات UBIFS وADFS وBEFS وHFS وHFSPLUS وHPFS وJFS وECRYPTFS لاستخدام واجهة برمجة تطبيقات تثبيت القسم الجديد.
- تم تحويل أنظمة الملفات وECRYPTFS وUFS وNIILFS2 لاستخدام أوراق الصفحة.
- خدمات الذاكرة والنظام
- يقوم المجدول بتنفيذ نموذج الاستباقية البطيئة للمهام (PREEMPT_LAZY، الاستباقية البطيئة)، والذي يتوافق مع نموذج الاستباقية الكامل لمهام الوقت الفعلي (RR/FIFO/DEADLINE)، ولكنه يؤخر الاستباقية للمهام العادية (SCHED_NORMAL) حتى حدود التجزئة. يؤدي زمن الوصول هذا إلى عدد أقل من الإجراءات الوقائية لحامل القفل، مما يجعل الأداء أقرب إلى التكوينات باستخدام نموذج الحماية التطوعية. وبالتالي، يسمح لك النموذج الجديد بالحفاظ على إمكانات الاستباقية الكاملة للمهام الفعلية، ولكنه يقلل من تدهور الأداء للمهام العادية. بالإضافة إلى ذلك، يعمل النموذج الجديد على تبسيط منطق العمليات الوقائية للمهام في النواة عن طريق إزالة المعالجات الموجودة في مكونات النواة الأخرى (خارج برنامج جدولة المهام) من عملية الجدولة.
- عند البناء باستخدام مترجم Clang، من الممكن استخدام التحسينات
المصدر: opennet.ru
