การเปิดตัวเคอร์เนล Linux 5.7

หลังจากสองเดือนของการพัฒนา Linus Torvalds ส่ง การปล่อยเคอร์เนล Linux 5.7. การเปลี่ยนแปลงที่โดดเด่นที่สุด: การใช้งานใหม่ของระบบไฟล์ exFAT, โมดูล bareudp สำหรับการสร้างอุโมงค์ UDP, การป้องกันตามการรับรองความถูกต้องของตัวชี้สำหรับ ARM64, ความสามารถในการแนบโปรแกรม BPF เข้ากับตัวจัดการ LSM, การใช้งานใหม่ของ Curve25519, การแยก- ตัวตรวจจับการล็อค, ความเข้ากันได้กับ BPF กับ PREEMPT_RT, ลบขีดจำกัดของขนาดบรรทัด 80 ตัวอักษรในโค้ด, โดยคำนึงถึงตัวบ่งชี้อุณหภูมิ CPU ในตัวกำหนดเวลางาน, ความสามารถในการใช้ clone() เพื่อวางกระบวนการในกลุ่ม cgroup อื่น, ป้องกันการเขียน ไปยังหน่วยความจำโดยใช้ userfaultfd

เวอร์ชันใหม่ประกอบด้วยการแก้ไข 15033 รายการจากนักพัฒนา 1961 ราย
ขนาดแพตช์ - 39 MB (การเปลี่ยนแปลงได้รับผลกระทบ 11590 ไฟล์, เพิ่มโค้ด 570560 บรรทัด,
ลบ 297401 แถวแล้ว) ประมาณ 41% ของทั้งหมดนำเสนอใน 5.7
การเปลี่ยนแปลงเกี่ยวข้องกับไดรเวอร์อุปกรณ์ ประมาณ 16% ของการเปลี่ยนแปลงคือ
ทัศนคติต่อการอัปเดตโค้ดเฉพาะสำหรับสถาปัตยกรรมฮาร์ดแวร์ 13%
เกี่ยวข้องกับสแต็กเครือข่าย 4% เป็นระบบไฟล์ และ 4% เป็นระบบภายใน
ระบบย่อยเคอร์เนล

หลัก นวัตกรรม:

  • ระบบย่อยของดิสก์ I/O และระบบไฟล์
    • เพิ่มการใช้งานไดรเวอร์ exFAT ใหม่ ก่อตั้ง อิงตามฐานรหัส “sdfat” (2.x) ปัจจุบันที่พัฒนาโดย Samsung สำหรับสมาร์ทโฟน Android ไดรเวอร์ที่เพิ่มลงในเคอร์เนลก่อนหน้านี้ใช้รหัส Samsung รุ่นเก่า (เวอร์ชัน 1.2.9) และด้อยกว่าไดรเวอร์ใหม่ประมาณ 10% ในด้านประสิทธิภาพ ให้เราระลึกว่าการเพิ่มการรองรับ exFAT ให้กับเคอร์เนลนั้นเกิดขึ้นได้หลังจาก Microsoft การตีพิมพ์ ข้อกำหนดสาธารณะและจัดทำสิทธิบัตร exFAT สำหรับการใช้งานแบบปลอดค่าลิขสิทธิ์บน Linux
    • Btrfs ใช้คำสั่ง ioctl() ใหม่ - BTRFS_IOC_SNAP_DESTROY_V2 ซึ่งช่วยให้คุณสามารถลบส่วนย่อยด้วยตัวระบุ มีการให้การสนับสนุนอย่างเต็มที่สำหรับการโคลนขอบเขตอินไลน์ จำนวนจุดการยกเลิกสำหรับการดำเนินการแจกจ่ายซ้ำได้รับการขยาย ซึ่งช่วยลดการรอที่ยาวนานเมื่อดำเนินการคำสั่ง 'ยกเลิกยอดคงเหลือ' การกำหนดลิงก์ย้อนกลับในขอบเขตได้รับการเร่งให้เร็วขึ้น (เช่น เวลาดำเนินการสคริปต์ทดสอบลดลงจากหนึ่งชั่วโมงเหลือหลายนาที) เพิ่มความสามารถในการแนบส่วนขยายไฟล์กับแต่ละไอโหนดของแผนผัง รูปแบบการบล็อกที่ใช้เมื่อเขียนไปยังพาร์ติชันย่อยและเมื่อไม่รวม NOCOW ได้รับการออกแบบใหม่ ปรับปรุงประสิทธิภาพของการดำเนินการ fsync สำหรับช่วงต่างๆ
    • XFS ได้ปรับปรุงการตรวจสอบข้อมูลเมตาและ fsck สำหรับพาร์ติชันที่ใช้งานอยู่ มีการเสนอไลบรารีสำหรับการสร้างโครงสร้าง btree ใหม่ ซึ่งในอนาคตจะใช้เพื่อทำ xfs_repair ใหม่ และใช้ความเป็นไปได้ในการกู้คืนโดยไม่ต้องถอดพาร์ติชัน
    • เพิ่มการสนับสนุนแบบทดลองสำหรับการวางพาร์ติชันสลับในที่เก็บข้อมูล SMB3 ลงใน CIFS แล้ว ใช้ส่วนขยาย POSIX กับ readdir ที่กำหนดไว้ในข้อกำหนด SMB3.1.1 ปรับปรุงประสิทธิภาพการเขียนสำหรับเพจขนาด 64KB เมื่อเปิดใช้งานโหมด cache=strict และใช้โปรโตคอลเวอร์ชัน 2.1 ขึ้นไป
    • FS EXT4 ถูกถ่ายโอนจาก bmap และ iopoll ไปใช้ iomap
    • F2FS ให้การสนับสนุนทางเลือกสำหรับการบีบอัดข้อมูลโดยใช้อัลกอริธึม zstd ตามค่าเริ่มต้น อัลกอริธึม LZ4 จะใช้สำหรับการบีบอัด เพิ่มการรองรับคำสั่ง "chattr -c commit" มีการแสดงเวลาการติดตั้ง เพิ่ม ioctl F2FS_IOC_GET_COMPRESS_BLOCKS เพื่อรับข้อมูลเกี่ยวกับจำนวนบล็อกที่บีบอัด เพิ่มเอาต์พุตข้อมูลการบีบอัดผ่าน statx
    • ระบบไฟล์ Ceph ได้เพิ่มความสามารถในการดำเนินการสร้างและลบไฟล์ในเครื่อง (ยกเลิกการเชื่อมโยง) โดยไม่ต้องรอการตอบกลับจากเซิร์ฟเวอร์ (ทำงานในโหมดอะซิงโครนัส) ตัวอย่างเช่น การเปลี่ยนแปลงสามารถปรับปรุงประสิทธิภาพได้อย่างมากเมื่อเรียกใช้ยูทิลิตี rsync
    • เพิ่มความสามารถในการใช้ virtiofs เป็นระบบไฟล์ระดับบนสุดใน OVERLAYFS แล้ว
    • เขียนใหม่ โค้ดการแวะผ่านเส้นทางใน VFS, โค้ดการแยกวิเคราะห์ลิงก์สัญลักษณ์ได้รับการแก้ไขแล้ว และการแวะผ่านจุดเชื่อมต่อได้รับการรวมเป็นหนึ่งเดียว
    • ในระบบย่อย scsi ให้กับผู้ใช้ที่ไม่มีสิทธิ์ ได้รับอนุญาต การดำเนินการคำสั่ง ZBC
    • ใน dm_writecache นำไปใช้ ความสามารถในการค่อยๆ ล้างแคชตามพารามิเตอร์ max_age ซึ่งกำหนดอายุการใช้งานสูงสุดของบล็อก
    • ใน dm_integrity เพิ่ม รองรับการดำเนินการ "ทิ้ง"
    • ใน null_blk เพิ่ม รองรับการทดแทนข้อผิดพลาดเพื่อจำลองความล้มเหลวระหว่างการทดสอบ
    • เพิ่ม ความสามารถในการส่งการแจ้งเตือน udev เกี่ยวกับการเปลี่ยนแปลงขนาดอุปกรณ์บล็อก
  • ระบบย่อยของเครือข่าย
    • รวมเน็ตฟิลเตอร์ด้วย การเปลี่ยนแปลงซึ่งช่วยเร่งการประมวลผลรายการจับคู่ขนาดใหญ่ (ชุด nftables) ได้อย่างมาก ซึ่งจำเป็นต้องตรวจสอบการรวมกันของซับเน็ต พอร์ตเครือข่าย โปรโตคอล และที่อยู่ MAC
      การเพิ่มประสิทธิภาพ เข้ามา ลงในโมดูล nft_set_pipapo (PIle PAcket POlicies) ซึ่งแก้ปัญหาการจับคู่เนื้อหาของแพ็กเก็ตกับช่วงสถานะฟิลด์ที่กำหนดเองที่ใช้ในกฎการกรอง เช่น IP และช่วงพอร์ตเครือข่าย (nft_set_rbtree และ nft_set_hash จัดการการจับคู่ช่วงเวลาและการสะท้อนค่าโดยตรง ). เวอร์ชันของ pipapo ที่สร้างเวกเตอร์โดยใช้คำสั่ง AVX256 2 บิตบนระบบที่ใช้โปรเซสเซอร์ AMD Epyc 7402 แสดงประสิทธิภาพเพิ่มขึ้น 420% เมื่อแยกวิเคราะห์ 30 ระเบียน รวมถึงการรวมพอร์ตโปรโตคอล การเพิ่มขึ้นเมื่อเปรียบเทียบการรวมกันของซับเน็ตและหมายเลขพอร์ตเมื่อแยกวิเคราะห์ 1000 ระเบียนคือ 87% สำหรับ IPv4 และ 128% สำหรับ IPv6

    • เพิ่ม โมดูล bareudp ซึ่งช่วยให้คุณสามารถสรุปโปรโตคอล L3 ต่างๆ เช่น MPLS, IP และ NSH ลงในอุโมงค์ UDP
    • การบูรณาการส่วนประกอบ MPTCP (MultiPath TCP) ซึ่งเป็นส่วนขยายของโปรโตคอล TCP สำหรับการจัดระเบียบการดำเนินการของการเชื่อมต่อ TCP พร้อมการส่งแพ็กเก็ตพร้อมกันไปตามหลายเส้นทางผ่านอินเทอร์เฟซเครือข่ายที่แตกต่างกันซึ่งเชื่อมโยงกับที่อยู่ IP ที่แตกต่างกัน ยังคงดำเนินต่อไป
    • เพิ่ม รองรับกลไกการเร่งความเร็วด้วยฮาร์ดแวร์สำหรับการห่อหุ้มเฟรมอีเธอร์เน็ตใน 802.11 (Wi-Fi)
    • เมื่อย้ายอุปกรณ์จากเนมสเปซเครือข่ายหนึ่งไปยังอีกเครือข่ายหนึ่ง สิทธิ์การเข้าถึงและความเป็นเจ้าของไฟล์ที่เกี่ยวข้องใน sysfs จะถูกปรับ
    • เพิ่มความสามารถในการใช้การตั้งค่าสถานะ SO_BINDTODEVICE สำหรับผู้ใช้ที่ไม่ใช่รูท
    • ส่วนที่สามของแพตช์ได้รับการยอมรับแล้ว โดยแปลงชุดเครื่องมือ ethtool จาก ioctl() เป็นการใช้อินเทอร์เฟซ netlink อินเทอร์เฟซใหม่ช่วยให้เพิ่มส่วนขยายได้ง่ายขึ้น ปรับปรุงการจัดการข้อผิดพลาด ช่วยให้สามารถส่งการแจ้งเตือนเมื่อสถานะเปลี่ยนแปลง ลดความซับซ้อนของการโต้ตอบระหว่างเคอร์เนลและพื้นที่ผู้ใช้ และลดจำนวนรายการที่มีชื่อที่ต้องซิงโครไนซ์
    • เพิ่มความสามารถในการใช้ตัวเร่งฮาร์ดแวร์พิเศษเพื่อดำเนินการติดตามการเชื่อมต่อ
    • ในเน็ตฟิลเตอร์ เพิ่ม ตะขอสำหรับเชื่อมต่อตัวแยกประเภทของแพ็กเก็ตขาออก (ทางออก) ซึ่งเสริมตะขอที่มีอยู่ก่อนหน้านี้สำหรับแพ็กเก็ตขาเข้า (ทางเข้า)
  • การจำลองเสมือนและความปลอดภัย
    • เพิ่มการใช้งานฮาร์ดแวร์ของการรับรองความถูกต้องของตัวชี้ (การรับรองความถูกต้องของตัวชี้) ซึ่งใช้คำสั่ง CPU ARM64 เฉพาะเพื่อป้องกันการโจมตีโดยใช้เทคนิคการเขียนโปรแกรมแบบส่งคืน (ROP) ซึ่งผู้โจมตีไม่ได้พยายามวางโค้ดของเขาในหน่วยความจำ แต่ทำงานบนชิ้นส่วนคำสั่งของเครื่องที่มีอยู่แล้วในไลบรารีที่โหลด ซึ่งสิ้นสุด พร้อมคำสั่งควบคุมการส่งคืน การรักษาความปลอดภัยขึ้นอยู่กับการใช้ลายเซ็นดิจิทัลเพื่อตรวจสอบที่อยู่ผู้ส่งในระดับเคอร์เนล ลายเซ็นจะถูกจัดเก็บไว้ในบิตบนสุดที่ไม่ได้ใช้ของตัวชี้เอง ต่างจากการใช้งานซอฟต์แวร์ การสร้างและการตรวจสอบลายเซ็นดิจิทัลดำเนินการโดยใช้คำสั่ง CPU พิเศษ
    • เพิ่ม ความสามารถในการปกป้องพื้นที่หน่วยความจำจากการเขียนโดยใช้การเรียกระบบ userfaultfd() ซึ่งออกแบบมาเพื่อจัดการกับข้อบกพร่องของเพจ (การเข้าถึงเพจหน่วยความจำที่ไม่ได้จัดสรร) ในพื้นที่ผู้ใช้ แนวคิดก็คือการใช้ทั้ง userfaultfd() เพื่อตรวจจับการละเมิดการเข้าถึงเพจที่ทำเครื่องหมายว่าป้องกันการเขียน และเพื่อเรียกตัวจัดการที่สามารถตอบสนองต่อความพยายามในการเขียนดังกล่าว (เช่น เพื่อจัดการการเปลี่ยนแปลงระหว่างการสร้างสแน็ปช็อตสดของกระบวนการที่กำลังทำงานอยู่ สถานะ จับภาพเมื่อดัมพ์หน่วยความจำลงดิสก์ การใช้หน่วยความจำที่ใช้ร่วมกัน ติดตามการเปลี่ยนแปลงในหน่วยความจำ) ฟังก์ชั่นการทำงาน เทียบเท่า ใช้ mprotect() ร่วมกับตัวจัดการสัญญาณ SIGSEGV แต่ทำงานเร็วขึ้นอย่างเห็นได้ชัด
    • SELinux ได้เลิกใช้พารามิเตอร์ "checkreqprot" ซึ่งอนุญาตให้คุณปิดใช้งานการตรวจสอบการป้องกันหน่วยความจำเมื่อประมวลผลกฎ (อนุญาตให้ใช้พื้นที่หน่วยความจำที่ปฏิบัติการได้ โดยไม่คำนึงถึงกฎที่ระบุในกฎ) ลิงก์สัญลักษณ์ของ Kernfs ได้รับอนุญาตให้สืบทอดบริบทของไดเรกทอรีหลักได้
    • โครงสร้าง เปิด โมดูล คอาร์เอสไอซึ่งช่วยให้คุณสามารถแนบโปรแกรม BPF เข้ากับ hook LSM ใดๆ ในเคอร์เนลได้ การเปลี่ยนแปลงนี้ช่วยให้คุณสร้างโมดูล LSM (Linux Security Module) ในรูปแบบของโปรแกรม BPF เพื่อแก้ไขปัญหาการตรวจสอบและการควบคุมการเข้าถึงที่จำเป็น
    • ดำเนินการ ปรับประสิทธิภาพของ /dev/random ให้เหมาะสมโดยการแบทช์ค่า CRNG แทนที่จะเรียกคำสั่ง RNG แยกกัน ปรับปรุงประสิทธิภาพของ getrandom และ /dev/random บนระบบ ARM64 ที่ให้คำแนะนำ RNG
    • การใช้เส้นโค้งรูปไข่ Curve25519 แทนที่ สำหรับตัวเลือกจากห้องสมุด เอชเอซีแอล, ซึ่ง ที่ให้ไว้ การพิสูจน์ทางคณิตศาสตร์ของการตรวจสอบความน่าเชื่อถืออย่างเป็นทางการ
    • เพิ่ม กลไกการแจ้งเพจหน่วยความจำว่าง การใช้กลไกนี้ ระบบเกสต์สามารถส่งข้อมูลเกี่ยวกับเพจที่ไม่ได้ใช้กับระบบโฮสต์อีกต่อไป และโฮสต์สามารถนำข้อมูลเพจกลับมาได้
    • ใน vfio/pci เพิ่ม รองรับ SR-IOV (การจำลองเสมือน I/O รูตเดียว)
  • บริการหน่วยความจำและระบบ
    • จาก 80 ถึง 100 ตัวอักษร เพิ่มขึ้น ข้อจำกัดเกี่ยวกับความยาวบรรทัดสูงสุดในข้อความต้นฉบับ ในเวลาเดียวกัน นักพัฒนาซอฟต์แวร์ยังคงแนะนำให้มีความยาวไม่เกิน 80 อักขระต่อบรรทัด แต่นี่ไม่ใช่ขีดจำกัดที่เข้มงวดอีกต่อไป นอกจากนี้ เกินขีดจำกัดขนาดบรรทัดในขณะนี้จะส่งผลให้เกิดคำเตือนการสร้างเฉพาะในกรณีที่รัน checkpatch ด้วยตัวเลือก '--strict' การเปลี่ยนแปลงจะทำให้ไม่สามารถเบี่ยงเบนความสนใจของนักพัฒนาได้ การจัดการ มีช่องว่างและรู้สึกอิสระมากขึ้นเมื่อจัดแนวโค้ดเช่นกัน จะป้องกัน การตัดบรรทัดมากเกินไป รบกวน ความเข้าใจโค้ดและการค้นหา
    • เพิ่ม รองรับโหมดการบูตแบบผสมของ EFI ซึ่งช่วยให้คุณโหลดเคอร์เนล 64 บิตจากเฟิร์มแวร์ 32 บิตที่ทำงานบน CPU 64 บิตโดยไม่ต้องใช้โปรแกรมโหลดบูตพิเศษ
    • รวมอยู่ด้วย ระบบระบุและแก้ไขการล็อคแยก (“ล็อคแยก") ซึ่งเกิดขึ้นเมื่อเข้าถึงข้อมูลที่ไม่สอดคล้องกันในหน่วยความจำ เนื่องจากเมื่อดำเนินการคำสั่งอะตอมมิก ข้อมูลจะข้ามสองบรรทัดแคชของ CPU การบล็อกดังกล่าวส่งผลให้ประสิทธิภาพได้รับผลกระทบอย่างมีนัยสำคัญ (ช้ากว่าการดำเนินการแบบอะตอมมิก 1000 รอบกับข้อมูลที่ตกอยู่ในบรรทัดแคชเดียว) ขึ้นอยู่กับพารามิเตอร์การบูต "split_lock_detect" เคอร์เนลสามารถตรวจจับการล็อคดังกล่าวได้ทันทีและออกคำเตือนหรือส่งสัญญาณ SIGBUS ไปยังแอปพลิเคชันที่ทำให้เกิดการล็อค
    • ตัวกำหนดเวลางานให้การติดตามเซ็นเซอร์อุณหภูมิ (ความดันความร้อน) และนำไปใช้โดยคำนึงถึงความร้อนสูงเกินไปเมื่อวางงาน ด้วยการใช้สถิติที่ให้มา ผู้ควบคุมความร้อนสามารถปรับความถี่ CPU สูงสุดได้เมื่อร้อนเกินไป และตอนนี้ตัวกำหนดเวลางานคำนึงถึงการลดพลังการประมวลผลเนื่องจากความถี่ที่ลดลงดังกล่าวเมื่อกำหนดเวลางานให้รัน (ก่อนหน้านี้ ตัวกำหนดเวลาตอบสนองต่อการเปลี่ยนแปลง ในความถี่โดยมีความล่าช้าบางประการ ในบางครั้งการตัดสินใจขึ้นอยู่กับสมมติฐานที่สูงเกินจริงเกี่ยวกับทรัพยากรการประมวลผลที่มีอยู่)
    • ตัวกำหนดเวลางานประกอบด้วย ตัวชี้วัดที่ไม่แปรเปลี่ยน การติดตามโหลดช่วยให้คุณสามารถประมาณโหลดได้อย่างถูกต้อง โดยไม่คำนึงถึงความถี่การทำงานของ CPU ในปัจจุบัน การเปลี่ยนแปลงช่วยให้คุณทำนายพฤติกรรมของงานได้แม่นยำยิ่งขึ้นภายใต้เงื่อนไขของการเปลี่ยนแปลงแบบไดนามิกของแรงดันไฟฟ้าและความถี่ของ CPU ตัวอย่างเช่น งานที่กิน 1/3 ของทรัพยากร CPU ที่ 1000 MHz จะใช้ 2/3 ของทรัพยากรเมื่อความถี่ลดลงเหลือ 500 MHz ซึ่งก่อนหน้านี้สร้างสมมติฐานที่ผิดว่ากำลังทำงานอย่างเต็มประสิทธิภาพ (เช่น งานปรากฏขึ้น มีขนาดใหญ่กว่าตัวกำหนดตารางเวลาโดยการลดความถี่เท่านั้น ซึ่งนำไปสู่การตัดสินใจที่ไม่ถูกต้องใน schedutil cpufreq Governor)
    • ไดร์เวอร์ Intel P-state ซึ่งรับผิดชอบในการเลือกโหมดประสิทธิภาพได้ถูกเปลี่ยนไปใช้แล้ว ตาราง.
    • ความสามารถในการใช้ระบบย่อย BPF เมื่อเคอร์เนลกำลังทำงานแบบเรียลไทม์ (PREMPT_RT) ได้ถูกนำมาใช้แล้ว ก่อนหน้านี้ เมื่อเปิดใช้งาน PREEMPT_RT จะต้องปิดใช้งาน BPF
    • มีการเพิ่มโปรแกรม BPF ประเภทใหม่ - BPF_MODIFY_RETURN ซึ่งสามารถแนบกับฟังก์ชันในเคอร์เนลและเปลี่ยนค่าที่ส่งคืนโดยฟังก์ชันนี้
    • เพิ่ม โอกาส การใช้การเรียกระบบ clone3() เพื่อสร้างกระบวนการในกลุ่ม c ที่แตกต่างจากกลุ่มหลัก ช่วยให้กระบวนการหลักใช้ข้อจำกัดและเปิดใช้งานการบัญชีทันทีหลังจากสร้างกระบวนการหรือเธรดใหม่ ตัวอย่างเช่น ผู้จัดการบริการสามารถจัดสรรบริการใหม่โดยตรงเพื่อแยกกลุ่ม cgroup และกระบวนการใหม่ เมื่อวางไว้ในกลุ่ม cgroup ที่ "แช่แข็ง" จะถูกหยุดทันที
    • ในอาคาร เพิ่ม รองรับตัวแปรสภาพแวดล้อม "LLVM=1" เพื่อสลับไปใช้ชุดเครื่องมือ Clang/LLVM เมื่อสร้างเคอร์เนล ข้อกำหนดสำหรับเวอร์ชัน binutils ได้รับการยกขึ้น (2.23)
    • ส่วน /sys/kernel/debug/kunit/ ได้รับการเพิ่มไปยัง debugfs พร้อมผลลัพธ์ของการทดสอบ kunit
    • เพิ่มพารามิเตอร์การบูตเคอร์เนล pm_debug_messages (คล้ายกับ /sys/power/pm_debug_messages) ซึ่งเปิดใช้งานเอาท์พุตของข้อมูลการดีบักเกี่ยวกับการทำงานของระบบการจัดการพลังงาน (มีประโยชน์เมื่อทำการดีบักปัญหาเกี่ยวกับโหมดไฮเบอร์เนตและโหมดสแตนด์บาย)
    • ไปยังอินเทอร์เฟซ I/O แบบอะซิงโครนัส io_ing เพิ่มการสนับสนุน ประกบ () и การเลือกบัฟเฟอร์อะตอมมิก.
    • ปรับปรุงการทำโปรไฟล์ cgroup โดยใช้ชุดเครื่องมือ perf ก่อนหน้านี้ perf สามารถทำโปรไฟล์งานได้เฉพาะในกลุ่ม cgroup ที่ระบุเท่านั้น และไม่สามารถค้นหาว่าตัวอย่างปัจจุบันอยู่ในกลุ่ม cgroup ใด ขณะนี้ perf ได้รับข้อมูล cgroup สำหรับแต่ละตัวอย่าง ช่วยให้คุณสามารถโปรไฟล์ได้มากกว่าหนึ่ง cgroup และใช้การเรียงลำดับตาม
      cgroup ในรายงาน

    • cgroupfs ซึ่งเป็น pseudo-FS สำหรับการจัดการ cgroups ได้เพิ่มการรองรับสำหรับแอตทริบิวต์เพิ่มเติม (xattrs) ซึ่งคุณสามารถฝากข้อมูลเพิ่มเติมไว้สำหรับตัวจัดการในพื้นที่ผู้ใช้ได้
    • ในตัวควบคุมหน่วยความจำ cgroup เพิ่มและรองรับการป้องกันแบบเรียกซ้ำของค่า “memory.low” ซึ่งควบคุมจำนวน RAM ขั้นต่ำที่มอบให้กับสมาชิกกลุ่ม เมื่อติดตั้งลำดับชั้น cgroup ด้วยตัวเลือก "memory_recursiveprot" ค่าของ "memory.low" ที่ตั้งไว้สำหรับโหนดด้านล่างจะถูกกระจายไปยังโหนดย่อยทั้งหมดโดยอัตโนมัติ
    • เพิ่ม กรอบงาน Uacce (Unified/User-space-access-intention Accelerator Framework) สำหรับการแชร์ที่อยู่เสมือน (SVA, Shared Virtual Addressing) ระหว่าง CPU และอุปกรณ์ต่อพ่วง ช่วยให้ตัวเร่งฮาร์ดแวร์สามารถเข้าถึงโครงสร้างข้อมูลใน CPU หลัก
  • สถาปัตยกรรมฮาร์ดแวร์
    • สำหรับสถาปัตยกรรม ARM จะใช้ความสามารถในการดึงข้อมูลหน่วยความจำแบบ hot-fetch
    • สำหรับสถาปัตยกรรม RISC-V มีการเพิ่มการรองรับการเสียบปลั๊กและการถอด CPU (ฮอตปลั๊ก CPU) สำหรับ RISC-V แบบ 32 บิต จะมีการใช้ eBPF JIT
    • ความสามารถในการใช้ระบบ ARM 32 บิตเพื่อรันสภาพแวดล้อมแขก KVM ได้ถูกลบออกแล้ว
    • ลบการใช้งาน NUMA "จำลอง" สำหรับสถาปัตยกรรม s390 ออก ซึ่งไม่พบกรณีการใช้งานใด ๆ ที่จะบรรลุการปรับปรุงประสิทธิภาพ
    • สำหรับ ARM64 เพิ่มการรองรับส่วนขยาย AMU (หน่วยตรวจสอบกิจกรรม) ที่กำหนดไว้ใน ARMv8.4 และจัดให้มีตัวนับประสิทธิภาพที่ใช้ในการคำนวณปัจจัยการแก้ไขมาตราส่วนความถี่ในตัวกำหนดเวลางาน
  • Оборудование
    • เพิ่ม รองรับอุปกรณ์ vDPA ที่ใช้ช่องทางการแลกเปลี่ยนข้อมูลที่สอดคล้องกับข้อกำหนด virtio อุปกรณ์ vDPA อาจเป็นอุปกรณ์ที่เชื่อมต่อทางกายภาพหรืออุปกรณ์เสมือนจำลองด้วยซอฟต์แวร์
    • ในระบบย่อย GPIO ปรากฏ คำสั่ง ioctl() ใหม่สำหรับการตรวจสอบการเปลี่ยนแปลง ช่วยให้คุณแจ้งกระบวนการเกี่ยวกับการเปลี่ยนแปลงสถานะของบรรทัด GPIO ใดก็ได้ เป็นตัวอย่างการใช้คำสั่งใหม่ เสนอ ยูทิลิตี้ gpio-watch
    • ในไดรเวอร์ i915 DRM สำหรับการ์ดแสดงผล Intel รวมอยู่ด้วย การสนับสนุนเริ่มต้นสำหรับชิป Tigerlake (“Gen12”) และเพิ่มการสนับสนุนเบื้องต้นสำหรับการควบคุมแบ็คไลท์ OLED ปรับปรุงการรองรับชิป Ice Lake, Elkhart Lake, Baytrail และ Haswell
    • ในไดรเวอร์ amdgpu เพิ่ม ความสามารถในการโหลดเฟิร์มแวร์ลงในชิป USBC สำหรับ ASIC ปรับปรุงการรองรับชิป AMD Ryzen 4000 "Renoir" ขณะนี้มีการรองรับการควบคุมแผง OLED แล้ว แสดงสถานะของเฟิร์มแวร์ในการดีบัก
    • เพิ่มความสามารถในการใช้ OpenGL 4 ในระบบเกสต์ลงในไดรเวอร์ vmwgfx DRM สำหรับระบบการจำลองเสมือน VMware (ก่อนหน้านี้รองรับ OpenGL 3.3)
    • เพิ่มไดรเวอร์ DRM ใหม่สำหรับระบบแสดงผลแพลตฟอร์ม TI Keystone
    • เพิ่มไดรเวอร์สำหรับแผง LCD: Feixin K101 IM2BA02, Samsung s6e88a0-ams452ef01, Novatek NT35510, Elida KD35T133, EDT, NewEast Optoelectronics WJFH116008A, Rocktech RK101II01D-CT, Frida FRD350H54004
    • ไปจนถึงระบบการจัดการพลังงาน เพิ่ม รองรับแพลตฟอร์ม Intel Jasper Lake (JSL) ที่ใช้ Atom
    • เพิ่มการรองรับแล็ปท็อป Pinebook Pro ที่ใช้ Rockchip RK3399, แท็บเล็ตและสมาร์ทโฟน Pine64 PineTab PinePhone อิงจาก Allwinner A64
    • เพิ่มการรองรับตัวแปลงสัญญาณเสียงและชิปใหม่:
      Amlogic AIU, Amlogic T9015, Texas Instruments TLV320ADCX140, Realtek RT5682, ALC245, Broadcom BCM63XX I2S, Maxim MAX98360A, Presonus Studio 1810c, MOTU MicroBook IIc

    • เพิ่มการรองรับบอร์ดและแพลตฟอร์ม ARM Qualcomm Snapdragon 865 (SM8250), IPQ6018, NXP i.MX8M Plus, Kontron “sl28”, 11 i.MX6 TechNexion Pico ตัวเลือกบอร์ด, สามตัวเลือก Toradex Colibri ใหม่, Samsung S7710 Galaxy Xcover 2 ที่ใช้ ST -Ericsson u8500, DH Electronics DHCOM SoM และ PDK2, Renesas M3ULCB, Hoperun HiHope, Linutronix Testbox v2, PocketBook Touch Lux 3

ที่มา: opennet.ru

เพิ่มความคิดเห็น