プログラミングとかLinuxとかの備忘録

プログラミング、Linuxでハマった箇所や環境構築のメモ

CentOS Stream9でdockerを動かす

Dockerのインストール

Podmanとかを削除

$ sudo dnf remove podman runc

ここからは公式の情報dnfに置き換えて実行していく。

リポジトリを追加

$ sudo dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo

インストール

$ sudo dnf install docker-ce docker-ce-cli containerd.io docker-compose-plugin

$ docker --version
Docker version 20.10.18, build b40c2f6

サービスの起動

$ sudo systemctl enable docker
$ sudo systemctl start docker

dockerグループにユーザを追加する

$ sudo gpasswd -a ユーザ名 docker

ログインし直すと

$ docker images
REPOSITORY   TAG       IMAGE ID   CREATED   SIZE

docker-composeのインストール

最新バージョンをdocker/compose - GitHubで確認してcurlでコピーする

$ sudo curl -L "https://github.com/docker/compose/releases/download/v2.10.2/docker-compose-linux-x86_64" -o /usr/local/bin/docker-compose

パーミッションを設定

$ sudo chmod 0755 /usr/local/bin/docker-compose

確認

$ docker-compose --version
Docker Compose version v2.10.2

UNKNOWN attributeDescription "AUTOMOUNTINFORMATION" insertedの原因

OpenLDAPサーバーにうまくつながらず、調べてみると

$ sudo slapcat > /dev/null
6226d131 UNKNOWN attributeDescription "AUTOMOUNTINFORMATION" inserted.

と警告文が出ていた。

9.4.4. LDAP を使用した自動マウント機能マップの格納 Red Hat Enterprise Linux 6 | Red Hat Customer Portal を見る限りおそらくAutoFS(使っていない)の設定が原因っぽい。

とりあえずAutoFS関連のパッケージを削除するとつながるようになった。

$ sudo apt purge autofs autofs-ldap

警告文の仕方はわからなかった...

RTX3090+Ubuntu20.04でPyTorchを動かす

RTX3090 + Ubuntu20.04でPyTorch-1.7.0が動いたので、メモ.

ドライバのインストール

$ sudo add-apt-repository ppa:graphics-drivers/ppa
$ sudo apt update
$ sudo apt install nvidia-driver-455

インストール後に再起動

$ sudo reboot

CUDA-11.1のインストール

RTX3000シリーズはCUDA11にしか対応してない?

CUDA Toolkit 11.1 Update 1 Downloads | NVIDIA Developerの通りにコマンドを実行する

$ wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin
$ sudo mv cuda-ubuntu2004.pin /etc/apt/preferences.d/cuda-repository-pin-600
$ sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/7fa2af80.pub
$ sudo add-apt-repository "deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/ /"
$ sudo apt-get update
$ sudo apt-get -y install cuda

cuDNN-8.0.5のインストール

NVIDIA cuDNN | NVIDIA DeveloperDownload cuDNNからダウンロードしてきたlibcudnn8-dev_8.0.5.39-1+cuda11.1_amd64.debをインストールする。

$ sudo apt install -y ./libcudnn8-dev_8.0.5.39-1+cuda11.1_amd64.deb

PyTorchのインストール

PyTorchのGet Startedページ

を選んで出てきたコマンドを実行する

$ pip install torch==1.7.0+cu110 torchvision==0.8.1+cu110 torchaudio===0.7.0 -f https://download.pytorch.org/whl/torch_stable.html

これでRTX3090+Ubuntu20.04+PyTorch1.7.0が動いた。

Arch LinuxでKVMを動かす

環境

  • CPU: Ryzen 3600
  • Kernel: 5.8.13-arch1-1
$ LC_ALL=C lscpu | grep Virtualization
Virtualization:                  AMD-V

の通り、AMD-Vで仮想化がサポートされている

インストール

$ sudo pacman -S qemu libvirt virt-manager virt-viewer

自動起動

$ sudo systemctl start libvirtd
$ sudo systemctl enable libvirtd

IOMMUの有効化

bootオプションにamd_iommu=oを追加する

$ sudo vim /boot/loader/entries/arch.conf
- options root=PARTUUID=296bb6cc-2a3f-45d4-a3ad-9e8041d75903 rw
+ options root=PARTUUID=296bb6cc-2a3f-45d4-a3ad-9e8041d75903 rw amd_iommu=on

編集後に再起動する

$ sudo reboot

dmesgを確認し下のような出力が出てこればIOMMUが有効化されている

$ dmesg | grep IOMMU
[    0.395281] AMD-Vi: AMD IOMMUv2 driver by Joerg Roedel <jroedel@suse.de>
[    0.395282] AMD-Vi: AMD IOMMUv2 functionality not available on this system

virt-managerの起動

$ sudo virt-manager

とするとroot権限でVirtManagerが起動できるはず。

Arch LinuxでRadeon RX5500XT(Navi14)をいい感じに動かす設定

i7-6700k + Arch Linuxで動かしていた環境にSapphire Pulse Radeon RX5500XTを導入した後にゲーム等でGPUに負荷がかかると画面が砂嵐?みたいになってフリーズする現象への対応策とか。

Dynamic Power Managementの無効化

フリーズする根本的な原因はDPMのせいらしいです。
https://wiki.archlinux.org/index.php/AMDGPU#System_freeze_or_crash_when_gaming_on_Vega_cards

ArchWikiの通りにカーネルパラメータにradeon.dpm=0を追加して再起動すると無効化できる

$ sudo vim /boot/loader/entries/arch.conf
title   Arch Linux
linux   /vmlinuz-linux
initrd  /initramfs-linux.img
options root=PARTUUID=0bd23e2f-d30b-45d1-8ded-8026f596513e rw intel_iommu=on radeon.dpm=0

radeontopが正しく動作しない

こんな感じでGPU使用率とかが見れない

$ sudo radeontop
Failed to open DRM node, no VRAM support.
Unknown Radeon card. <= R500 won't work, new cards might.

最新版のradeontop(1:1.0.r6.g07ec134-1)に入れ替えれば見れる様になった

$ yay -R radeontop
$ yay -S radeontop-git

zfs-on-linuxでzfsを試す

ハードウェア

  • CPU: i7-6700k
  • RAM: 16GB
  • HDD: TOSHIBA DT01ACA300 (3TB)

ディスクIO性能ベンチマーク

fioのインストール

$ sudo pacman -S fio

LinuxでもCrystalDiskMarkぽいディスクベンチマークしたい」のfio設定ファイルを若干改変したもを作成(benchmark.fio)してベンチマークする

[global]
ioengine=libaio
iodepth=1
size=3g
direct=1
runtime=10
directory=/mnt/hdd
stonewall

[Seq-Read]
bs=1m
rw=read

[Seq-Write]
bs=1m
rw=write

[Rand-Read-4K]
bs=4k
rw=randread

[Rand-Write-4K]
bs=4k
rw=randwrite

[Rand-Read-4K-QD32]
iodepth=32
bs=4k
rw=randread

[Rand-Write-4K-QD32]
iodepth=32
bs=4k
rw=randwrite

ベンチマークの実行は下のコマンド

$ sudo fio benchmark.fio

ext4

フォーマット&マウント

$ sudo mkfs -t ext4 /dev/sda1
$ sudo mount /dev/sda1 /mnt/hdd

ベンチマーク結果

   READ: bw=174MiB/s (183MB/s), 174MiB/s-174MiB/s (183MB/s-183MB/s), io=1743MiB (1828MB), run=10005-10005msec
  WRITE: bw=154MiB/s (161MB/s), 154MiB/s-154MiB/s (161MB/s-161MB/s), io=1540MiB (1615MB), run=10005-10005msec

   READ: bw=592KiB/s (606kB/s), 592KiB/s-592KiB/s (606kB/s-606kB/s), io=5920KiB (6062kB), run=10004-10004msec
  WRITE: bw=1450KiB/s (1485kB/s), 1450KiB/s-1450KiB/s (1485kB/s-1485kB/s), io=14.3MiB (15.0MB), run=10119-10119msec

   READ: bw=1505KiB/s (1541kB/s), 1505KiB/s-1505KiB/s (1541kB/s-1541kB/s), io=14.9MiB (15.6MB), run=10129-10129msec
  WRITE: bw=1531KiB/s (1567kB/s), 1531KiB/s-1531KiB/s (1567kB/s-1567kB/s), io=15.1MiB (15.8MB), run=10074-10074msec

zfs

インストール

$ yay -S zfs-linux
==> Error: Could not find all required packages:
    zfs-utils=0.8.3 (Wanted by: zfs-linux)

zfs-linuxzfs-utilsのバージョンが追いついていなかったのでzfs-linux-gitで試す。

$ yay -S zfs-linux-git

partedでext4用に作成したパーティションを削除後に下記を実行

$ ls -lh /dev/disk/by-id/ | grep sda
lrwxrwxrwx 1 root root  9  1月 26 16:58 ata-TOSHIBA_DT01ACA300_Z3FGRANGS -> ../../sda
lrwxrwxrwx 1 root root  9  1月 26 16:58 wwn-0x5000039ff4d4c893 -> ../../sda

ZFSプールの作成

$ sudo zpool create -m /mnt/hdd tank ata-TOSHIBA_DT01ACA300_Z3FGRANGS

$ zpool list
NAME   SIZE  ALLOC   FREE  CKPOINT  EXPANDSZ   FRAG    CAP  DEDUP    HEALTH  ALTROOT
tank  2.72T   596K  2.72T        -         -     0%     0%  1.00x    ONLINE  -

$ df -h | grep tank
tank             2.7T  128K  2.7T    1% /mnt/hdd

ベンチマーク

$ sudo fio benchmark.fio

結果

   READ: bw=112MiB/s (118MB/s), 112MiB/s-112MiB/s (118MB/s-118MB/s), io=1124MiB (1179MB), run=10002-10002msec
  WRITE: bw=290MiB/s (304MB/s), 290MiB/s-290MiB/s (304MB/s-304MB/s), io=2902MiB (3043MB), run=10001-10001msec

   READ: bw=134KiB/s (137kB/s), 134KiB/s-134KiB/s (137kB/s-137kB/s), io=1340KiB (1372kB), run=10001-10001msec
  WRITE: bw=11.1MiB/s (11.7MB/s), 11.1MiB/s-11.1MiB/s (11.7MB/s-11.7MB/s), io=111MiB (117MB), run=10001-10001msec

   READ: bw=168KiB/s (172kB/s), 168KiB/s-168KiB/s (172kB/s-172kB/s), io=1684KiB (1724kB), run=10002-10002msec
  WRITE: bw=11.4MiB/s (11.9MB/s), 11.4MiB/s-11.4MiB/s (11.9MB/s-11.9MB/s), io=114MiB (119MB), run=10001-10001msec

結果まとめ

Readがext4の方が早いのはzfsのキャッシュが効いてないから?

ext4 zfs
Seq-Read 183MB/s 118MB/s
Seq-Write 161MB/s 304MB/s
Rand-Read-4K 606kB/s 137kB/s
Rand-Write-4K 1485kB/s 11.7MB/s
Rand-Read-4K-QD32 1541kB/s 172kB/s
Rand-Write-4K-QD32 1567kB/s 11.9MB/s

Debian9へdockerリポジトリを追加し最新のDocker環境を構築する

dockerのインストール

Get Docker CE for Debian | Docker Documentationのとおり、リポジトリを追加してインストールする。

$ sudo apt update
$ sudo apt -y install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg2 \
    software-properties-common

$ curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
OK

$ sudo apt-key fingerprint 0EBFCD88
pub   rsa4096 2017-02-22 [SCEA]
      9DC8 5822 9FC7 DD38 854A  E2D8 8D81 803C 0EBF CD88
uid           [ unknown] Docker Release (CE deb) <docker@docker.com>
sub   rsa4096 2017-02-22 [S]

$ sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/debian \
   $(lsb_release -cs) \
   stable"

$ sudo apt update
$ sudo apt -y install docker-ce docker-ce-cli containerd.io

docker-composeのインストール

リポジトリがなさそうなので直接インストールする。

$ sudo curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose

いろいろと設定

ユーザをdockerグループに追加し、dockerデーモンを自動起動するように設定する。

$ sudo gpasswd -a vild124 docker
Adding user vild124 to group docker

$ sudo systemctl enable docker
$ sudo reboot