Title: πŸ“œ ionice & nice β€” Priority Control Group: System & Logs Icon: πŸ“œ Order: 98 # ionice & nice Sysadmin Cheatsheet > **Context:** CPU and I/O priority control for processes. / Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π°ΠΌΠΈ CPU ΠΈ I/O для процСссов. > **Role:** Sysadmin / DevOps > **Tools:** nice, renice, ionice --- ## πŸ“š Table of Contents / Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅ 1. [nice β€” CPU Priority](#nice--cpu-priority--ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚-cpu) 2. [renice β€” Change Priority](#renice--change-priority--ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅-ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π°) 3. [ionice β€” I/O Priority](#ionice--io-priority--ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚-io) 4. [Combined Usage](#combined-usage--ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅-использованиС) 5. [Best Practices](#best-practices--Π»ΡƒΡ‡ΡˆΠΈΠ΅-ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ) --- ## 1. nice β€” CPU Priority / ΠŸΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ CPU ### Basic Usage / Π‘Π°Π·ΠΎΠ²ΠΎΠ΅ использованиС nice запускаСт процСсс с ΠΈΠ·ΠΌΠ΅Π½Ρ‘Π½Π½Ρ‹ΠΌ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ΠΎΠΌ CPU (niceness). nice starts a process with modified CPU priority (niceness). ```bash nice # Default +10 niceness / По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ +10 nice -n 10 # Run with niceness 10 / Π—Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ с niceness 10 nice -n 19 # Lowest priority / ΠœΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ sudo nice -n -20 # Highest priority (root) / ΠœΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ (root) ``` ### Niceness Values / ЗначСния niceness ```text -20 = Highest priority / ΠœΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ (Ρ‚ΠΎΠ»ΡŒΠΊΠΎ root) 0 = Default / По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ +19 = Lowest priority / ΠœΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ Negative values = Higher priority / ΠžΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ = Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ Positive values = Lower priority / ΠŸΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ = Π½ΠΈΠΆΠ΅ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ ``` ### Examples / ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ```bash nice -n 19 tar czf backup.tgz /data # Low priority backup / Бэкап с Π½ΠΈΠ·ΠΊΠΈΠΌ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ΠΎΠΌ nice -n 10 find / -type f > list.txt # Background search / Π€ΠΎΠ½ΠΎΠ²Ρ‹ΠΉ поиск sudo nice -n -5 nginx # Higher priority nginx / Nginx с высоким ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ΠΎΠΌ ``` --- ## 2. renice β€” Change Priority / ИзмСнСниС ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π° ### By PID / По PID ```bash renice -n 10 -p # Set niceness 10 / Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ niceness 10 sudo renice -n -5 -p # Higher priority (root) / ΠŸΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ (root) renice -n 19 -p # Lowest priority / ΠœΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ ``` ### By User / По ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ ```bash renice -n 10 -u # All user processes / ВсС процСссы ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ sudo renice -n -5 -u root # All root processes / ВсС процСссы root ``` ### By Process Group / По Π³Ρ€ΡƒΠΏΠΏΠ΅ процСссов ```bash renice -n 10 -g # All in group / ВсС Π² Π³Ρ€ΡƒΠΏΠΏΠ΅ ``` ### Check Current Priority / ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ ```bash ps -l -p # NI column shows niceness / Π‘Ρ‚ΠΎΠ»Π±Π΅Ρ† NI ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ niceness top # NI column in top / Π‘Ρ‚ΠΎΠ»Π±Π΅Ρ† NI Π² top ``` --- ## 3. ionice β€” I/O Priority / ΠŸΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ I/O ### Basic Usage / Π‘Π°Π·ΠΎΠ²ΠΎΠ΅ использованиС ionice управляСт ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ΠΎΠΌ Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π° (диск). ionice controls I/O (disk) priority. ```bash ionice # Show/set I/O priority / ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ/ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ I/O ionice -p # Show priority of PID / ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ PID ionice -c -n # Set class and level / Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ класс ΠΈ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ ``` ### I/O Classes (-c) / ΠšΠ»Π°ΡΡΡ‹ I/O ```text Class 1 = realtime β€” Highest, root only, can starve system / ΠœΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ root, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ²Π΅ΡΠΈΡ‚ΡŒ систСму Class 2 = best-effort β€” Default, adjustable via -n / По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, настраиваСтся Ρ‡Π΅Ρ€Π΅Π· -n Class 3 = idle β€” Only when disk is idle / Волько ΠΊΠΎΠ³Π΄Π° диск свободСн ``` ### I/O Levels (-n) / Π£Ρ€ΠΎΠ²Π½ΠΈ I/O ```text 0 = Highest priority (for class 2) / ΠœΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ (для класса 2) 7 = Lowest priority (for class 2) / ΠœΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ (для класса 2) ``` ### Examples / ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ```bash ionice -c3 rsync -a /mnt/data /backup # Idle class backup / Бэкап Π² классС idle ionice -c2 -n7 find / -type f > list.txt # Low priority search / Поиск с Π½ΠΈΠ·ΠΊΠΈΠΌ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ΠΎΠΌ ionice -c2 -n0 dd if=/dev/zero of=/dev/sda # High priority dd / dd с высоким ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ΠΎΠΌ ionice -p 1234 # Show priority of PID / ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ PID ``` ### For Running Processes / Для Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹Ρ… процСссов ```bash ionice -c3 -p # Set PID to idle class / Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ PID Π² класс idle ionice -c2 -n7 -p # Set PID to low priority / Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ PID Π² Π½ΠΈΠ·ΠΊΠΈΠΉ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ ``` --- ## 4. Combined Usage / ΠšΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ использованиС ### Low CPU + Low I/O / Низкий CPU + Π½ΠΈΠ·ΠΊΠΈΠΉ I/O ```bash ionice -c3 nice -n19 tar czf /backup.tgz /data # Minimal CPU and disk impact / МинимальноС влияниС Π½Π° CPU ΠΈ диск ionice -c3 nice -n19 rsync -a /source /dest # Background rsync / Π€ΠΎΠ½ΠΎΠ²Ρ‹ΠΉ rsync ionice -c2 -n7 nice -n10 find / -type f -mtime +30 > old_files.txt # Low priority file search / Поиск Ρ„Π°ΠΉΠ»ΠΎΠ² с Π½ΠΈΠ·ΠΊΠΈΠΌ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ΠΎΠΌ ``` ### High Priority (Admin) / Высокий ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ (Админ) ```bash sudo ionice -c1 -n0 nice -n-10 # Maximum priority (use with caution) / ΠœΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ (остороТно!) ``` ### Verification / ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ```bash # Check both CPU and I/O priority / ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Ρ‹ CPU ΠΈ I/O ps -o pid,ni,comm -p # CPU niceness / CPU niceness ionice -p # I/O priority / ΠŸΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ I/O ``` --- ## 5. Best Practices / Π›ΡƒΡ‡ΡˆΠΈΠ΅ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ ### Recommended Priorities / Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌΡ‹Π΅ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Ρ‹ ```text Backup jobs: ionice -c3 nice -n19 # Lowest / ΠœΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Log rotation: ionice -c2 -n7 nice -n10 # Low / Низкий Normal tasks: (default) # Standard / Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹ΠΉ Database: ionice -c2 -n0 nice -n-5 # Higher / ΠŸΠΎΠ²Ρ‹ΡˆΠ΅Π½Π½Ρ‹ΠΉ Critical apps: ionice -c1 nice -n-10 # Highest / ΠœΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ ``` ### Use Cases / Π’Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ использования ```bash # Backup scripts / Π‘ΠΊΡ€ΠΈΠΏΡ‚Ρ‹ бэкапа ionice -c3 nice -n19 /usr/local/bin/backup.sh # Cron jobs / Π—Π°Π΄Π°Ρ‡ΠΈ cron # Add to crontab: 0 3 * * * ionice -c3 nice -n19 /path/to/script.sh # Database dumps / Π”Π°ΠΌΠΏΡ‹ Π‘Π” ionice -c2 -n7 nice -n10 pg_dump mydb > backup.sql ionice -c2 -n7 nice -n10 mysqldump --all-databases > backup.sql ``` ### Notes / ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ ```text - ionice works with block devices (HDD, SSD, NVMe) / Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с Π±Π»ΠΎΡ‡Π½Ρ‹ΠΌΠΈ устройствами - Uses I/O scheduler (cfq, bfq, mq-deadline) / ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ I/O scheduler - Combine with nice for both CPU and I/O control / ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΡƒΠΉΡ‚Π΅ с nice для контроля CPU ΠΈ I/O - Ideal for: rsync, find, tar, dd, gzip, bzip2 / идСально для: rsync, find, tar, dd, gzip, bzip2 - Root required for negative niceness / root Π½ΡƒΠΆΠ΅Π½ для ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ niceness - Root required for realtime I/O class / root Π½ΡƒΠΆΠ΅Π½ для realtime класса I/O ``` --- # πŸ’‘ Quick Reference / Быстрый справочник # nice -n19 cmd β€” Lowest CPU priority / ΠœΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ CPU # ionice -c3 cmd β€” Idle I/O class / Класс I/O idle # ionice -c3 nice -n19 cmd β€” Both low / Оба Π½ΠΈΠ·ΠΊΠΈΠ΅ # renice -n10 -p PID β€” Change running process / Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹ΠΉ процСсс # πŸ“‹ Priority Levels Summary / Π‘Π²ΠΎΠ΄ΠΊΠ° ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π° # CPU (nice): -20 (high) β†’ 0 (default) β†’ +19 (low) # I/O (ionice): Class 1 (realtime) β†’ Class 2 (best-effort) β†’ Class 3 (idle)