Ubuntu 에서 Nvidia 를 활용하기 위해서는 nvidia-driver
와 cuda-toolkit
2개를 필요로 합니다. 시스템 업데이트를 진행하다 보면 2개의 내용을 확인 및 업데이트에 대하여 알아보겠습니다.
Checking Ubuntu System
MariaDB 에서 작업을 진행하다가 다음과 같은 오류가 발생 했습니다.
$ nvidia-smi
zsh: command not found: nvidia-smi
$ nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2023 NVIDIA Corporation
Built on Wed_Nov_22_10:17:15_PST_2023
Cuda compilation tools, release 12.3, V12.3.107
Build cuda_12.3.r12.3/compiler.33567101_0
설치된 시스템의 드라이브 내용을 살펴보면 다음과 같았습니다.
$ sudo dpkg -l | grep nvidia
ii libnvidia-cfg1-560:amd64 amd64 NVIDIA binary OpenGL/GLX configuration library
ii libnvidia-common-560 all Shared files used by the NVIDIA libraries
rc libnvidia-compute-545:amd64 amd64 Transitional package for libnvidia-compute-550
rc libnvidia-compute-550:amd64 amd64 Transitional package for libnvidia-compute-560
ii libnvidia-compute-560:amd64 amd64 NVIDIA libcompute package
ii libnvidia-compute-560:i386 i386 NVIDIA libcompute package
ii libnvidia-decode-560:amd64 amd64 NVIDIA Video Decoding runtime libraries
iU libnvidia-decode-560:i386 i386 NVIDIA Video Decoding runtime libraries
ii libnvidia-egl-wayland1:amd64 amd64 Wayland EGL External Platform library -- shared library
ii libnvidia-encode-560:amd64 amd64 NVENC Video Encoding runtime library
iU libnvidia-encode-560:i386 i386 NVENC Video Encoding runtime library
ii libnvidia-extra-560:amd64 amd64 Extra libraries for the NVIDIA driver
ii libnvidia-fbc1-560:amd64 amd64 NVIDIA OpenGL-based Framebuffer Capture runtime library
iU libnvidia-fbc1-560:i386 i386 NVIDIA OpenGL-based Framebuffer Capture runtime library
ii libnvidia-gl-560:amd64 amd64 NVIDIA OpenGL/GLX/EGL/GLES GLVND libraries and Vulkan ICD
rc nvidia-compute-utils-545 amd64 NVIDIA compute utilities
ii nvidia-compute-utils-560 amd64 NVIDIA compute utilities
rc nvidia-dkms-545 amd64 NVIDIA DKMS package
iF nvidia-dkms-560 amd64 NVIDIA DKMS package
iU nvidia-driver-560 amd64 NVIDIA driver metapackage
ii nvidia-firmware-560-560.35.03 amd64 Firmware files used by the kernel module
rc nvidia-kernel-common-545:amd64 amd64 Transitional package for nvidia-kernel-common-550
rc nvidia-kernel-common-550 amd64 Shared files used with the kernel module
ii nvidia-kernel-common-560 amd64 Shared files used with the kernel module
ii nvidia-kernel-source-560 amd64 NVIDIA kernel source package
ii nvidia-settings amd64 Tool for configuring the NVIDIA graphics driver
ii nvidia-utils-560 amd64 NVIDIA driver support binaries
ii screen-resolution-extra all Extension for the nvidia-settings control panel
ii xserver-xorg-video-nvidia-560 amd64 NVIDIA binary Xorg driver
Remove Drivers
Ubuntu Pop-OS
에서 지원하는 Nvidia
설치 방법도 있지만, 일반적인 우분투 설치과정을 확인 합니다. Ubuntu Linux Install Nvidia Driver (Latest Proprietary Driver)
$ sudo apt install nvidia-driver-560 nvidia-dkms-560
Unix Driver Version
Perplexity AI Comments
## Preparation
# Update and upgrade your system:
sudo apt update && sudo apt upgrade -y
# Remove any previous NVIDIA installations:
sudo apt autoremove "nvidia*" --purge
# Check for recommended drivers:
ubuntu-drivers devices
## Install NVIDIA Drivers
# Check for recommended drivers:
sudo ubuntu-drivers autoinstall
# Reboot your system:
sudo reboot
# Verify the installation:
nvidia-smi
## Install CUDA Toolkit
# Download the CUDA repository package:
Install Latest Driver
CUDA Installl
Download Installer for Linux Ubuntu 22.04 x86_64
# CUDA Toolkit Installer Installation Instructions:
$ wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-ubuntu2204.pin
$ sudo mv cuda-ubuntu2204.pin /etc/apt/preferences.d/cuda-repository-pin-600
$ wget https://developer.download.nvidia.com/compute/cuda/12.6.3/local_installers/cuda-repo-ubuntu2204-12-6-local_12.6.3-560.35.05-1_amd64.deb
$ sudo dpkg -i cuda-repo-ubuntu2204-12-6-local_12.6.3-560.35.05-1_amd64.deb
$ sudo cp /var/cuda-repo-ubuntu2204-12-6-local/cuda-*-keyring.gpg /usr/share/keyrings/
$ sudo apt-get update
$ sudo apt-get -y install cuda-toolkit-12-6
# Driver Installer NVIDIA Driver Instructions (choose one option)
# To install the open kernel module flavor:
sudo apt-get install -y nvidia-open
# To install the legacy kernel module flavor:
sudo apt-get install -y cuda-drivers
오류의 내용
오류 메세지 내용은 다음과 같습니다.
File "/django/mysite/_instance.py", line 35, in <lambda>
filter(lambda x : model.objects.filter(code=x).count() == 0,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/erdos/Source/.venv/lib/python3.11/site-packages/MySQLdb/cursors.py", line 179, in execute
res = self._query(mogrified_query)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/erdos/Source/.venv/lib/python3.11/site-packages/MySQLdb/cursors.py", line 330, in _query
db.query(q)
File "/home/erdos/Source/.venv/lib/python3.11/site-packages/MySQLdb/connections.py", line 261, in query
_mysql.connection.query(self, query)
django.db.utils.OperationalError: (2013, 'Lost connection to MySQL server during query')
해당 오류는 서버와 연결이 끊어진 것 으로 다음과 같은 원인에 의해 발생합니다.
- 누군가 세션을 kill하여 발생할 수 있습니다.
- 네트워크 문제로 인해 연결이 끊어져서 발생 할 수 있습니다.
- 서버 내 충돌이 일어나 끊길 수 있습니다.
- 연결이 유휴 상태 wait_timeout이며 종료될 수 있습니다.
- 클라이언트가 데이터를 충분히 빨리 가져 오지 못하고 종료되어 net_wait_timeout될 수 있습니다.
해결방법
문제가 발생한 쿼리함수를 보다 원할하게 작동할 수 있도록 구조와 함수를 변경하는 방법이 하나 있습니다.
File "/home/erdos/Source/django/app_stock/tasks/_data/_instance.py", line 35, in <lambda>
filter(lambda x : model.objects.filter(code=x).count() == 0,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
MariaDB Setting
또는 SQL
의 net_read_timeout
과 net_write_timeout
시간값을 기본값 보다 큰 값으로 재설정 하는 방법이 있습니다. MySQL - Error 2013/Error 2006 을 참고하여 DB Setting 값을 변경하는 방법은 다음과 같습니다.
MariaDB> show variables like 'net_read_timeout%';
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| net_read_timeout | 30 |
+------------------+-------+
MariaDB> show variables like 'net_write_timeout%';
+-------------------+-------+
| Variable_name | Value |
+-------------------+-------+
| net_write_timeout | 60 |
+-------------------+-------+
MariaDB> set global net_read_timeout = 10800;
MariaDB> set global net_write_timeout = 10800;