テストスイートには、かなり多くのメモリ(約11GB)を消費する複数のテストがあります。開発者コンピュータでこれらのテストを実行することは通常問題ではありませんが、CIコンテキストでは、利用可能なRAMが少ないコンピュータでテストスイートが実行されることがよくあります。
CI ホストにメモリが不足すると、テスト スイートは OOMkiller によって停止され、失敗します。
完全なテストバーが完全に失敗するのではなく、ホストの特性に基づいて実行されるテストを制限したいと思います。
アイデアは、valgrindのmassif
ツールを使用して、特定のテストが消費するメモリ量のおおよその値を取得し、ホストで使用可能なメモリ量を確認し、それを超えるテストをスキップすることです。
しかし、「どのくらいのメモリが利用可能か」を見つけることは決してマイナーな作業ではないという直感があります。
- CIがどのランチャーで実行されるかを制御することはできません。使用可能なRAM容量が異なる複数のランチャーがある可能性があります。
- 走っている人の場合、私は
root
制御力がほとんどないか、まったくありません。OOMキラーそれ自体 - ランチャーは、任意のクラウドプロバイダー(この場合、OOMkillerを制御する人は誰ですか?コンテナ?ホスト?)で実行されているドッカーコンテナである可能性が高いです。
ただ解析するのは/proc/meminfo
ちょっと無邪気に見えます。
- では、コンテナ内に空きメモリが提供されますか?
MemAvailable
良いオプションだと思いますが、32 GB RAM デスクトップでも、現在使用可能なメモリは 10 GB しか表示されず、リソースを消費するプロセスを実行できます。11GBメモリ(afactはMemAvailable
利用可能なスワップ領域を無視する)
明らかに、システムは動的であり、テストの開始時に使用可能なメモリが十分である可能性がありますが、テストの実行中に他のプロセスでメモリを消費する可能性があるため、まだメモリが不足する可能性があります。
だから:この問題をどのように解決しますか? OOMkillerのメモリ制限を照会する方法はありますか?