1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Mac上でskaffoldのCPU使用率が高くなる問題の緩和方法

Last updated at Posted at 2021-06-21

(追記)

skaffold のCPU使用率が高くなるのに困って記事を書いたのですが、改めてソース等を調べてみたところskaffoldにバグがあると分かりました・・・ということでPRを作成して送ってみたところ無事にmergeされました。

skaffold 1.28.0 以降には修正が含まれているので、同じ問題で困っている方は更新してみると解消されるかもしれません。

この記事は不要になったのですが、オプションの説明も間違っているわけではないので記事自体は残しておきます。

対象としている問題

Mac上で skaffolddev モードで起動すると CPU 使用率が非常に高く(CPU使用率100%に)なる場合があります。

skaffold の issue を調べてみたところ High CPU usage on Mac OS X という関係しそうな issue がありました。このissueによると、ファイルが多数ある場合に変更検知の処理で重くなっているようです。またissueはcloseされているものの、重くなること自体は解消されていないようです。

ということで変更検知の対象となるファイル数を減らせれば良い・・・のですが、そうもいかない状況で少しでもCPU使用率を減らす方法を記載しています。ちなみにいずれの方法もデメリットがあるためCPU使用率とのトレードオフとなります。

対象イメージの制限

--watch-image オプションに artifact 名を記載すると、変更検知の対象となるイメージ(artifact)を限定できます。

skaffold dev --watch-image=artifact1

複数のイメージが含まれる場合は、このオプションで対象を絞ることでCPU使用率をある程度抑えることができます。ただ当然ながら指定しなかったイメージは変更検知の対象外となるので利便性が低下します。

変更検知方法の変更

変更検知方法は --trigger オプションで指定することができ、デフォルトでは notify という方法が選択されています。それ以外に pollingmanual があり、これらを利用することでCPU使用率を低減することができます。

polling

polling を指定すると変更検知を定期実行で行うようになります。実行間隔は --watch-poll-interval で指定可能で、デフォルトでは1000ミリ秒となります。

skaffold dev --trigger=polling --watch-poll-interval=3000

CPU使用率は実行間隔を大きくするほど改善されるのですが、変更検知までの時間も長くなるので利便性が低下します。ちなみに私が試した環境ではデフォルトの1000ミリ秒ではまったく改善せず 3000ミリ秒でやっとCPU使用率が半分くらいになる感じです。

manual

manual を指定すると文字通り自動での変更検知を行わなくなります。変更を検知させたい時はコンソールで Enter を入力して手動実行します。

skaffold dev --trigger=manual

CPU使用率は劇的に低下するのですが、手動で更新する必要があるため利便性も劇的に低下します。

1
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?