Sau hai tháng phát triển, Linus Torvalds đã giới thiệu bản phát hành nhân Linux 6.13. Trong số những thay đổi đáng chú ý nhất: chế độ ưu tiên lười biếng trong bộ lập lịch tác vụ, hỗ trợ ghi nguyên tử trong XFS và Ext4, cơ chế “dấu thời gian đa hạt”, chế độ thích ứng để cho phép bỏ phiếu trong hệ thống con mạng, khả năng xây dựng với tối ưu hóa AutoFDO, hỗ trợ cho cơ chế bảo vệ ngăn xếp điều khiển bảo vệ ARM65, máy cách ly ảo sử dụng tiện ích mở rộng ARM CCA, ngăn xếp riêng biệt trong BPF, loại bỏ ReiserFS, trình điều khiển virtual-cpufreq, API netlink net-shaper, chế độ gắn kết tmpfs phân biệt chữ hoa chữ thường, hỗ trợ tiện ích mở rộng POSIX trong SMB3, trình điều khiển Trình tối ưu hóa bộ đệm AMD.
Phiên bản mới bao gồm 14172 bản sửa lỗi từ 2086 nhà phát triển, kích thước bản vá là 46 MB (các thay đổi ảnh hưởng đến 15375 tệp, 598707 dòng mã đã được thêm vào, 406294 dòng đã bị xóa). Bản phát hành cuối cùng có 14607 bản sửa lỗi từ 2167 nhà phát triển, kích thước bản vá là 37 MB. Khoảng 52% tất cả các thay đổi được giới thiệu trong 6.13 có liên quan đến trình điều khiển thiết bị, khoảng 13% 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, 11% liên quan đến ngăn xếp mạng, 4% 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 cải tiến chính trong kernel 6.13:
- Hệ thống con đĩa, I/O và hệ thống tệp
- Đã thêm cơ chế “dấu thời gian đa hạt”, cho phép bạn lấy thông tin về thời gian sửa đổi hoặc quyền truy cập vào tệp với độ chính xác hơn một phần nghìn giây nhưng không có tác động tiêu cực đến hiệu suất. Việc tăng độ chính xác của nhãn sẽ dẫn đến chi phí bổ sung do cường độ ghi siêu dữ liệu vào đĩa tăng lên, do đó, trong quá trình triển khai được đề xuất, các nhãn chính xác hơn sẽ không được tạo cho tất cả các tệp mà chỉ dành cho những tệp có quy trình yêu cầu các nhãn đó thông qua cuộc gọi getattr().
- Đã thêm hỗ trợ cho tính năng ghi nguyên tử, trong đó dữ liệu lớn hơn kích thước cung được ghi nguyên tử trên các thiết bị lưu trữ cung cấp khả năng này. Hiện tại, tính năng ghi nguyên tử được triển khai cho XFS, Ext4 ở chế độ O_DIRECT (I/O trực tiếp) và md RAID 0/1/10.
- Một cơ chế đếm tham chiếu tệp mới được đề xuất giúp tăng hiệu suất 3-5% đối với khối lượng công việc có hơn 255 luồng.
- Việc triển khai hệ thống tệp ReiserFS, được tuyên bố là lỗi thời vào năm trước, đã bị xóa.
- Đã thêm tham số sysctl "fs.dentry- Negative" để đặt chính sách VFS nhằm xóa các mục nhập "dentry" (biểu diễn bên trong của các mục thư mục) sau khi xóa các tệp được liên kết với chúng. Đối với một số loại tải, tốt nhất là để lại các bản ghi như vậy về các tệp đã bị xóa và đối với các loại tải khác, hãy xóa chúng, để hạt nhân đưa ra lựa chọn (theo mặc định, các “dentries” không tự động bị xóa).
- Đã thêm cờ STATMOUNT_OPT_ARRAY vào lệnh gọi hệ thống statmount() để trả về danh sách các tùy chọn hệ thống tệp dưới dạng một mảng các chuỗi kết thúc bằng null không sử dụng lối thoát "\000". Đã thêm hỗ trợ để trả về loại phụ FS (fs_subtype, để xác định xem FUSE có được sử dụng hay không), tùy chọn gắn kết an toàn và siêu khối nguồn (sb_source).
- OverlayFS cung cấp khả năng chỉ định các lớp thông qua bộ mô tả tệp thay vì tên đường dẫn tệp.
- Đã thêm tùy chọn gắn kết “casefold” vào hệ thống tệp tmpfs để vận hành không phân biệt chữ hoa chữ thường và tùy chọn “strict_encoding” để chặn việc tạo tệp có tên chứa ký tự UTF-8 không hợp lệ.
- Một tập hợp các lệnh gọi hệ thống mới đã được đề xuất để quản lý các thuộc tính tệp mở rộng: setxattrat(), getxattrat(), listxattrat() và Removexattrat(). Không giống như các lệnh gọi hệ thống setxattr(), getxattr(), listxattr() và Removexattr(), các tùy chọn mới yêu cầu chỉ định bộ mô tả tệp của thư mục để tìm kiếm đường dẫn tệp.
- Đã thêm hoạt động ioctl BTRFS_IOC_SUBVOL_SYNC_WAIT vào Btrfs, bao gồm việc chờ quá trình dọn dẹp subvolume hoàn tất, cho phép lệnh "btrfs subvolume sync" được thực thi bởi người dùng không có đặc quyền, không có quyền truy cập vào SEARCH_TREE ioctl (hữu ích trong các ứng dụng sao lưu dọn dẹp subvolume) . Đã thêm thao tác ioctl ENCODED_READ để đọc dữ liệu được mã hóa qua io_uring, ví dụ: để đọc phạm vi được nén trực tiếp mà không cần giải nén. Công việc tiếp tục chuyển sang sử dụng trang folio. Giảm sự xuất hiện của các khóa đồng thời (“tranh chấp khóa”) khi tìm kiếm các liên kết ngược được nhúng và khi lặp qua bộ đệm phạm vi. Cải thiện hiệu quả nén bản đồ phạm vi.
- Trong hệ thống tệp EROFS (Hệ thống tệp chỉ đọc có thể mở rộng), được thiết kế để sử dụng trên các phân vùng có thể truy cập ở chế độ chỉ đọc, có thể sử dụng các tùy chọn SEEK_HOLE và SEEK_DATA trong lệnh gọi hệ thống lseek().
- F2FS hiện hỗ trợ aliasing thiết bị, cho phép bạn tạm thời đặt trước một vùng trong F2FS để sử dụng một phần của thiết bị khối trong một FS khác. Sau khi thao tác bên ngoài hoàn tất, vùng được đặt trước có thể được trả về F2FS. Ví dụ, bạn có thể tạo một FS bằng lệnh "mkfs.f2fs -c /dev/vdc@vdc.file /dev/vdb", sau đó nội dung của thiết bị /dev/vdc sẽ được đặt trước và phản ánh trong tệp vdc.file, và phân vùng /dev/vdc có thể được sử dụng cho nhu cầu của riêng bạn, ví dụ, được định dạng cho một FS khác. Để trả về nội dung được đặt trước, chỉ cần xóa tệp vdc.file.
- XFS bao gồm hỗ trợ hạn ngạch cho các thiết bị thời gian thực. Đã thêm hỗ trợ cho thư mục siêu dữ liệu, chứa tất cả các nút siêu dữ liệu.
- Công cụ FUSE bao gồm khả năng thay đổi linh hoạt số trang tối đa (FUSE_MAX_MAX_PAGES) bằng cách sử dụng "sysctl fs.fuse.max_pages_limit". Công việc liên quan đến các trang ghi nhớ.
- SMB cung cấp hỗ trợ cho các tiện ích mở rộng POSIX cho SMB3, cần thiết để lưu trữ các loại tệp đặc biệt như fifo, tệp thiết bị và liên kết tượng trưng. Đã thêm khả năng gắn kết phân vùng với mật khẩu thay thế được sử dụng trong quá trình xoay mật khẩu. Đã thêm tùy chọn gắn kết mới "cifs.upcall" để xác định không gian tên. Tính năng nhận dạng ký tự và tập tin thiết bị khối được tạo trong Windows NFS Server được cung cấp. Đã thêm hỗ trợ cho các liên kết tượng trưng kiểu WSL (Hệ thống con Windows cho Linux).
- Các hệ thống tệp UBIFS, ADFS, BEFS, HFS, HFSPLUS, HPFS, JFS và ECRYPTFS đã được chuyển đổi để sử dụng API gắn phân vùng mới.
- Các hệ thống tệp và ECRYPTFS, UFS và NILFS2 đã được chuyển đổi để sử dụng các trang folio.
- Dịch vụ bộ nhớ và hệ thống
- Bộ lập lịch triển khai mô hình ưu tiên lười biếng cho các nhiệm vụ (PREEMPT_LAZY, ưu tiên lười biếng), tương ứng với mô hình ưu tiên đầy đủ cho các nhiệm vụ thời gian thực (RR/FIFO/DEADLINE), nhưng trì hoãn việc ưu tiên các nhiệm vụ thông thường (SCHED_NORMAL) cho đến ranh giới đánh dấu. Độ trễ này dẫn đến ít quyền ưu tiên của người giữ khóa hơn, mang lại hiệu suất gần hơn với các cấu hình sử dụng mô hình quyền ưu tiên tự nguyện. Do đó, mô hình mới cho phép bạn duy trì toàn bộ khả năng ưu tiên cho các tác vụ thời gian thực nhưng giảm thiểu tình trạng suy giảm hiệu suất đối với các tác vụ thông thường. Ngoài ra, mô hình mới đơn giản hóa logic của các hoạt động ưu tiên tác vụ trong kernel bằng cách loại bỏ các trình xử lý nằm trong các thành phần kernel khác (bên ngoài bộ lập lịch tác vụ) khỏi quy trình lập lịch.
- Khi xây dựng bằng trình biên dịch Clang, có thể sử dụng tối ưu hóa
Nguồn: opennet.ru
