---
title: 듀얼 GPU 설정 가이드
---

import ImageComponent from '~/components/image-component.astro';

## 하이브리드 그래픽이란?

하이브리드 그래픽은 서로 함께 동작할 수 있는 두 개의 그래픽
카드를 갖춘 하드웨어 구성입니다. 이 방식은 주로 노트북에서 볼 수
있으며, CPU의 내장 그래픽(iGPU)과 별도의 외장 그래픽(dGPU)을 함께
사용합니다.

주요 장점은 내장 그래픽이 인터넷 탐색, 동영상 시청 등과 같은
가벼운 작업에만 사용되도록 할 수 있다는 점입니다. 반면 외장 그래픽은
게임, 영상 편집, 3D 모델링 등 고성능이 필요한 작업에 사용됩니다.

따라서 두 GPU가 각각 “큰” 작업과 “작은” 작업을 나눠 맡는다면, 현재
“작은” 작업만 실행 중일 때는 dGPU를 사용할 필요가 없습니다. 이 경우
dGPU를 단순히 비활성화(잠든 상태처럼)하여 전력 소비를 크게 줄일 수
있습니다. 이후 dGPU가 다시 필요해지면(이를 사용하는 애플리케이션을
실행하면) 깨어나서 동작을 시작합니다.

## PRIME Offload란?

PRIME은 NVIDIA Optimus/AMD Dynamic Switchable Graphics와 같은
Linux의 다양한 하이브리드 그래픽 구성을 다루기 위한 통합 기술입니다.
PRIME Offload는 Linux에서 렌더링 실행을 한 GPU에서 다른 GPU로
옮기는 개념을 구현한 방식입니다.

폐쇄형 NVIDIA 드라이버에서 PRIME 지원은 실제로 435.17 드라이버부터
시작되었습니다. 따라서 오래된 390xx 또는 340xx 드라이버 브랜치를
사용하는 경우 PRIME Offload는 동작하지 않습니다. 또한 nvidia-xrun이나
Bumblebee처럼 하이브리드 그래픽을 처리하던 오래된 방식은 사용하지
않는 것을 강력히 권장합니다. 이들은 오래되었고 지원되지 않으며
(Bumblebee는 8년 넘게 업데이트되지 않았습니다), 해킹성 방식에만
의존하고 성능도 낮습니다. 동시에 Nouveau 드라이버는 PRIME Offload를
지원하므로, 오래된 dGPU의 대안이 될 수 있습니다.

CachyOS에서는 **PRIME Offload가 동작하도록 하기 위해 아무것도 설정할
필요가 없습니다**. nvidia-utils 패키지와 cachyos-settings만 있으면
PRIME Offload를 사용하는 데 필요한 것이 이미 갖춰져 있습니다.

또한 optimus-manager 같은 도구 사용은 피해 주세요. 겉보기에는 꽤
편리해 보일 수 있지만, 실제로는 많은 문제를 일으킬 수 있습니다. dGPU가
PRIME Offload와 동적 전원 관리를 지원한다면 이러한 도구는 정말 필요하지
않습니다.

### PRIME Offload 사용 방법

내장 그래픽 대신 외장 그래픽을 사용하고 싶다는 것을 PRIME에 알리려면,
프로그램을 실행하기 전에 여러 환경 변수를 지정해야 합니다.

```bash
__NV_PRIME_RENDER_OFFLOAD=1 __VK_LAYER_NV_optimus=NVIDIA_only __GLX_VENDOR_LIBRARY_NAME=nvidia <program>
```

이 변수 묶음은 매우 번거롭고 잊기 쉽기 때문에, `nvidia-prime` 패키지
(`sudo pacman -S nvidia-prime`)를 설치할 수 있습니다. 이 패키지에는 이
모든 변수를 대신하는 스크립트 별칭이 포함되어 있습니다. 그러면 이를
사용해 애플리케이션을 실행하는 방식은 다음과 같습니다.

```bash
prime-run <program>
```

여기서 `<program>`은 애플리케이션을 실행하는 명령의 이름입니다.

:::note
일부 DX12 게임은 `prime-run`을 사용해도 dGPU 선택에 문제가 있을 수
있습니다. 이를 우회하려면 `prime-run` 래퍼 스크립트 앞에 환경 변수
`VK_DRIVER_FILES=/usr/share/vulkan/icd.d/nvidia_icd.json`를 추가하세요.
:::

두 그래픽 카드가 모두 개방형 Mesa 드라이버로 관리되는 구성
(예: AMD+AMD, AMD+Intel, 또는 NVIDIA 외장 그래픽이 오픈 소스 Nouveau
드라이버로 관리되는 Intel+NVIDIA)에서는 별도의 설정이 필요하지 않습니다.
외장 그래픽을 사용하려면 애플리케이션이나 게임을 실행하기 전에
`DRI_PRIME=1` 환경 변수만 지정하면 됩니다. 이는 앞서 NVIDIA용으로 설명한
여러 변수와 비슷한 방식이며, 아래에서 설명하는 준비된 그래픽 방식도
사용할 수 있습니다.

## 그래픽 방식

필요한 모든 애플리케이션을 터미널에서 `prime-run`으로 실행하는 방식이
불편할 수 있습니다. 다행히 일부 애플리케이션과 데스크톱 환경은 특정
애플리케이션에 어떤 GPU를 사용할지 제어하는 도구를 제공합니다.

### Lutris

Lutris에서 게임이 외장 그래픽으로 실행되도록 설정하려면 설정으로 이동해야
합니다(창 오른쪽 아래의 세 줄 아이콘과 "Preferences" 버튼). 다음으로
*"Global Options"* -> *"Display"*로 이동합니다. 여기에서 게임이 실행될
GPU를 선택할 수 있습니다.

<br />
<ImageComponent imgsrc={import('~/assets/images/lutris-prime.png')} />

### Steam

Steam에는 게임이 외장 그래픽을 사용하도록 강제하는 별도 설정이 없습니다.
하지만 게임을 실행하기 전에 톱니바퀴 아이콘을 클릭하여 게임 속성에
들어갈 수 있습니다. "Launch options" 입력란에 prime-run 명령이나 환경
변수를 추가할 수 있습니다. 예시는 다음과 같습니다.

```bash
prime-run %command%
```

`prime-run` 뒤에 반드시 `%command%`를 추가하세요. 게임 옵션은 이 자리표시자
뒤에 오고, 시스템 환경 변수나 명령은 그 앞에 와야 한다는 점을 기억하세요.

대신 내장 그래픽으로 게임을 실행하려면, Radeon 내장 그래픽을 위한 다음
실행 옵션을 예시로 사용할 수 있습니다. 저전력 게임에서 배터리 사용 시간을
늘리고 팬 소음을 줄이려는 경우 유용할 수 있습니다.

```bash
VK_DRIVER_FILES=/usr/share/vulkan/icd.d/radeon_icd.x86_64.json:/usr/share/vulkan/icd.d/radeon_icd.i686.json %command%
```

<br />
<ImageComponent imgsrc={import('~/assets/images/steam-prime.png')} />

### KDE Plasma

Plasma에는 외장 그래픽으로 애플리케이션 시작을 설정할 수 있는 매우 편리한
방법이 있습니다. 다만 이 방법은 switcheroo-control 패키지와 해당 서비스가
시스템에 설치되어 있는 경우에만 동작합니다.

CachyOS를 새로 설치한 경우, 이 패키지와 서비스는 chwd를 통해 기본적으로
이미 활성화되어 있을 것입니다.

```bash
sudo pacman -S switcheroo-control
sudo systemctl enable --now switcheroo-control
```

두 명령을 모두 실행한 뒤, 데스크톱이나 애플리케이션 메뉴에서 원하는
데스크톱 항목을 마우스 오른쪽 버튼으로 클릭한 다음 *"Properties"* ->
*"Application"* -> *"Advanced Options"*로 이동합니다.

*"Run using dedicated graphics card"* 체크박스가 선택되어 있어야 합니다.

<br />
<ImageComponent imgsrc={import('~/assets/images/plasma-prime.jpg')} />

:::note
switcheroo-control을 사용하면 AMD-APU+AMD-Dedicated처럼 NVIDIA dGPU가
없는 PRIME 구성에서도 이러한 체크박스가 동작합니다.
:::

### GNOME

GNOME에서도 위에 나온 것처럼 switcheroo-control을 설치한 뒤,
애플리케이션 아이콘을 마우스 오른쪽 버튼으로 클릭하고 *"Run using discrete graphics"*를
선택하면 됩니다. 다만 GNOME은 이 선택을 이후에도 기억하지 않으며, 다음에
아이콘에서 애플리케이션을 실행하면 외장 그래픽이 아니라 내장 그래픽으로
실행됩니다.

### Cinnamon

Plasma와 비슷하게 Cinnamon에서도 특정 애플리케이션에 사용할 GPU를 선택할
수 있습니다. 애플리케이션의 데스크톱 항목을 마우스 오른쪽 버튼으로 클릭하고
Properties로 이동한 뒤 관련 옵션을 활성화하세요.

<br />
<ImageComponent imgsrc={import('~/assets/images/cinnamon-prime.png')} />

해당 옵션이 보이지 않는다면 `switcheroo-control`이 설치되어 있고 해당
서비스가 활성화되어 있는지 확인하세요. 모든 데스크톱 환경은 이 기능을
위해 switcheroo-control에 의존합니다.

## 문제 해결

### "PRIME에서 외부 모니터가 매우 버벅입니다"

이는 알려진 NVIDIA 드라이버 문제입니다. 최신 NVIDIA 드라이버가 설치되어
있어야 하며, explicit sync를 지원하는 컴포지터와 함께 Wayland를 사용해야
합니다. GNOME에서는 이 문제가 46.2 버전에서 수정되었습니다. Plasma 6의
경우 6.1에서 수정될 가능성이 높지만, 일부 사용자는 이미 6.0에서도 정상
성능을 보고하고 있습니다. 다른 환경/창 관리자는 여전히 이 문제가 있으므로,
문제를 해결하려면 최신 버전의 GNOME 또는 Plasma로 전환해야 합니다.
