docker.hyperkitで圧迫しているメモリを削減したい

Docker

最近、作業していると異常にファンの音が大きくなっていたり、メモリをたくさん消費していますと警告が出るようになりました。

アクティビティモニタでメモリ使用量を確認したところ、なんとdocker.hyperkitだけで7.16GB使用していることがわかりました。

自分のPCはメモリ8GBしかないので、改善しないとかなりまずいです。そこで、本記事ではdocker.hyperkitで使用しているメモリ使用量を削減するため、色々対策を取ってみて、効果があるのか確認してみます!

docker.hyperkitのメモリ使用量を削減してみた

dockerを使っていないときはアプリを落とす

dockerは立ち上げているだけで、設定したメモリを消費してしまいます。

dockerを使用していない場合はアプリを落としましょう!(ただし、アプリを落としてもpidが残っていてメモリを消費し続ける場合があります。その場合は再起動をしてpidをしっかりと切りましょう)

dockerは使いたいがなるべくメモリを抑えたい場合は下記を試してください!

パソコンの再起動

パソコンを再起動してから立ち上げるとメモリが大幅に削減できる可能性があります。

PCを再起動することでキャッシュされていたメモリが解放されるため、メモリ使用量の削減がみこめます。

今回7.16GB→4.54GBと大幅に削減することができています。dockerの使用メモリが大きくなっている場合はまずは再起動を検討するのがいいと思います。

ただしスワップ使用領域が使用されているためもう少しメモリを抑える方法を調査してみます。

docker imageの削減

dockerイメージは作成するたびにどんどん増えていきます。そこで、下記コマンドで使用していないdockerイメージを削除することができます。

docker system prune

ちなみに、docker system pruneで削除されるのは以下の項目になります。

  • 停止しているコンテナ
  • 使用されていないネットワーク
  • 使用されていないイメージ
  • buildキャッシュ

これでメモリ使用量を削減できると思いましたが、削減することができません(むしろちょっと増えた?)でした。

上記のコマンドで行ったことは、メモリ対して削除する作業ではなくディスク(ストレージ)の削除をしているためのようでした。

dockerリソースのメモリ割り当ての変更

dockerで割り当てるメモリを変更します。

変更方法は、右上の設定ボタン(sign inの隣)をクリックした後、Resourcesをクリックすると、設定画面に移ります。このとき、Memoryを4GB→2GBに変更して、Apply & Restartを実施します。

その結果…

dockerで使用しているメモリを4.77→2.35GBまで削減することができました!

dockerのメモリは、イメージやコンテナが立ち上がっているか…というよりは、dockerDesktopを立ち上げた時点で割り当てられるメモリが決まっていて、立ち上げた時点その分のメモリを使用するということがわかりました!

docker.hyperkitのメモリに関する調査まとめ

dockerのメモリ削減問題を調査したことで、dockerについてまた少し詳しくなれました。以下、今回調べたことの要点です。

  • dockerは割り当てするメモリを決めることができ、dockerを立ち上げた時点で指定したメモリを消費する。
  • ただし、キャッシュされたメモリは上乗せされている場合があり、指定した以上にメモリを消費している場合は、再起動等でキャッシュ削除することは効果的。
  • ホストPCでメモリを消費する作業を行う場合はdockerの割り当てメモリを少なくするか、docker自体を落とした状態で作業するのが望ましい。

dockerの割り当てメモリを少なくすると、確かにホストPCで使用できるメモリは増えるため、ホスト PCでの作業は快適になりますが、もちろんその分dockerに割り当てられるメモリが少なくなるため、dockerの性能は落ちます(docker-compose upが遅くなるなど)。

やっぱり理想は、dockerの割り当てメモリはなるべく大きくして、メモリ消費量が多いソフトを起動するときにはdockerを落とすのが理想的です。仮に、dockerを立ち合げながらメモリ消費量のおおいソフトを起動したい場合は…PCの買い替えをお勧めします!

コメント

タイトルとURLをコピーしました