Auto Nice Daemon đã lỗi thời, và thay đổi ưu tiên phần mềm thủ công rất phiền toái. Có cách hiện đại để kiểm soát mỗi chương trình nên dùng bao nhiêu tài nguyên không? Gặp gỡ Ananicy (ANother Auto NICe daemon), giải pháp auto-nice hiện đại, với nó bạn có thể tạo hồ sơ cho phần mềm để ưu tiên ứng dụng bạn quan tâm. Hãy xem cách làm.
Cài đặt
Ananicy cần systemd để hoạt động, nên nó không tương thích với mọi bản phân phối. Để cài trên Ubuntu, Mint, Debian, và bản phân phối tương thích, dùng:
git clone https://github.com/Nefelim4ag/Ananicy.git ./Ananicy/package.sh debian sudo dpkg -i ./Ananicy/ananicy-*.deb

Nếu bạn dùng Arch, Manjaro, hoặc bản phân phối tương tự, bạn có thể cài với:
git clone https://github.com/Nefelim4ag/Ananicy.git /tmp/ananicy cd /tmp/ananicy sudo make install
Ananicy cũng phụ thuộc vào schedtool, nên nếu chưa cài, hãy thêm nó. Bạn làm vậy trên bản phân phối tương thích Debian và Arch, tương ứng, với:
# Debian/Ubuntu sudo apt install schedtool # Arch Linux sudo pacman -S schedtool
Với mọi thứ đã thiết lập, bật daemon của nó để nó luôn hoạt động và giám sát ứng dụng:
sudo systemctl enable ananicy

Để chạy ứng dụng thực tế, dùng:
sudo systemctl start ananicy
Nếu bạn dùng hệ thống yếu, nơi mọi phần mềm tranh giành tài nguyên, nó có thể bắt đầu cảm thấy phản hồi tốt hơn ngay lập tức.
Kiểm tra Preset (Quy tắc có sẵn)
Ananicy đi kèm sẵn một đống quy tắc cho nhiều ứng dụng phổ biến. Để xem chúng, mở terminal yêu thích và ghé thư mục quy tắc của Ananicy:
cd /etc/ananicy.d/00-default/

Quy tắc cho mỗi ứng dụng được lưu trong file riêng. Ví dụ, để xem quy tắc preset cho client chia sẻ file qBittorrent phổ biến, bạn dùng:
sudo nano qBittorrent.rules
Bạn có thể dùng chúng làm cơ sở cho quy tắc riêng.
Thêm quy tắc riêng
Để tạo quy tắc cho ứng dụng, bạn nên biết tên tiến trình của nó. May mắn thay, trên Linux, đó thường giống tên ứng dụng. Bạn dùng lệnh top để xác minh tên tiến trình.
Định vị tiến trình đang ngốn tài nguyên máy và ghi nhớ tên nó. Hãy dùng app timeshift làm ví dụ.
Tạo file văn bản mới trong thư mục quy tắc của Ananicy. Tốt hơn nếu dùng tên ứng dụng để dễ tham khảo sau. Hãy chắc chắn file kết thúc bằng ".rules" để Ananicy nhận diện nó là file quy tắc.
sudo nano timeshift.rules

Cách dễ nhất tạo quy tắc cho phần mềm là chỉ nêu tên và phân loại loại của nó. Ananicy đi kèm các loại định sẵn cho game, app đa phương tiện, trình soạn thảo văn bản, v.v. Để xem chúng, dùng lệnh:
ananicy dump types

Mỗi loại đi kèm giá trị nice, ionice, cgroup khác nhau, nhưng khuyên bạn không nên đi xa hơn việc điều chỉnh giá trị nice của ứng dụng. Tuy nhiên, đối với ứng dụng đọc/ghi nhiều vào ổ lưu trữ, cũng đáng giá xác định ưu tiên input-output bằng tham số ioclass.
Với tất cả điều đó, chúng ta sẵn sàng tạo quy tắc tùy chỉnh:
{
"name": "timeshift",
"type": "BG_CPUIO",
"nice": 17,
"ioclass": "idle"
}

Quy tắc trên:
- Nêu tên ứng dụng
- Định nghĩa loại
- Gán ưu tiên nice khác so với preset
- Đặt ưu tiên input/output là idle
Về lý thuyết, bạn chỉ cần nêu tên ứng dụng, mọi thứ khác tùy chọn. Thực tế, nếu chỉ làm vậy, Ananicy chỉ thừa nhận sự tồn tại của app nhưng không thử kiểm soát nó. Để làm vậy, bạn phải định nghĩa loại ít nhất.
Loại của nó đi kèm giá trị nice và input/output định sẵn khác nhau, và bạn có thể tìm thấy loại phù hợp với cách bạn muốn giới hạn phần mềm. Đôi khi, như trường hợp timeshift, bạn muốn điều chỉnh thêm. Đó là lúc bạn phải nêu rõ giá trị nice hoặc ioclass bạn muốn nếu khác từ preset loại của Ananicy.
Preset BG_CPUIO chúng ta chọn phù hợp loại ứng dụng vì, như giải pháp sao lưu, nó thường chạy nền nhưng có thể ngốn nhiều chu kỳ xử lý khi đọc/ghi liên tục. Tuy nhiên, preset BG_CPUIO sẽ gán giá trị nice và ionice thấp nhất, có thể làm quá trình sao lưu mất hàng năm. Vì vậy, chúng ta tăng nice lên 17 và ioclass thành best-effort để làm nhanh quá trình một chút.
Hãy xem ví dụ khác. DLC "Joker's Carnival" của Batman: Arkham City là game yêu thích. Hành động dựa trên chuyển động mượt, và tôi cảm thấy nó giật lag trong Linux Mint khi phần mềm khác chạy nền. Vì vậy, tôi muốn làm ngược — tăng ưu tiên nó trên mọi thứ khác.

Kiểm tra System Monitor của Linux Mint sau khi chạy game qua Steam với Proton, ta thấy tên tiến trình là "BatmanAC.exe". Để tăng ưu tiên với Ananicy, tôi tạo quy tắc mới "BatmanAC_ody.rules" như trước. Tuy nhiên, lần này nội dung là:
{
"name": "BatmanAC.exe",
"type": "Game"
}

Đó là đủ vì loại "Game" đi kèm giá trị nice "-5", ưu tiên app trên mọi thứ. Do đó, bạn không phải nêu rõ giá trị nice hoặc tạo quy tắc phức tạp hơn.
Khởi động lại một lần nữa, để an tâm, và Ananicy sẽ hoạt động, sẵn sàng điều chỉnh ưu tiên phần mềm. Giá trị bạn thấy cho tiến trình BatmanAC.exe trong ảnh chụp màn hình dưới được gán tự động, không cần can thiệp người dùng.

Lưu ý bạn không phải làm điều này cho tất cả phần mềm, nhưng nắm lương cương các tiến trình nền tốn tài nguyên nhất và tăng cường các tiến trình tương tác hơn có thể tạo ra khác biệt lớn cho cảm giác dùng máy. Nó có thể giảm thiểu giật lag và cung cấp trải nghiệm mượt mà hơn chung quanh.
Bạn đã dùng Ananicy hoặc giải pháp tương tự cho phép kiểm soát cách tài nguyên máy được gán cho app? Bạn đang renice thủ công phần mềm? Cho chúng tôi biết ở phần bình luận bên dưới.