Nvidia-persistenced
Persistence Daemon
NVIDIA는 Cuda 작업 실행 전반에 걸쳐 드라이버 상태의 지속성을 지원하기 위해 Linux에서 사용자 공간 데몬을 제공하고 있습니다. 데몬 접근 방식은 지속성 모드보다 이 문제에 대해 더 우아하고 강력한 솔루션을 제공합니다.
NVIDIA는 가까운 장래에(아마도 Cuda 8.0을 통해) 두 솔루션을 모두 지원할 것이지만 데몬에 대한 모든 향후 개발 및 버그 수정에 집중할 것입니다.
데몬은 /usr/bin
에 설치되고 샘플 설치 및 초기화 스크립트는 문서 디렉토리의 드라이버와 함께 포함됩니다. 스크립트는 일부 일반적인 init 시스템의 시스템 시작 시 실행할 데몬을 설치하기 위한 가이드로 제공됩니다. 다양한 초기화 시스템 구성으로 인해 특정 배포판에 대해 약간의 변경이 필요할 수 있습니다.
NVIDIA는 고객이 가능한 한 빨리 이 데몬 접근 방식으로 전환할 것을 권장합니다.
Supported Environments
- Drivers: R319 and higher
- OSes: All standard driver-supported Linux platforms
- GPUs: All shipping Tesla, Quadro and GRID products
Implementation Details
NVIDIA GPU 드라이버를 실행하는 Linux 시스템에서 클라이언트는 장치 파일을 열어 GPU를 연결합니다. 반대로 GPU는 장치 파일을 닫아 분리됩니다. GPU 상태는 하나 이상의 클라이언트가 장치 파일을 열 때마다 드라이버에 로드된 상태로 유지됩니다. 모든 클라이언트가 장치 파일을 닫으면 지속성 모드가 활성화되지 않는 한 GPU 상태가 언로드됩니다.
사용자 공간 그래픽 드라이버의 오버헤드를 발생시키지 않고 그래픽 환경을 시뮬레이션하기 위해 기본적으로 백그라운드에서 실행되고 장치 파일이 열린 상태에서 절전 모드로 전환되는 NVIDIA Persistence Daemon을 구현했습니다. 데몬은 libnvidia-cfg를 사용하여 PCI 버스 주소를 기반으로 올바른 장치 파일을 열고 닫고 RPC 인터페이스를 제공하여 각 GPU의 지속성 모드를 개별적으로 제어합니다. 따라서 데몬이 장치 파일을 열린 상태로 유지하는 동안 적어도 하나의 클라이언트인 데몬에는 GPU가 연결되어 있고 드라이버는 GPU 상태를 언로드하지 않습니다. 데몬이 실행되기 시작하면 모든 장치에 대해 지속성 모드가 비활성화된 경우에도 종료될 때까지 백그라운드에 남아 있습니다.
솔루션의 특성으로 인해 데몬은 NVIDIA 커널 모드 드라이버에서 구현된 현재 "레거시 지속성 모드"라고 부르는 것을 대체하는 드롭인으로 사용할 수 있습니다. NVIDIA SMI는 데몬이 실행 중인 경우 데몬을 사용하여 지속성 모드를 설정하기 위해 데몬의 RPC 인터페이스를 사용하도록 드라이버 버전 319에서 업데이트되었으며, 데몬이 실행되고 있지 않은 경우 커널 모드 드라이버에서 레거시 지속성 모드 설정으로 대체됩니다. 달리기. 이것은 모두 NVIDIA SMI에 의해 투명하게 처리되므로 지속성 모드가 구성되는 방식에 변경이 없어야 합니다. 결국 레거시 지속성 모드는 관련 사용 사례에서 널리 채택되면 NVIDIA Persistence Daemon을 위해 더 이상 사용되지 않고 제거됩니다.
Permissions and Security
NVIDIA Persistence Daemon은 단순히 GPU의 외부 클라이언트를 모방하지만 실제로 어떤 작업에도 GPU를 사용하지 않기 때문에 Linux에서 보다 강력한 지속성 모드 구현을 제공합니다. 이러한 방식으로 NVIDIA GPU 드라이버가 원래 설계의 가정 내에서 작동하도록 합니다.
데몬이 실행되면 지속성 모드를 활성화한 상태로 유지하기 위한 최소한의 오버헤드가 있습니다. 데몬은 단순히 명령을 기다리면서 잠자기 상태가 됩니다.
데몬을 실행하는 데 수퍼유저 권한이 필요하지는 않지만 /var/run
에서 일부 런타임 데이터를 설정하려면 수퍼유저 권한이 필요합니다. 데몬은 수퍼유저 권한 없이 사용자로 실행할 수 있는 두 가지 메커니즘을 허용합니다.
관리자(또는 수퍼유저 권한으로 실행되는 스크립트)는 /var/run/nvidia-persistenced
디렉토리를 생성하고 데몬이 실행될 사용자에게 이를 chown할 수 있습니다. 그런 다음 su 또는 이와 유사한 것을 사용하여 데몬을 의도한 사용자로 실행할 수 있습니다. 이 경우 데몬이 종료될 때 /var/run/nvidia-persistenced
디렉토리가 제거되지 않습니다.
데몬은 수퍼유저 권한으로 시작될 수 있으며 --user
옵션을 사용할 수 있습니다. 이렇게 하면 데몬이 /var/run/nvidia-persistenced
디렉토리를 생성한 후 가능한 한 빨리 수퍼유저 권한을 삭제하고 지정된 사용자로 실행하도록 합니다. 이 메커니즘을 사용하면 사용자에게 /var/run
에 대한 쓰기 권한이 없을 수 있으므로 데몬이 종료될 때 /var/run/nvidia-persistenced
디렉토리를 제거하지 못할 수 있습니다.
두 경우 모두 데몬이 종료될 때 런타임 데이터 디렉터리를 제거하지 못할 수 있으므로 이 작업은 일반적으로 데몬에 대한 초기화 스크립트 또는 서비스에서 처리해야 합니다.
데몬은 단순히 --user
옵션을 생략하여 영구적인 수퍼유저 권한으로 실행할 수도 있지만 이는 권장되지 않으며 기능에 필요하지도 않습니다.
데몬은 디버깅 목적으로 syslog에 대한 로깅 출력을 증가시키는 --verbose
옵션도 제공합니다.
데몬의 소스 코드는 MIT 라이선스에 따라 제공되어 제2자 및 제3자 보안 감사를 허용합니다.
Usage
NVIDIA 퍼시스턴스 데몬을 실행하려면 (루트로) 다음을 실행하십시오:
슈퍼 사용자 권한이 필요한 최소한의 설정 작업을 수행한 후 데몬은 슈퍼 사용자 권한을 삭제하고 사용자 'foo'로 실행합니다.
NVIDIA SMI를 사용하여 지속성 모드 설정을 변경할 수 있습니다. 예를 들어, 모든 GPU에서 지속성 모드를 비활성화 하려면 간단히 다음을 실행합니다 (루트로).
Please see the nvidia-persistenced(1) manpage, which is installed by the NVIDIA GPU driver installer, or the output of:
설치 주의 사항
레거시 지속성 모드를 즉시 중단하고 NVIDIA 지속성 데몬으로 투명하게 전환할 수 없는 이유는 현재로서는 NVIDIA 지속성 데몬이 실행될 것이라고 보장할 수 없기 때문입니다. 지속성 모드를 기본적으로 사용할 수 없을 수 있으므로 이는 기능 회귀가 됩니다.
NVIDIA Persistence 데몬은 드라이버 버전 319부터 시작하는 NVIDIA Linux GPU 드라이버와 함께 제공되며 설치 프로그램에 의해 /usr/bin/nvidia-persistenced
로 설치됩니다. 이상적으로, 데몬은 사용자에게 투명하게 Linux 배포판의 초기화 시스템에 따라 시스템 초기화에서 시작하고 시스템 종료 시 종료됩니다. 유감스럽게도 Linux에서 시스템 초기화를 시작하기 위해 애플리케이션을 설치하는 단일 표준이 없으므로 NVIDIA GPU 드라이버가 지원하는 광범위한 시스템에서 이를 안정적으로 수행할 수 없습니다.
따라서 일반적으로 패키지 관리자를 통해 설치하기 위해 NVIDIA GPU 드라이버를 재패키징하는 개별 배포가 시스템 초기화 시 시작하도록 NVIDIA Persistence Daemon을 설치하도록 권장하고 싶습니다. 이는 초기화 시스템이 알려지면 거의 사소한 작업입니다. 이를 위해 이 설치를 돕기 위해 드라이버 패키지에 샘플 "초기화 스크립트"를 제공하고 있습니다. 이 스크립트는 오늘날 Linux 배포판에서 볼 수 있는 가장 널리 퍼진 세 가지 초기화 시스템인 SystemV, systemd 및 Upstart를 다루려고 합니다. 샘플 스크립트는 또한 init 시스템을 감지하고 사용자에게 적절한 스크립트를 설치하려고 시도하는 설치 프로그램 스크립트와 함께 제공됩니다. 샘플 스크립트 및 설치 프로그램 스크립트는 NVIDIA GPU 드라이버 설치 프로그램에 의해 /usr/share/doc/NVIDIA_GLX-1.0/sample/nvidia-persistenced-init.tar.bz2
에 설치됩니다. 지원되는 모든 시스템에서 기본적으로 올바르게 작동한다고 보장할 수 없기 때문에 드라이버 설치 프로그램에서 압축을 풀거나 실행하지 않습니다.
기본적으로 설치 프로그램 스크립트는 데몬을 실행할 새 시스템 사용자를 생성하려고 시도하고 샘플 init 스크립트는 수퍼유저 권한 없이 데몬을 실행하기 위한 권한 및 보안에 설명된 두 번째 옵션을 보여줍니다.
systemd 서비스 확인
다음과 같이 nvidia-persistenced.service를 추가하면 된다.