การเผยแพร่เคอร์เนล Linux 6.12 พร้อมรองรับระบบเรียลไทม์

หลังจากพัฒนามาสองเดือน ลินัส ทอร์วัลด์ส ก็ได้ปล่อยเคอร์เนลเวอร์ชันใหม่ Linux 6.12. การเปลี่ยนแปลงที่โดดเด่นที่สุด ได้แก่ ความสามารถในการเปิดใช้งานโหมดเรียลไทม์, sched_ext สำหรับสร้างตัวกำหนดตารางเวลา CPU ผ่าน eBPF, การส่งออกรหัส QR ในสภาวะฉุกเฉิน, กลไก TCP หน่วยความจำอุปกรณ์, กลไกการจองทรัพยากรเซิร์ฟเวอร์ SCHED_DEADLINE, การปรับปรุงตัวกำหนดตารางเวลางาน EEVDF, โมดูล IPE สำหรับการตั้งค่านโยบายความสมบูรณ์

เวอร์ชันใหม่ประกอบด้วยการแก้ไข 14607 รายการจากนักพัฒนา 2167 ราย ขนาดแพตช์คือ 37 MB (การเปลี่ยนแปลงส่งผลกระทบต่อไฟล์ 13087 ไฟล์ เพิ่มโค้ด 507913 บรรทัด และลบ 234083 บรรทัด) รุ่นล่าสุดมีการแก้ไข 15130 รายการจากนักพัฒนา 2078 ราย ขนาดแพตช์คือ 85 MB (ในเคอร์เนล 6.10 แพตช์มีขนาด 41 MB) ประมาณ 45% ของการเปลี่ยนแปลงทั้งหมดที่นำมาใช้ใน 6.12 เกี่ยวข้องกับไดรเวอร์อุปกรณ์ ประมาณ 12% ของการเปลี่ยนแปลงเกี่ยวข้องกับการอัปเดตโค้ดเฉพาะสำหรับสถาปัตยกรรมฮาร์ดแวร์ 13% เกี่ยวข้องกับสแต็กเครือข่าย 6% เกี่ยวข้องกับระบบไฟล์ และ 3% เกี่ยวข้องกับระบบย่อยเคอร์เนลภายใน

นวัตกรรมที่สำคัญในเคอร์เนล 6.12:

  • บริการหน่วยความจำและระบบ
    • ขณะนี้สามารถสร้างเคอร์เนลด้วยตัวเลือก PREEMPT_RT โดยไม่ต้องใช้แพตช์เพิ่มเติมสำหรับการทำงานแบบเรียลไทม์ได้แล้ว คุณสมบัติเคอร์เนลสุดท้ายที่ขาดหายไปซึ่งทำให้ไม่สามารถเปิดใช้งานโหมด PREEMPT_RT ได้คือการรองรับเอาต์พุตอะตอมิกแบบไม่บล็อกผ่านฟังก์ชัน printk ซึ่งรวมอยู่ในเคอร์เนลแล้ว การรองรับ PREEMPT_RT มีให้สำหรับสถาปัตยกรรม x86, x86_64, ARM64 และ RISC-V จนถึงตอนนี้ การใช้งานโหมด PREEMPT_RT มีให้ในรูปแบบของแพตช์ภายนอก ซึ่งบางดิสทริบิวชัน เช่น RHEL, SUSE และ Ubuntuบริษัทได้สร้างผลิตภัณฑ์รุ่นเรียลไทม์แยกต่างหาก ซึ่งเป็นที่ต้องการในด้านต่างๆ เช่น ระบบการเงิน อุปกรณ์ประมวลผลเสียงและวิดีโอ การบิน การแพทย์ หุ่นยนต์ โทรคมนาคม และระบบอุตสาหกรรม ซึ่งจำเป็นต้องรับประกันเวลาในการประมวลผลเหตุการณ์ที่คาดการณ์ได้
    • กลไก "sched_ext" (SCX) ได้ถูกเพิ่มเข้ามา ทำให้สามารถใช้ eBPF ในการสร้างตัวจัดตารางเวลา CPU ที่ครอบคลุมเกือบทุกด้านของการจัดตารางเวลางานและการจัดสรรทรัพยากร CPU ตัวจัดตารางเวลาดังกล่าวสามารถโหลดและเรียกใช้งานได้แบบไดนามิกภายในเคอร์เนล Linux в เครื่องเสมือน eBPF กลไก sched_ext ช่วยลดความซับซ้อนในการสร้างตัวกำหนดตารางเวลาเฉพาะงาน ช่วยให้สามารถทดลองใช้เทคนิคและกลยุทธ์การกำหนดตารางเวลาต่างๆ และช่วยให้สามารถสร้างต้นแบบที่ใช้งานได้จริงอย่างรวดเร็ว รวมถึงการเปลี่ยนตัวกำหนดตารางเวลาในโครงสร้างพื้นฐานการผลิตได้ทันที ตัวอย่างเช่น การใช้ sched_ext คุณสามารถสร้างตัวกำหนดตารางเวลาที่คำนึงถึงลักษณะเฉพาะของแอปพลิเคชันเฉพาะ และเปลี่ยนแปลงกลยุทธ์การกำหนดตารางเวลาแบบไดนามิกตามสถานะของระบบและปัจจัยอื่นๆ
    • องค์ประกอบประกอบด้วยส่วนที่เหลือของแพตช์ที่จำเป็นสำหรับการทำงานของกลไกเซิร์ฟเวอร์ SCHED_DEADLINE ซึ่งแก้ปัญหาการใช้ทรัพยากร CPU ต่ำเกินไปโดยงานทั่วไป เมื่อ CPU ถูกผูกขาดโดยงานที่มีลำดับความสำคัญสูง (เรียลไทม์) เพื่อป้องกันการผูกขาด CPU เคอร์เนลเคยใช้กลไกการควบคุมปริมาณเรียลไทม์ ซึ่งพยายามสงวน 5% สำหรับงานที่มีลำดับความสำคัญต่ำ โดยเหลือ 95% ของเวลาสำหรับงานเรียลไทม์ กลไกนี้ทำให้เป็นที่ต้องการอย่างมากเนื่องจากงานทั่วไปในหลาย ๆ สถานการณ์ไม่ได้รับเวลาประมวลผลเพียงพอ เซิร์ฟเวอร์ SCHED_DEADLINE ใช้กลไกการจองทรัพยากรที่มีประสิทธิภาพมากขึ้น
    • การรวมตัวกำหนดเวลางาน EEVDF (Earliest Eligible Virtual Deadline First) เสร็จสมบูรณ์แล้ว ซึ่งแทนที่ตัวกำหนดเวลา CFS (Completely Fair Scheduler) ซึ่งให้มาโดยเริ่มต้นด้วยเคอร์เนล 2.6.23 เมื่อเลือกกระบวนการถัดไปเพื่อถ่ายโอนการดำเนินการ ตัวกำหนดเวลาใหม่จะพิจารณากระบวนการที่ไม่ได้รับทรัพยากรตัวประมวลผลเพียงพอหรือได้รับเวลาตัวประมวลผลจำนวนมากอย่างไม่สมควร ในกรณีแรกมีการบังคับโอนการควบคุมไปยังกระบวนการและในกรณีที่สองตรงกันข้ามจะถูกเลื่อนออกไป ตัวกำหนดตารางเวลา CFS แบบเก่าใช้การวิเคราะห์พฤติกรรมและการปรับแต่งอย่างละเอียดเพื่อระบุกระบวนการที่ต้องการการดูแลเป็นพิเศษ ในขณะที่ตัวกำหนดเวลาแบบใหม่จะติดตามกระบวนการเหล่านั้นได้ชัดเจนยิ่งขึ้น และไม่ต้องการการปรับแต่งอย่างละเอียด EEVDF ได้รับการคาดหวังให้ลดความล่าช้าในงานที่ CFS มีปัญหาด้านการจัดกำหนดการ
    • ในตัวจัดการเหตุฉุกเฉินเคอร์เนล - DRM Panic ซึ่งใช้ระบบย่อย DRM (Direct Rendering Manager) เพื่อแสดงรายงานภาพในรูปแบบของ "หน้าจอสีน้ำเงินแห่งความตาย" ความสามารถในการแสดงโลโก้และรหัส QR พร้อมรายงาน kmsg บนหน้าจอเมื่อมีเหตุฉุกเฉินเกิดขึ้น เนื่องจากโค้ด QR มีขนาดเพียง 2953 ไบต์เท่านั้น จึงมีตัวเลือก DRM_PANIC_SCREEN_QR_CODE_URL ไว้ โดยรายงาน kmsg จะถูกบีบอัดโดยใช้ zlib และแนบเป็นพารามิเตอร์ใน URL ซึ่งอนุญาตให้มีการถ่ายโอนประมาณ 40 ไบต์ผ่านโค้ด QR V7500 เมื่อสร้างแพ็คเกจด้วยเคอร์เนล การแจกจ่ายสามารถตั้งค่า URL พื้นฐานสำหรับ URL ซึ่งจะช่วยให้พวกเขาสามารถนำทางไปยังหน้าเพื่อรายงานปัญหาได้ หากต้องการเลือกรูปแบบโค้ด QR จะมีการจัดเตรียมการตั้งค่า DRM_PANIC_SCREEN_QR_VERSION
    • เพิ่มการรองรับ ARM POE (Permission Overlay Extension) ซึ่งช่วยให้คุณตั้งค่าสิทธิ์การเข้าถึงพื้นที่หน่วยความจำ การใช้ส่วนขยายนี้บนระบบที่มีโปรเซสเซอร์ ARM64 สามารถใช้กลไก Memory Protection Keys ได้ ซึ่งใช้เพื่อจำกัดการเข้าถึงเพจหน่วยความจำโดยไม่ต้องเปลี่ยนตารางเพจหน่วยความจำ
    • สำหรับสถาปัตยกรรม Loongarch, ARM64, PowerPC และ s390 การใช้งานการเรียกของระบบ getrandom() ได้ถูกย้ายแล้ว ปรับให้เหมาะสมโดยใช้กลไก vDSO (virtual dynamic shared object) ซึ่งทำให้สามารถย้ายตัวจัดการการเรียกของระบบจากเคอร์เนลไปที่ พื้นที่ผู้ใช้และหลีกเลี่ยงการสลับบริบท การเพิ่มประสิทธิภาพช่วยให้คุณเพิ่มความเร็วในการสร้างตัวเลขสุ่มได้สูงสุดถึง 15 เท่า
    • ความสามารถในการใช้การหมดเวลาแบบสัมบูรณ์ ซึ่งทริกเกอร์เมื่อถึงเวลาที่กำหนดบนนาฬิกาของระบบ ได้ถูกเพิ่มไปยังระบบย่อยอินพุต/เอาท์พุตแบบอะซิงโครนัส io_uring (ก่อนหน้านี้ สามารถตั้งค่าได้เฉพาะการหมดเวลาสัมพัทธ์เท่านั้น ซึ่งระบุระยะเวลาตั้งแต่เริ่มต้นการดำเนินการ ).
    • เพิ่มไฟล์สำหรับการสร้างการเชื่อมโยงสำหรับไลบรารี libcpupower โดยใช้ชุดเครื่องมือ SWIG ซึ่งช่วยให้คุณสามารถสร้างการเชื่อมโยงจากโค้ด C/C++ สำหรับภาษาการเขียนโปรแกรมต่างๆ การเชื่อมโยงช่วยให้คุณสร้างสคริปต์ใน Python และภาษาอื่นๆ และใช้สคริปต์เหล่านี้เพื่อขยายฟังก์ชันการทำงานของไลบรารี libcpupower ซึ่งมี API สำหรับจัดการ cpufreq และไดรเวอร์จากพื้นที่ผู้ใช้
    • ยูทิลิตี้ cpuidle จะแสดงค่าของสถานะ "ที่อยู่อาศัย" ที่ไม่ได้ใช้งานซึ่งใช้สำหรับระบบเรียลไทม์และคำนึงถึงเวลาขั้นต่ำที่โปรเซสเซอร์จะต้องไม่ได้ใช้งานเพื่อพิสูจน์ต้นทุนด้านพลังงานของการเปลี่ยนเข้าและออกจากสถานะนี้
    • เพิ่มความสามารถในการใช้คอมไพเลอร์ Clang เพื่อสร้างไลบรารี C มาตรฐาน nolibc ซึ่งรวมอยู่ในซอร์สโค้ดของเคอร์เนล Linux และทำหน้าที่เป็นตัวห่อหุ้มการเรียกใช้ระบบพื้นฐาน เมื่อสร้าง nolibc ใน Clang การเพิ่มประสิทธิภาพในขั้นตอนการเชื่อมโยง (LTO) จะถูกเปิดใช้งาน
    • อินเทอร์เฟซ cgroup1 บางส่วนเลิกใช้แล้ว เช่น การบัญชี TCP, soft Limit เวอร์ชัน XNUMX และการจัดการหน่วยความจำหมด การสนับสนุนคุณสมบัติเหล่านี้ยังคงใช้งานได้เต็มรูปแบบในขณะนี้ และมีคำเตือนเพื่อศึกษาจำนวนผู้ใช้ที่ยังคงใช้คุณสมบัติเหล่านี้ต่อไป
    • เพิ่มความสามารถในการกำหนดค่าบัฟเฟอร์การติดตามวงแหวนเพื่อบันทึกข้อมูลที่สะสมหลังจากรีบูต ซึ่งจะช่วยให้คุณไม่สูญเสียข้อมูลการดีบักที่สะสมในกรณีที่เคอร์เนลขัดข้อง ข้อมูลจะถูกเก็บไว้ในหน่วยความจำ การเปิดใช้งานทำได้ผ่านพารามิเตอร์บรรทัดคำสั่งเคอร์เนล trace_instance เช่น การตั้งค่า “trace_instance=boot_map@0x285400000:12M” จะสำรองหน่วยความจำ 12 MB ที่ 0x285400000 สำหรับบัฟเฟอร์ “boot_map” ซึ่งจะสามารถเข้าถึงได้ผ่านไฟล์ /sys/kernel /การติดตาม/อินสแตนซ์/boot_map.
    • ดำเนินการย้ายการเปลี่ยนแปลงจากสาขา Rust-for- อย่างต่อเนื่องLinuxเกี่ยวข้องกับการใช้ Rust เป็นภาษาที่สองสำหรับการพัฒนาไดรเวอร์และโมดูลเคอร์เนล (โดยค่าเริ่มต้น การสนับสนุน Rust จะไม่ทำงาน และไม่ได้รวม Rust ไว้ในส่วนประกอบการสร้างที่จำเป็นของเคอร์เนล) เพิ่มโมดูล 'list' และ 'rbtree' สำหรับการทำงานกับรายการเชื่อมโยงสองทางและต้นไม้ค้นหาสีแดง-ดำ ขยายขีดความสามารถของโมดูล 'init', 'sync', 'types' และ 'error' เพิ่มความสามารถในการใช้โค้ด Rust เมื่อสร้างเคอร์เนลที่มีการป้องกันการโจมตี Spectre (ตัวเลือก MITIGATION_{RETHUNK,RETPOLINE,SLS}) โดยใช้ระบบดีบัก KASAN กลไกการป้องกัน kCFI (Kernel Control Flow Integrity) และ Shadow Call และเมื่อใช้ปลั๊กอิน GCC เพิ่มเติม เพิ่มไดรเวอร์สำหรับตัวควบคุมอีเธอร์เน็ต Applied Micro QT2025 PHY ที่เขียนด้วย Rust มีเว็บไซต์แยกต่างหากพร้อมเอกสารประกอบ: rust.docs.kernel.org
    • ยูทิลิตี้ xdrgen ได้ถูกเพิ่มเข้าไปในซอร์สโค้ดของเคอร์เนลเพื่อแปลงข้อกำหนด XDR (eXternal Data Representation) ให้เป็นฟังก์ชันการเข้ารหัสและถอดรหัส XDR ที่เขียนโดยใช้รูปแบบภาษา C ที่เคอร์เนลนำมาใช้ Linux.
    • เคอร์เนลได้นำการเปลี่ยนแปลงมาใช้กลไกการมาสก์พอยน์เตอร์เพื่อลดจำนวนการเรียกที่ช้าไปยัง Barrier_nospec() ในฟังก์ชัน copy_from_user() แบบ 64 บิต ซึ่งใช้ในการคัดลอกข้อมูลลงในเคอร์เนลจากพื้นที่ผู้ใช้ การใช้การมาสก์จะเร่งความเร็วการทดสอบ "per_thread_ops" ซึ่งจะประเมินจำนวนการดำเนินการที่สามารถทำได้ในหนึ่งเธรดเพิ่มขึ้น 2.6%
    • มีการเพิ่มไดรเวอร์ USB ใหม่ซึ่งช่วยให้คุณสามารถใช้โปรโตคอล 9pfs เป็นช่องทางในการส่งและรับข้อมูลจากอุปกรณ์ USB เมื่อติดตั้งระบบไฟล์ 9p บน USB (ตัวอย่างเช่น “mount -t 9p -o trans=usbg, aname=/path/to/fs /mnt/9"). ตัวอย่างของการใช้ไดรเวอร์ใหม่คือการใช้ NFS แทนการจัดระเบียบการบูตของพาร์ติชันรูทเมื่อพัฒนาอุปกรณ์ฝังตัว
  • ระบบย่อยของดิสก์ I/O และระบบไฟล์
    • ความสามารถในการทำงานกับอุปกรณ์จัดเก็บข้อมูลที่มีขนาดบล็อกใหญ่กว่าขนาดของเพจหน่วยความจำในระบบได้ถูกเพิ่มให้กับระบบย่อย VFS ในระบบไฟล์ ขณะนี้คุณลักษณะนี้รองรับเฉพาะใน XFS เท่านั้น
    • ระบบย่อย FUSE ซึ่งช่วยให้คุณสร้างการใช้งานระบบไฟล์ที่ทำงานในพื้นที่ผู้ใช้ได้เพิ่มการสนับสนุนสำหรับการแมปตัวระบุผู้ใช้ของระบบไฟล์ที่เมาท์ ซึ่งใช้เพื่อจับคู่ไฟล์ของผู้ใช้เฉพาะบนพาร์ติชันภายนอกที่เมาท์กับผู้ใช้อื่นในปัจจุบัน ระบบ.
    • การดำเนินการ fcntl ใหม่ F_CREATED_QUERY ได้รับการปรับใช้ ทำให้แอปพลิเคชันสามารถระบุได้ว่าไฟล์ที่เปิดโดยใช้แฟล็ก O_CREAT ถูกสร้างขึ้นหรือมีอยู่แล้วก่อนหน้านี้หรือไม่
    • เพิ่มความสามารถในการใช้ ID จุดเมานท์ 64 บิตที่ไม่ซ้ำกันในการเรียกระบบ name_to_handle_at() เพื่อหลีกเลี่ยงสภาวะการแข่งขันเมื่อแยกวิเคราะห์ /proc/mountinfo.
    • ขนาดของโครงสร้าง "ไฟล์" ในเคอร์เนลลดลงจาก 232 เป็น 184 ไบต์ ซึ่งช่วยลดการใช้หน่วยความจำบนระบบที่ทำงานกับไฟล์อย่างแข็งขัน
    • ไม่อนุญาตให้เมานต์ระบบไฟล์เพื่อเมานต์จุดภายในลำดับชั้น /proc เช่น /proc/PID/fd ซึ่งสร้างปัญหาด้านความปลอดภัยที่อาจเกิดขึ้น
    • pseudo-FS NSFS (NameSpace FS) ที่ใช้สำหรับทำงานกับเนมสเปซ ให้ข้อมูลเพิ่มเติมเกี่ยวกับเนมสเปซของจุดเชื่อมต่อ
    • ระบบไฟล์ EROFS (Extendable Read-Only File System) ซึ่งได้รับการออกแบบมาเพื่อใช้กับพาร์ติชันแบบอ่านอย่างเดียว ขณะนี้รองรับการติดตั้งระบบไฟล์โดยตรงจากดิสก์อิมเมจที่บันทึกเป็นไฟล์
    • คำสั่ง ioctl ใหม่ XFS_IOC_START_COMMIT และ XFS_IOC_COMMIT_RANGE ได้รับการเพิ่มใน XFS สำหรับการแลกเปลี่ยนเนื้อหาระหว่างสองไฟล์
    • NFS ได้เพิ่มการรองรับโปรโตคอล "LOCALIO" ซึ่งช่วยให้คุณสามารถกำหนดได้ว่าไคลเอ็นต์และ เซิร์ฟเวอร์ ใช้ NFS บนโฮสต์เดียวกันเพื่อเปิดใช้งานการปรับแต่งที่เหมาะสม
    • ในระบบไฟล์ Btrfs มีการเสนอการเพิ่มประสิทธิภาพการทำงาน รหัสได้รับการปรับโครงสร้างใหม่ พื้นที่การล็อคขอบเขตระหว่างการดำเนินการอ่านลดลง งานยังคงดำเนินต่อไปในการแปลงเพจหน่วยความจำเพื่อใช้โฟลิเพจ และการปล่อยหน่วยความจำอัตโนมัติ นำไปใช้กับโครงสร้าง btrfs_path
    • ในระบบไฟล์ Ext4 มีการแก้ไขข้อบกพร่องที่เกี่ยวข้องกับการจัดสรรบล็อก การจัดการขอบเขต การดำเนินการอย่างรวดเร็ว และการทำเจอร์นัล
  • การจำลองเสมือนและความปลอดภัย
    • เพิ่มโมดูล IPE (Integrity Policy Enforcement) LSM ที่พัฒนาโดย Microsoft เพื่อขยายระบบควบคุมการเข้าถึงภาคบังคับที่มีอยู่ โมดูลนี้ช่วยให้คุณสามารถกำหนดนโยบายความสมบูรณ์ทั่วไปสำหรับทั้งระบบ โดยระบุว่าการดำเนินการใดที่ได้รับอนุญาต และวิธีตรวจสอบความถูกต้องของส่วนประกอบ ตัวอย่างเช่น เมื่อใช้ IPE คุณสามารถระบุได้ว่าไฟล์ปฏิบัติการใดที่ได้รับอนุญาตให้เรียกใช้ โดยคำนึงถึงการปฏิบัติตามเวอร์ชันอ้างอิงโดยใช้แฮชการเข้ารหัสที่จัดทำโดยระบบ dm-verity
    • ในขั้นตอนการคอมไพล์เคอร์เนล คุณสามารถเปิดใช้งานวิธีการป้องกันที่มีอยู่แยกกันจากช่องโหว่คลาส Spectre ที่แตกต่างกันใน CPU ได้ Kconfig นำเสนอพารามิเตอร์ใหม่: MITIGATE_MDS (การป้องกันช่องโหว่การสุ่มตัวอย่างข้อมูลสถาปัตยกรรมไมโคร), MITIGATE_TAA (การป้องกันช่องโหว่ TSX Asynchronous Abort), MITIGATE_MMIO_STALE_DATA (การป้องกันช่องโหว่ MMIO Stale Data), MITIGATE_L1TF (การป้องกันช่องโหว่ L1 Terminal Fault), MITIGATE_RETBLEED (การป้องกันช่องโหว่ Retbleed), MITIGATE_SPECTRE_V1, MITIGATE_SPECTRE_V2 (การป้องกันช่องโหว่ของ Spectre), MITIGATE_SRBDS (การป้องกันช่องโหว่การสุ่มตัวอย่างข้อมูลบัฟเฟอร์การลงทะเบียนพิเศษ), MITIGATE_SSB (การป้องกันช่องโหว่ Speculative Store Bypass)
    • เพิ่มตัวเลือกบรรทัดคำสั่ง proc_mem.force_override และชุดการตั้งค่าบิลด์ใน Kconfig (PROC_MEM_FORCE_ALWAYS, PROC_MEM_FORCE_PTRACE และ PROC_MEM_FORCE_NEVER) เพื่อป้องกันการเปลี่ยนแปลงหน่วยความจำผ่าน /proc/pid/mem
    • ระบบย่อย LSM (Linux โมดูลรักษาความปลอดภัยได้เปลี่ยนไปใช้การเรียกแบบคงที่ ซึ่งช่วยปรับปรุงความปลอดภัยและประสิทธิภาพ
    • ความสามารถในการใช้คอร์มาตรฐานสำหรับสถาปัตยกรรม ARM64 ในสภาพแวดล้อมของระบบปฏิบัติการแขกที่ทำงานบน Android- ระบบที่มีไฮเปอร์ไวเซอร์ KVM ที่ได้รับการดัดแปลง (KVM ที่ได้รับการป้องกัน)
    • โมดูล Landlock LSM ซึ่งช่วยให้คุณสามารถจำกัดการโต้ตอบของกลุ่มกระบวนการกับสภาพแวดล้อมภายนอก ได้ใช้แนวคิด "การกำหนดขอบเขต IPC" เพื่อจำกัดการโต้ตอบแบบเลือกสรรกับสภาพแวดล้อมแซนด์บ็อกซ์โดยใช้ซ็อกเก็ตและสัญญาณ Unix ตัวอย่างเช่น คุณสามารถห้ามการเชื่อมต่อโดยใช้ซ็อกเก็ต Unix จากสภาพแวดล้อมแซนด์บ็อกซ์กับกระบวนการที่ไม่ได้ใช้การแยกส่วน แต่อนุญาตให้เชื่อมต่อกับกระบวนการในขอบเขตเดียวกันได้
    • ในไฮเปอร์ไวเซอร์ KVM มีการเพิ่มแฟล็กลงใน CPUID สำหรับระบบเกสต์ที่ระบุการสนับสนุนส่วนขยาย AVX10.1
  • ระบบย่อยของเครือข่าย
    • มีการเพิ่มกลไก Device Memory TCP ช่วยให้สามารถใช้ซ็อกเก็ตเครือข่ายเพื่อส่งเนื้อหาในหน่วยความจำของอุปกรณ์ต่อพ่วงผ่านเครือข่ายได้โดยตรง (โหมด Zero-Copy) และวางเนื้อหาของแพ็กเก็ตเครือข่ายโดยตรงในพื้นที่หน่วยความจำอุปกรณ์บน ฝั่งผู้รับ. ข้อมูลที่ส่งในแพ็กเก็ตจะถูกถ่ายโอนจากการ์ดเครือข่ายไปยังหน่วยความจำของอุปกรณ์ต่อพ่วงหรือจากหน่วยความจำอุปกรณ์ไปยังการ์ดเครือข่ายโดยตรง โดยข้าม CPU และส่วนหัวของแพ็กเก็ตจะจบลงในบัฟเฟอร์เคอร์เนลปกติ
    • ความสามารถของไดรเวอร์อีเธอร์เน็ตและไดรเวอร์ไร้สายจำนวนมากได้รับการขยาย ตัวอย่างเช่น ไดรเวอร์ Intel iwlwifi เพิ่มการรองรับสำหรับการย้ายการดำเนินการ RLC/SMPS ไปยังฝั่งเฟิร์มแวร์ ไดรเวอร์ RealTek rtw89 เพิ่มประสิทธิภาพและเพิ่มการรองรับชิป RTL8852BT/8852BE-VT (WiFi 6) ไดรเวอร์ microchip Ethernet เพิ่มการรองรับสำหรับ IEEE 802.3 ข้อกำหนด bw (100BASE) -T1) และ IEEE 802.3bp, การใช้งาน Microsoft vNIC และ IBM veth virtual Ethernet ได้รับการปรับปรุงแล้ว เพิ่มไดรเวอร์ใหม่สำหรับ Realtek RTL9054, RTL9068, RTL9072, RTL9075, RTL9068, RTL9071 และ Microchip LAN8650/1 10BASE-T1S MAC-PHY Ethernet ชิป
    • ใน MPTCP (MultiPath TCP) ซึ่งเป็นส่วนขยายของโปรโตคอล TCP สำหรับการจัดระเบียบการส่งแพ็กเก็ต TCP พร้อมกันไปตามหลายเส้นทางผ่านอินเทอร์เฟซเครือข่ายที่แตกต่างกัน ขนาดของน้ำหนักที่ใช้ในการกำหนดเส้นทางจะเพิ่มขึ้นจาก 8 เป็น 16 บิต ดำเนินการตรวจจับการรับส่งข้อมูลที่สูญหาย (หลุมดำ) และการระงับในช่วงระยะเวลาหนึ่งของความพยายามที่จะสร้างการเชื่อมต่อกับระบบที่นำไปสู่การสูญเสียการรับส่งข้อมูล
    • สำหรับ IPv6 จะมีการรองรับการตั้งค่าสถานะ “p” ใน PIO (ตัวเลือกข้อมูลคำนำหน้า) ซึ่งใช้ในโฆษณา RA (โฆษณาเราเตอร์ IPv6) เพื่อเลือกรูปแบบการใช้งานไคลเอ็นต์ผ่าน DHCPv6-PD (การมอบหมายคำนำหน้า DHCPv6, RFC9663) แทนการกำหนด ที่อยู่แต่ละรายการตามคำนำหน้าโดยใช้ SLAAC (การกำหนดค่าที่อยู่อัตโนมัติแบบไร้สถานะ) IPv6 IOAM6 เพิ่มการรองรับโหมด tunsrc encapsulation ใหม่ที่ช่วยให้มีประสิทธิภาพดีขึ้น
    • ปรับปรุงประสิทธิภาพสำหรับการประมวลผลแพ็กเก็ตควบคุม IPsec
    • ปรับปรุงประสิทธิภาพของการล้างชุดกฎ nftables ขนาดใหญ่ nfnetlink_queue ได้ปรับปรุงการรองรับโปรโตคอล SCTP
    • ethtool API ได้เพิ่มการรองรับสำหรับการเชื่อมโยงการ์ดเครือข่ายหลายใบเข้ากับอินเทอร์เฟซเครือข่ายเดียว
  • Оборудование
    • ในไดรเวอร์ AMDGPU งานยังคงใช้การรองรับ GPU AMD RDNA4 (“GFX12”) ต่อไป เพิ่มความสามารถในการรีเซ็ตคิวงานแต่ละรายการโดยไม่ต้องรีเซ็ต GPU ทั้งหมด
    • ทำงานอย่างต่อเนื่องกับไดรเวอร์ Xe drm (Direct Rendering Manager) สำหรับ GPU ที่ใช้สถาปัตยกรรม Intel Xe ซึ่งใช้ในการ์ดวิดีโอตระกูล Intel Arc และกราฟิกรวม โดยเริ่มจากโปรเซสเซอร์ Tiger Lake เวอร์ชันใหม่นี้รวมการรองรับ GPU ที่ใช้สถาปัตยกรรมไมโคร Battlemage และ Lunar Lake มีการรองรับตัวดัดแปลง CCS (Color Control Surface) Xe2 เพื่อควบคุมพารามิเตอร์ของ GPU แบบรวมและแบบแยก
    • ไดรเวอร์ i915 ใช้ความสามารถในการส่งออกข้อมูลเกี่ยวกับความเร็วพัดลมผ่านอินเทอร์เฟซ HWMON หรือ sysfs (แอตทริบิวต์ "fan1_input") พารามิเตอร์ "i915.modeset" เลิกใช้แล้ว ควรใช้พารามิเตอร์ "i915.nomodeset" แทน "i0.modeset=915"
    • เพิ่มการรองรับ GPU A615, A306 และ A621 ให้กับไดรเวอร์ msm DRM (Qualcomm Adreno GPU)
    • ไดรเวอร์ Nouveau ได้รับการปรับปรุงโครงสร้างภายในและทำความสะอาดใหม่
    • ไดรเวอร์ intel_pstate ซึ่งควบคุมพารามิเตอร์การใช้พลังงาน (P-state) บนระบบที่ใช้โปรเซสเซอร์ Intel ได้เพิ่มการรองรับสำหรับระบบไฮบริดที่มี CPU แบบอสมมาตร (คุณลักษณะที่แตกต่างกัน) รวมถึงรองรับการจัดการพลังงานของโปรเซสเซอร์ที่ใช้ Granite Rapids และ Sierra Forest สถาปัตยกรรมไมโคร เพิ่มการรองรับ CPU Xeon Granite Rapids ให้กับไดรเวอร์ intel_idle ไดรเวอร์ intel_rapl ให้การจดจำกระบวนการตระกูล AMD 1Ah และโปรเซสเซอร์ Intel ArrowLake-U
    • รวมการเปลี่ยนแปลงอย่างต่อเนื่องเพื่อรองรับ ARM SoC Snapdragon X Elite ซึ่งใช้ CPU Oryon 12 คอร์ของ Qualcomm และ Qualcomm Adreno GPU ชิปนี้มีจุดมุ่งหมายเพื่อใช้ในแล็ปท็อปและพีซี และเหนือกว่าชิป Apple M3 และ Intel Core Ultra 155H ในการทดสอบประสิทธิภาพหลายๆ ครั้ง
    • เพิ่มการรองรับบอร์ด ARM, SoC และอุปกรณ์: Broadcom bcm2712 (Raspberry Pi 5), Renesas R9A09G057 (RZ/V2H), Qualcomm Snapdragon 414 (MSM8929), Lenovo ThinkPad T14s Gen 6, Lenovo A6000/A6010, Surface Laptop 7, Anbernic RG35XXSP , Firefly Core-PX30-JD4, Lunzn Fastrhino R68S, Aspeed Riser, AGX Orin, Rockchip Qnap-TS433, Huashan Pi, Meta Catalina, BeagleY-AI, NanoPi R2S Plus, ExynosAuto v920, SOPHGO SG2002, Qualcomm IPQ5332, LG G4 (h815 ), Cool Pi CM5 GenBook, Anbernic RG35XXSP, GameForce Ace, IBM P11, Kontron i.MX93 OSM-S, NanoPC-T6
    • เพิ่มการรองรับแผงหน้าจอ Anbernic RG28XX, On Tat Industrial Company KD50G21-40NT-A1, Innolux G070ACE-LH3, Melfas lmfbx101117480, Densitron DMT028VGHMCMI-1D, Microchip AC40T08A, AOU B116XTN02.3, AUO B116XAN06.1, 116, BOE TV04.1WUM -LL101, BOE NV2WUM-N140, BOE NV41WUM-N133, BOE NV63WHM-A116D, BOE NE4WUM-N140G, CMN N6BCA-EA116, CMN N2BCP-EA116, CSW MNB2LS601-1, แจ่มจรัส er4
    • ระบบย่อยเสียงได้เพิ่มการรองรับชิปและตัวแปลงสัญญาณ RME Digiface USB, AMD ACP 7.1, Mediatek MT6367, MT8365, Realtek RTL1320, C-Media CM9825 ไดรเวอร์เสียงเก่าสำหรับ Intel ASoC ได้รับการประกาศว่าล้าสมัย และขอแนะนำให้ใช้ไดรเวอร์ AVS แทน มีการปรับปรุงหลายอย่างกับไดรเวอร์ SoundWire

ที่มา: opennet.ru

ซื้อโฮสติ้งที่เชื่อถือได้สำหรับไซต์ที่มีการป้องกัน DDoS เซิร์ฟเวอร์ VPS VDS 🔥 ซื้อบริการเว็บโฮสติ้งที่เชื่อถือได้ พร้อมระบบป้องกัน DDoS และเซิร์ฟเวอร์ VPS/VDS | ProHoster