Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ระบบ >> Linux

วิธีควบคุมลำดับความสำคัญแอปด้วย Ananicy ใน Linux

Auto Nice Daemon เก่าแล้ว และเปลี่ยน software priorities เองน่าเบื่อ ไม่มีวิธีสมัยใหม่ควบคุมว่าแต่ละโปรแกรมควรใช้ทรัพยากรเท่าไหร่? พบกับ Ananicy (ANother Auto NICe daemon) โซลูชัน auto-nice สมัยใหม่ ที่สร้าง profiles ให้ซอฟต์แวร์เพื่อ prioritize แอปที่คุณแคร์ มาดูวิธีทำกัน

การติดตั้ง

Ananicy ต้องการ systemd จึงไม่เข้ากันได้กับทุก distro ติดตั้งบน Ubuntu, Mint, Debian และ compatible distributions:

git clone https://github.com/Nefelim4ag/Ananicy.git
./Ananicy/package.sh debian
sudo dpkg -i ./Ananicy/ananicy-*.deb

ถ้าอยู่บน Arch, Manjaro หรือ distro คล้ายๆ:

git clone https://github.com/Nefelim4ag/Ananicy.git /tmp/ananicy
cd /tmp/ananicy
sudo make install

Ananicy ต้องพึ่ง schedtool ถ้ายังไม่ติดตั้ง ต้องเพิ่มเข้าไป บน Debian-compatible และ Arch-compatible distributions ตามลำดับ:

# Debian/Ubuntu
sudo apt install schedtool
# Arch Linux
sudo pacman -S schedtool

พร้อมแล้ว enable daemon ให้ active และ monitor แอปพลิเคชันตลอด:

sudo systemctl enable ananicy

เริ่ม application จริง:

sudo systemctl start ananicy

ถ้าอยู่บน low-powered system ที่ทุกซอฟต์แวร์搶ทรัพยากร อาจรู้สึก responsive มากขึ้นทันที

ตรวจสอบ Presets

Ananicy มาพร้อม rules สำเร็จรูปสำหรับแอปพลิเคชันยอดนิยมมาก ตรวจสอบได้โดยเข้า rules directory:

cd /etc/ananicy.d/00-default/

Rules แต่ละแอปเก็บในไฟล์แยก ตัวอย่าง ดู preset rules สำหรับ qBittorrent filesharing client:

sudo nano qBittorrent.rules

ใช้เป็น base สำหรับ rules ของตัวเองได้

เพิ่ม rules ของตัวเอง

สร้าง rules สำหรับแอปพลิเคชัน ต้องรู้ process name บน Linux มักเหมือนชื่อแอป ใช้คำสั่ง top ยืนยัน process name

หา process ที่กินทรัพยากรมาก และจดชื่อ ใช้ timeshift app เป็นตัวอย่าง

สร้างไฟล์ข้อความใหม่ใน rules directory ของ Ananicy ดีกว่าถ้าใช้ชื่อแอปเพื่ออ้างอิงง่ายขึ้น ต้องจบด้วย ".rules" เพื่อ Ananicy recognize ว่าเป็น rules file

sudo nano timeshift.rules

วิธีง่ายที่สุดสร้าง rule สำหรับซอฟต์แวร์ คือระบุชื่อและจำแนก type Ananicy มี predefined types สำหรับ games, multimedia apps, document editors ฯลฯ ดูได้ด้วย:

ananicy dump types

แต่ละ type มี nice, ionice, cgroup และค่าอื่นๆ ต่างกัน แตแนะนำไม่ไปไกลกว่าการปรับ nice value ของแอป แต่สำหรับแอปที่อ่าน/เขียน storage มาก คุ้มค่ากำหนด input-output priority ด้วยพารามิเตอร์ ioclass

พร้อมแล้ว สร้าง custom rule ของเรา:

{ "name": "timeshift", "type": "BG_CPUIO", "nice": 17, "ioclass": "idle" }

Rule ข้างต้น:

  • ระบุชื่อแอปพลิเคชัน
  • กำหนด type
  • กำหนด nice priority ต่างจาก presets
  • ตั้ง input/output priority เป็น idle

ทฤษฎี ต้องระบุแค่ชื่อแอป สิ่งอื่น optional แตปฏิบัติ ถ้าทำแค่นั้น Ananicy จะแค่ acknowledge ความมีอยู่ของแอป แตไม่พยายามควบคุม ต้องกำหนด type อย่างน้อย

Type มาพร้อม nice และ input/output values predefined จะหาตัวที่ตรงกับการ restrict ซอฟต์แวร์ที่ต้องการ บางครั้ง อย่าง timeshift ต้องการปรับเพิ่ม จึงต้องระบุ nice หรือ ioclass อย่างชัดเจนถ้าแตกต่างจาก preset

Preset BG_CPUIO ที่เลือกตรงกับ type ของแอป เพราะ backup solution มักรันใน background แตกิน processing cycles มากขณะ read/write ต่อเนื่อง แต่ BG_CPUIO preset จะ assign lowest nice และ ionice values ทำให้ backup ใช้เวลานานมาก เพราะนี้เพิ่ม nice เป็น 17 และ ioclass เป็น best-effort เพื่อเร่งกระบวนการ

ดูอีกตัวอย่าง Batman: Arkham City "Joker's Carnival" DLC เป็นเกมโปรด เน้น fluid motion รู้สึก stutter ใน Linux Mint ตอนแอปอื่นรันใน background จึงอยากเพิ่ม priority มากกว่าทุกอย่าง

เช็ค System Monitor ของ Linux Mint หลังรันเกมผ่าน Steam with Proton พบ process name "BatmanAC.exe" ให้ nice boost ด้วย Ananicy สร้าง rule "BatmanAC_ody.rules" เนื้อหา:

{ "name": "BatmanAC.exe", "type": "Game" }

พอเพียงแล้ว เพราะ type "Game" มาพร้อม nice "-5" prioritize แอปเหนือทั้งหมด ไม่ต้องระบุ nice เองหรือสร้าง rules ซับซ้อน

รีบูทอีกครั้งเพื่อปลอดภัย Ananicy จะ active พร้อมปรับ priorities ของซอฟต์แวร์ ค่าที่เห็นสำหรับ BatmanAC.exe ในภาพถูก assign อัตโนมัติโดยไม่ต้อง intervention

ไม่ต้องทำสำหรับทุกซอฟต์แวร์ แตควบคุม demanding background processes และ boost interactive ones ทำให้รู้สึกใช้คอมพิวเตอร์ต่างไปหมด ลด stuttering และประสบการณ์ smooth ทั้งround

คุณใช้ Ananicy หรือโซลูชันคล้ายๆ ที่ควบคุมการจัดสรรทรัพยากรให้แอปอยู่แล้วไหม? หรือ renice ซอฟต์แวร์เองด้วยมือ? บอกในความคิดเห็นด้านล่าง