LoginSignup
0
0

dockerコンテナのメモリ、CPU使用状況

Last updated at Posted at 2023-06-02

(メモリ不足には、メインメモリが不足してswapも不足している場合もある)

yolo v8のコンテナを動かしていたらshmメモリが足りないと言われたので、回り道しつつ解決した。

以下のコマンドでメモリとCPUの使用状況をリアルタイムで表示
これは、コンテナ外の、通常の端末で実行。

docker container stats

image.png

以降は、Dockerコンテナ内で実行する。
ストレスをかけた場合に、数値が上昇することを確認

stressコマンドのインストールと利用

sudo apt install stress

メモリを試す

メモリを64G使ってみる。
stress -m 1 --vm-bytes 64G --vm-hang 0 -v

image.png

120Gでも大丈夫だった。
stress -m 1 --vm-bytes 120G --vm-hang 0 -v

CPUを試す

あらかじめ、CPUのコア数を調べる

cat /proc/cpuinfo | grep processor | wc -l

stress -c 4
image.png

stress -c 32
image.png

以上から、今回作成したコンテナは母艦のメモリとCPUをいっぱいまで使えそうということが分かった。

shmメモリ不足の対応

yolo v8のコンテナを動かしていたら以下のようなエラーが出る。上記のメモリは十分なのに。なぜ?どうやら、メモリと言っているものと、shmと言っているメモリは別物なのか。
shmメモリのサイズはデフォルトで64Mとなっているらしく、このコンテナでも
df -h で確認できた。
image.png

Docker公式サイトでshmメモリサイズをdocker-compose.ymlファイルでの設定方法を見ると以下のようであるが、機能しない。
https://docs.docker.jp/compose/compose-file/compose-file-v3.html#shm-size
image.png

公式サイトのインデントが間違っているようで、以下のようにbuildと同じレベルに合わせたら、うまく行った。

image.png
image.png

これまで、tensorflowの学習などは特に変更せずに使えていたので不思議。

なお、コマンドラインからの起動オプションはネットに記事多数。

swapメモリを増やす方法

DL学習時にkillメッセージが出て止まってしまうことがある。

先ずは、Swapファイルの作成と設定

gnome-system-monitor #リソースの使用状況をGUIで確認

sudo swapon --show #スワップファイル状況表示
sudo fallocate -l 64G /swapfile3 #スワップファイルの作成

sudo chmod 600 /swapfile3 #アクセス権の変更
sudo mkswap /swapfile3 #作成したファイルをスワップとして設定
sudo swapon /swapfile3 #設定後に有効化が必用

sudo swapon --show #再度確認し、スワップとして認識されること

次に永続化(再起動しても設定が残るように)

エディタを管理者権限で起動(/etc/fstabの編集)。例えば
sudo gedit /etc/fstab
最終行に以下を加える
/swapfile3 none swap sw 0 0

以上。

swapを消したり、消してサイズを変更して再作成するとき

sudo swapoff /swapfile3
sudo rm /swapfile3
さらに、/etc/fstabの編集を元に戻す

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0