Computer >> 컴퓨터 >  >> 시스템 >> Linux

리눅스에서 Ananicy로 앱 우선순위를 자동으로 관리하는 방법

리눅스에서 Ananicy로 앱 우선순위를 자동으로 관리하는 방법

오래된 Auto Nice Daemon은 이제 낡았고, 소프트웨어의 우선순위를 일일이 수동으로 변경하는 것도 번거로운 일입니다. 각 프로그램이 사용할 리소스 양을 조절할 수 있는 더 현대적인 방법은 없을까요? Ananicy(ANother Auto NICe daemon)가 바로 그 해답입니다. Ananicy는 최신 auto-nice 솔루션으로, 자주 사용하는 앱에 우선순위를 부여하는 프로필을 만들 수 있습니다. 지금부터 그 사용법을 살펴보겠습니다.

설치 방법

Ananicy는 systemd 환경에서 작동하므로 모든 배포판과 호환되지는 않습니다. Ubuntu, Mint, Debian 등 호환 배포판에서 설치하려면 다음 명령어를 사용하세요:

git clone https://github.com/Nefelim4ag/Ananicy.git
./Ananicy/package.sh debian
sudo dpkg -i ./Ananicy/ananicy-*.deb
리눅스에서 Ananicy로 앱 우선순위를 자동으로 관리하는 방법

Arch, Manjaro 또는 유사한 배포판을 사용 중이라면 다음과 같이 설치할 수 있습니다:

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

Ananicy는 schedtool에 의존하므로 아직 설치되어 있지 않다면 함께 설치해야 합니다. Debian 계열과 Arch 계열 배포판에서 각각 다음 명령어로 설치할 수 있습니다:

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

모든 준비가 끝났다면 데몬을 활성화하여 항상 백그라운드에서 애플리케이션을 감시하도록 설정합니다:

sudo systemctl enable ananicy
리눅스에서 Ananicy로 앱 우선순위를 자동으로 관리하는 방법

실제로 실행하려면 다음 명령어를 입력하세요:

sudo systemctl start ananicy

사양이 낮은 시스템에서 여러 프로그램이 리소스를 두고 경쟁하고 있다면, 설치 직후부터 반응 속도가 눈에 띄게 개선되는 것을 느낄 수 있을 것입니다.

기본 제공 프리셋 확인하기

Ananicy는 인기 있는 애플리케이션들을 위한 다양한 규칙을 기본으로 포함하고 있습니다. 이를 확인하려면 터미널을 열고 Ananicy의 규칙 디렉터리로 이동하세요:

cd /etc/ananicy.d/00-default/
리눅스에서 Ananicy로 앱 우선순위를 자동으로 관리하는 방법

각 애플리케이션의 규칙은 별도의 파일로 저장됩니다. 예를 들어, 널리 쓰이는 파일 공유 클라이언트인 qBittorrent의 기본 규칙을 확인하려면 다음과 같이 입력합니다:

sudo nano qBittorrent.rules

이러한 기본 규칙들을 자신만의 규칙을 작성할 때 참고 템플릿으로 활용할 수 있습니다.

나만의 규칙 추가하기

애플리케이션에 대한 규칙을 만들려면 먼저 해당 프로세스 이름을 알아야 합니다. 다행히 리눅스에서는 프로세스 이름이 대개 애플리케이션 이름과 동일합니다. top 명령어를 사용해 프로세스 이름을 확인할 수 있습니다.

시스템 자원을 많이 잡아먹는 프로세스를 찾아 이름을 적어두세요. 여기서는 timeshift 앱을 예로 들어보겠습니다.

Ananicy의 규칙 디렉터리에 새 텍스트 파일을 생성합니다. 나중에 찾기 쉽도록 애플리케이션 이름을 파일명으로 사용하는 것이 좋습니다. Ananicy가 규칙 파일로 인식할 수 있도록 파일 이름 끝에 반드시 ".rules"를 붙여야 합니다.

sudo nano timeshift.rules
리눅스에서 Ananicy로 앱 우선순위를 자동으로 관리하는 방법

소프트웨어에 대한 규칙을 만드는 가장 간단한 방법은 이름과 유형(type)만 지정하는 것입니다. Ananicy에는 게임, 멀티미디어 앱, 문서 편집기 등에 대한 사전 정의된 유형이 포함되어 있습니다. 이를 확인하려면 다음 명령어를 사용하세요:

ananicy dump types
리눅스에서 Ananicy로 앱 우선순위를 자동으로 관리하는 방법

각 유형마다 서로 다른 nice, ionice, cgroup 값 등이 설정되어 있지만, 애플리케이션의 nice 값 정도만 조정하는 것이 좋습니다. 다만 저장소를 빈번하게 읽고 쓰는 애플리케이션이라면 ioclass 매개변수로 입출력 우선순위까지 정의해 주는 것이 좋습니다.

이제 위 내용을 바탕으로 직접 커스텀 규칙을 만들어 보겠습니다:

{ "name": "timeshift", "type": "BG_CPUIO", "nice": 17, "ioclass": "idle" }
리눅스에서 Ananicy로 앱 우선순위를 자동으로 관리하는 방법

위 규칙의 구성 요소는 다음과 같습니다:

  • 애플리케이션 이름 지정
  • 유형(type) 정의
  • 프리셋과 다른 nice 우선순위 할당
  • 입출력 우선순위를 idle로 설정

이론적으로는 애플리케이션 이름만 지정하면 되고 나머지는 모두 선택 사항입니다. 하지만 실제로는 이름만 적으면 Ananicy가 해당 앱의 존재만 인식할 뿐 제어하지 않습니다. 따라서 최소한 유형(type)까지는 정의해야 합니다.

유형마다 미리 정의된 nice 값과 입출력 값이 다르므로, 원하는 제한 수준에 맞는 유형을 대부분 찾을 수 있을 것입니다. 하지만 때로는 timeshift 예제처럼 값을 더 세밀하게 조정하고 싶을 수 있습니다. 이 경우 Ananicy의 유형 프리셋에 포함된 값과 다른 nice 또는 ioclass 값을 명시적으로 지정하면 됩니다.

우리가 선택한 BG_CPUIO 프리셋은 백업 솔루션인 timeshift의 특성과 잘 맞습니다. 백업 도구는 보통 백그라운드에서 실행되지만, 지속적인 읽기와 쓰기를 수행하면서 상당한 CPU 자원을 소모할 수 있기 때문입니다. 다만 BG_CPUIO 프리셋은 가장 낮은 nice와 ionice 값을 할당하므로 백업 작업이 너무 오래 걸릴 수 있습니다. 그래서 우리는 nice 값을 17로, ioclass를 best-effort로 높여 프로세스 속도를 어느 정도 개선한 것입니다.

다른 예제도 살펴보겠습니다. 배트맨: 아캄 시티의 '조커의 카니발' DLC는 게이머들에게 사랑받는 콘텐츠 중 하나입니다. 이 게임은 부드러운 움직임이 생명인데, 리눅스 민트에서 백그라운드에 다른 프로그램이 실행 중이면 끊김 현상이 발생했습니다. 따라서 이번에는 반대로, 다른 모든 프로세스보다 높은 우선순위를 부여하고 싶었습니다.

리눅스에서 Ananicy로 앱 우선순위를 자동으로 관리하는 방법

Steam과 Proton으로 게임을 실행한 후 리눅스 민트의 시스템 모니터를 확인하면 프로세스 이름이 "BatmanAC.exe"로 표시됩니다. Ananicy로 이 게임에 우선순위를 부여하기 위해 앞서와 같은 방식으로 "BatmanAC_ody.rules"라는 새 규칙 파일을 만들었고, 내용은 다음과 같습니다:

{ "name": "BatmanAC.exe", "type": "Game"}
리눅스에서 Ananicy로 앱 우선순위를 자동으로 관리하는 방법

'Game' 유형은 "-5"라는 nice 값을 기본으로 가지고 있어 다른 모든 앱보다 높은 우선순위를 받기 때문에, 이것만으로 충분했습니다. 따라서 nice 값을 직접 명시하거나 더 복잡한 규칙을 만들 필요가 없습니다.

확인 차 한 번 재부팅하면 Ananicy가 활성화되어 소프트웨어 우선순위를 자동으로 조정할 준비를 마칩니다. 아래 스크린샷에서 BatmanAC.exe 프로세스에 표시된 값은 사용자의 개입 없이 자동으로 할당된 것입니다.

리눅스에서 Ananicy로 앱 우선순위를 자동으로 관리하는 방법

모든 소프트웨어에 이런 설정을 할 필요는 없지만, 리소스를 많이 잡아먹는 백그라운드 프로세스에는 제동을 걸고 인터랙티브한 앱에는 우선순위를 높여주면 컴퓨터 사용 경험이 크게 달라질 수 있습니다. 끊김 현상을 최소화하고 전반적으로 더 매끄러운 환경을 제공합니다.

이미 Ananicy나 이와 유사한 솔루션을 사용해 컴퓨터 리소스 할당을 관리하고 계신가요? 아니면 직접 renice 명령으로 우선순위를 조정하시나요? 아래 댓글로 의견을 공유해 주세요.