Bản phát hành nhân Linux 5.14

Sau hai tháng phát triển, Linus Torvalds đã giới thiệu bản phát hành nhân Linux 5.14. Trong số những thay đổi đáng chú ý nhất: lệnh gọi hệ thống quotectl_fd() và memfd_secret() mới, loại bỏ trình điều khiển ide và raw, bộ điều khiển ưu tiên I/O mới cho cgroup, chế độ lập lịch tác vụ SCHED_CORE, cơ sở hạ tầng để tạo trình tải chương trình BPF đã được xác minh.

Phiên bản mới bao gồm 15883 bản sửa lỗi từ 2002 nhà phát triển, kích thước bản vá là 69 MB (các thay đổi ảnh hưởng đến 12580 tệp, 861501 dòng mã đã được thêm vào, 321654 dòng đã bị xóa). Khoảng 47% tất cả các thay đổi được giới thiệu trong 5.14 có liên quan đến trình điều khiển thiết bị, khoảng 14% thay đổi có liên quan đến việc cập nhật mã dành riêng cho kiến ​​trúc phần cứng, 13% liên quan đến ngăn xếp mạng, 3% liên quan đến hệ thống tệp và 3% có liên quan đến các hệ thống con kernel bên trong.

Những đổi mới chính:

  • Hệ thống con đĩa, I/O và hệ thống tệp
    • Bộ điều khiển ưu tiên I/O mới đã được triển khai cho các nhóm, rq-qos, có thể kiểm soát mức độ ưu tiên xử lý của các yêu cầu chặn các thiết bị do các thành viên của mỗi nhóm tạo ra. Hỗ trợ bộ điều khiển ưu tiên mới đã được thêm vào bộ lập lịch I/O thời hạn mq.
    • Hệ thống tệp ext4 triển khai lệnh ioctl mới, EXT4_IOC_CHECKPOINT, buộc tất cả các giao dịch đang chờ xử lý từ tạp chí và bộ đệm liên quan của chúng phải được xóa vào đĩa, đồng thời ghi đè lên khu vực được sử dụng bởi tạp chí trong bộ lưu trữ. Thay đổi này được chuẩn bị như một phần của sáng kiến ​​nhằm ngăn chặn rò rỉ thông tin từ hệ thống tệp.
    • Tối ưu hóa hiệu suất đã được thực hiện cho Btrfs: bằng cách loại bỏ việc ghi nhật ký các thuộc tính mở rộng không cần thiết trong quá trình thực thi fsync, hiệu suất của các hoạt động chuyên sâu với các thuộc tính mở rộng đã tăng lên tới 17%. Ngoài ra, khi thực hiện các thao tác cắt không ảnh hưởng đến phạm vi, đồng bộ hóa hoàn toàn sẽ bị tắt, giúp giảm 12% thời gian thao tác. Một cài đặt đã được thêm vào sysfs để giới hạn băng thông I/O khi kiểm tra FS. Đã thêm lệnh gọi ioctl để hủy thay đổi kích thước và xóa thao tác của thiết bị.
    • Trong XFS, việc triển khai bộ đệm đệm đã được thiết kế lại, chuyển sang cấp phát các trang bộ nhớ ở chế độ hàng loạt. Cải thiện hiệu quả bộ nhớ đệm.
    • F2FS thêm tùy chọn hoạt động ở chế độ chỉ đọc và triển khai chế độ bộ đệm khối nén (compress_cache) để cải thiện hiệu suất đọc ngẫu nhiên. Hỗ trợ đã được triển khai để nén các tệp được ánh xạ vào bộ nhớ bằng thao tác mmap(). Để vô hiệu hóa có chọn lọc tính năng nén tệp dựa trên mặt nạ, một tùy chọn gắn kết mới nocompress đã được đề xuất.
    • Công việc đã được thực hiện trong trình điều khiển exFAT để cải thiện khả năng tương thích với một số bộ lưu trữ máy ảnh kỹ thuật số.
    • Đã thêm lệnh gọi hệ thống quotectl_fd(), cho phép bạn quản lý hạn ngạch không thông qua tệp thiết bị đặc biệt mà bằng cách chỉ định bộ mô tả tệp được liên kết với hệ thống tệp áp dụng hạn ngạch.
    • Trình điều khiển cũ cho các thiết bị khối có giao diện IDE đã bị xóa khỏi kernel và được thay thế bằng hệ thống con libata từ lâu.
    • Trình điều khiển "thô" đã bị xóa khỏi kernel, cung cấp quyền truy cập không có bộ đệm vào các thiết bị chặn thông qua giao diện /dev/raw. Chức năng này từ lâu đã được triển khai trong các ứng dụng sử dụng cờ O_DIRECT.
  • Dịch vụ bộ nhớ và hệ thống
    • Bộ lập lịch tác vụ triển khai chế độ lập lịch mới, SCHED_CORE, cho phép bạn kiểm soát những tiến trình nào có thể được thực thi cùng nhau trên cùng một lõi CPU. Mỗi quy trình có thể được chỉ định một mã định danh cookie xác định phạm vi tin cậy giữa các quy trình (ví dụ: thuộc về cùng một người dùng hoặc vùng chứa). Khi tổ chức thực thi mã, bộ lập lịch có thể đảm bảo rằng một lõi CPU chỉ được chia sẻ giữa các tiến trình được liên kết với cùng một chủ sở hữu, lõi này có thể được sử dụng để chặn một số cuộc tấn công của Spectre bằng cách ngăn các tác vụ đáng tin cậy và không đáng tin cậy chạy trên cùng một luồng SMT (Hyper Threading) .
    • Đối với cgroup, hỗ trợ cho thao tác tiêu diệt đã được triển khai, cho phép bạn tiêu diệt tất cả các tiến trình được liên kết với nhóm cùng một lúc (gửi SIGKILL) bằng cách ghi “1” vào tệp ảo cgroup.kill.
    • Các khả năng mở rộng liên quan đến việc phản hồi việc phát hiện các khóa phân chia (“khóa phân chia”) xảy ra khi truy cập dữ liệu chưa được căn chỉnh trong bộ nhớ do thực tế là khi thực hiện một lệnh nguyên tử, dữ liệu sẽ đi qua hai dòng bộ nhớ đệm CPU. Việc chặn như vậy dẫn đến hiệu suất giảm đáng kể, vì vậy trước đây có thể buộc chấm dứt ứng dụng gây ra tình trạng chặn. Bản phát hành mới bổ sung tham số dòng lệnh kernel “split_lock_Detect=ratelimit:N”, cho phép bạn xác định giới hạn trên toàn hệ thống về tốc độ hoạt động khóa mỗi giây, sau khi vượt quá giới hạn đó bất kỳ quy trình nào đã trở thành nguồn của khóa phân chia sẽ buộc phải dừng lại trong 20 ms thay vì chấm dứt.
    • Bộ điều khiển băng thông nhóm CFS (bộ điều khiển băng thông CFS), xác định lượng thời gian xử lý có thể được phân bổ cho mỗi nhóm, triển khai khả năng xác định giới hạn thời gian, cho phép điều chỉnh tốt hơn khối lượng công việc nhạy cảm với độ trễ. Ví dụ: đặt cpu.cfs_quota_us thành 50000 và cpu.cfs_ Period_us thành 100000 sẽ cho phép một nhóm quy trình lãng phí 100 mili giây thời gian CPU cứ sau 50 mili giây.
    • Đã thêm cơ sở hạ tầng ban đầu để tạo trình tải chương trình BPF, điều này sẽ tiếp tục cho phép tải các chương trình BPF được ký bằng khóa kỹ thuật số đáng tin cậy.
    • Đã thêm một thao tác futex mới FUTEX_LOCK_PI2, sử dụng bộ hẹn giờ đơn điệu để tính toán thời gian chờ có tính đến thời gian hệ thống sử dụng ở chế độ ngủ.
    • Đối với kiến ​​trúc RISC-V, hỗ trợ các trang bộ nhớ lớn (Trang lớn trong suốt) và khả năng sử dụng cơ chế KFENCE để phát hiện lỗi khi làm việc với bộ nhớ được triển khai.
    • Lệnh gọi hệ thống madvise(), cung cấp phương tiện để tối ưu hóa việc quản lý bộ nhớ của một tiến trình, đã thêm cờ MADV_POPULATE_READ và MADV_POPULATE_WRITE để tạo ra "lỗi trang" trên tất cả các trang bộ nhớ được ánh xạ tới các thao tác đọc hoặc ghi mà không thực hiện đọc hoặc ghi thực tế (mặc định trước). Việc sử dụng cờ có thể hữu ích để giảm sự chậm trễ trong việc thực thi chương trình, do trình xử lý “lỗi trang” chủ động thực thi đối với tất cả các trang chưa được phân bổ cùng một lúc mà không cần chờ truy cập thực sự vào chúng.
    • Hệ thống kiểm tra đơn vị kunit đã bổ sung hỗ trợ cho việc chạy thử nghiệm trong môi trường QEMU.
    • Các công cụ theo dõi mới đã được thêm vào: "osnoise" để theo dõi độ trễ của ứng dụng do xử lý gián đoạn và "timerlat" để hiển thị thông tin chi tiết về độ trễ khi đánh thức từ tín hiệu hẹn giờ.
  • Ảo hóa và bảo mật
    • Lệnh gọi hệ thống memfd_secret() đã được thêm vào để tạo một vùng bộ nhớ riêng trong một không gian địa chỉ biệt lập, chỉ hiển thị đối với quy trình sở hữu, không được phản ánh đối với các quy trình khác và không thể truy cập trực tiếp vào kernel.
    • Trong hệ thống lọc cuộc gọi hệ thống seccomp, khi di chuyển trình xử lý chặn vào không gian người dùng, có thể sử dụng một thao tác nguyên tử duy nhất để tạo bộ mô tả tệp cho một tác vụ riêng biệt và trả về nó khi xử lý cuộc gọi hệ thống. Hoạt động được đề xuất giải quyết vấn đề làm gián đoạn trình xử lý trong không gian người dùng khi có tín hiệu đến.
    • Đã thêm cơ chế mới để quản lý giới hạn tài nguyên trong không gian tên ID người dùng, liên kết các bộ đếm rlimit riêng lẻ với người dùng trong "không gian tên người dùng". Thay đổi này giải quyết vấn đề sử dụng bộ đếm tài nguyên chung khi một người dùng chạy các tiến trình trong các vùng chứa khác nhau.
    • Trình ảo hóa KVM dành cho hệ thống ARM64 đã bổ sung khả năng sử dụng tiện ích mở rộng MTE (MemTag, Memory Tagging Extension) trong hệ thống khách, cho phép bạn liên kết các thẻ với từng hoạt động cấp phát bộ nhớ và tổ chức kiểm tra việc sử dụng đúng con trỏ để chặn việc khai thác các lỗ hổng gây ra do truy cập vào các khối bộ nhớ đã được giải phóng, tràn bộ đệm, truy cập trước khi khởi tạo và sử dụng bên ngoài bối cảnh hiện tại.
    • Các phương tiện Xác thực con trỏ của nền tảng ARM64 hiện có thể được cấu hình riêng cho không gian người dùng và nhân. Công nghệ này cho phép bạn sử dụng các lệnh ARM64 chuyên dụng để xác minh địa chỉ trả về bằng chữ ký số được lưu trữ ở các bit phía trên chưa được sử dụng của chính con trỏ.
    • Linux chế độ người dùng đã bổ sung hỗ trợ sử dụng trình điều khiển cho các thiết bị PCI bằng bus PCI ảo, được triển khai bởi trình điều khiển PCI-over-virtio.
    • Đối với hệ thống x86, đã thêm hỗ trợ cho thiết bị ảo hóa virtio-iommu, cho phép các yêu cầu IOMMU như ATTACH, DETACH, MAP và UNMAP được gửi qua truyền tải virtio mà không cần mô phỏng bảng trang bộ nhớ.
    • Đối với các CPU Intel, từ dòng Skylake đến Coffee Lake, việc sử dụng Intel TSX (Tiện ích mở rộng đồng bộ hóa giao dịch), cung cấp các công cụ để cải thiện hiệu suất của các ứng dụng đa luồng bằng cách tự động loại bỏ các hoạt động đồng bộ hóa không cần thiết, bị tắt theo mặc định. Các tiện ích mở rộng bị vô hiệu hóa do có khả năng xảy ra các cuộc tấn công Zombieload thao túng rò rỉ thông tin qua các kênh của bên thứ ba xảy ra trong quá trình vận hành cơ chế TAA (Hủy bỏ không đồng bộ TSX).
  • Hệ thống con mạng
    • Tích hợp vào lõi của MPTCP (MultiPath TCP), một phần mở rộng của giao thức TCP để tổ chức hoạt động của kết nối TCP với việc phân phối các gói đồng thời dọc theo một số tuyến đường thông qua các giao diện mạng khác nhau được liên kết với các địa chỉ IP khác nhau. Bản phát hành mới bổ sung cơ chế thiết lập chính sách băm lưu lượng truy cập của riêng bạn cho IPv4 và IPv6 (chính sách băm đa đường), giúp có thể xác định từ không gian người dùng những trường nào trong gói, bao gồm cả các gói được đóng gói, sẽ được sử dụng khi tính toán hàm băm xác định lựa chọn đường đi cho gói tin.
    • Hỗ trợ cho ổ cắm SOCK_SEQPACKET (truyền gói dữ liệu theo thứ tự và đáng tin cậy) đã được thêm vào vận chuyển ảo virtio.
    • Các khả năng của cơ chế ổ cắm SO_REUSEPORT đã được mở rộng, cho phép một số ổ cắm nghe kết nối với một cổng cùng một lúc để nhận kết nối với việc phân phối các yêu cầu đến đồng thời trên tất cả các ổ cắm được kết nối qua SO_REUSEPORT, giúp đơn giản hóa việc tạo các ứng dụng máy chủ đa luồng . Phiên bản mới bổ sung thêm các công cụ để chuyển quyền điều khiển sang ổ cắm khác trong trường hợp xảy ra lỗi khi xử lý yêu cầu của ổ cắm đã chọn ban đầu (giải quyết vấn đề mất kết nối riêng lẻ khi khởi động lại dịch vụ).
  • Оборудование
    • Trình điều khiển amdgpu cung cấp hỗ trợ cho dòng GPU AMD Radeon RX 6000 mới, có tên mã là “Beige Goby” (Navi 24) và “Yellow Carp”, cũng như cải thiện hỗ trợ cho GPU Aldebaran (gfx90a) và APU Van Gogh. Đã thêm khả năng hoạt động đồng thời với một số bảng eDP. Đối với APU Renoir, hỗ trợ làm việc với bộ đệm được mã hóa trong bộ nhớ video (TMZ, Vùng bộ nhớ đáng tin cậy) đã được triển khai. Đã thêm hỗ trợ cho card đồ họa rút phích cắm nóng. Đối với GPU Radeon RX 6000 (Navi 2x) và GPU AMD cũ hơn, hỗ trợ ASPM (Quản lý năng lượng trạng thái hoạt động) được bật theo mặc định, tính năng này trước đây chỉ được bật cho GPU Navi 1x, Vega và Polaris.
    • Đối với chip AMD, hỗ trợ bộ nhớ ảo dùng chung (SVM, bộ nhớ ảo dùng chung) đã được thêm vào dựa trên hệ thống con HMM (Quản lý bộ nhớ không đồng nhất), cho phép sử dụng các thiết bị có đơn vị quản lý bộ nhớ riêng (MMU, đơn vị quản lý bộ nhớ), có thể truy cập bộ nhớ chính. Đặc biệt, sử dụng HMM, bạn có thể tổ chức một không gian địa chỉ dùng chung giữa GPU và CPU, trong đó GPU có thể truy cập vào bộ nhớ chính của tiến trình.
    • Đã thêm hỗ trợ ban đầu cho công nghệ AMD Smart Shift, công nghệ này tự động thay đổi cài đặt nguồn CPU và GPU trên máy tính xách tay có chipset và card đồ họa AMD để tăng hiệu suất chơi game, chỉnh sửa video và kết xuất 3D.
    • Trình điều khiển i915 cho card đồ họa Intel bao gồm hỗ trợ cho chip Intel Alderlake P.
    • Đã thêm trình điều khiển drm/hyperv cho bộ điều hợp đồ họa ảo Hyper-V.
    • Đã thêm hỗ trợ cho máy tính đa năng Raspberry Pi 400.
    • Đã thêm trình điều khiển dell-wmi-privacy để hỗ trợ các công tắc camera và micrô phần cứng có trong máy tính xách tay Dell.
    • Đối với máy tính xách tay Lenovo, giao diện WMI đã được thêm vào để thay đổi cài đặt BIOS thông qua sysfs /sys/class/firmware-attributes/.
    • Hỗ trợ mở rộng cho các thiết bị có giao diện USB4.
    • Đã thêm hỗ trợ cho AmLogic SM1 TOACODEC, Intel AlderLake-M, NXP i.MX8, NXP TFA1, TDF9897, Rockchip RK817, Qualcomm Quinary MI2 và card âm thanh và codec TAS2505 của Texas Instruments. Cải thiện hỗ trợ âm thanh trên máy tính xách tay HP và ASUS. Đã thêm các bản vá để giảm độ trễ trước khi âm thanh bắt đầu phát trên thiết bị USB.

Nguồn: opennet.ru

Thêm một lời nhận xét