LoginSignup
11
9

More than 5 years have passed since last update.

impalaのメモリ管理

Posted at

現象

物理メモリ1台16GBの環境でメモリの割り当てをデフォルトの無制限(-1)にしていたが、すぐに食い潰してswapに落ちてしまうためパフォーマンスが劣化しているように見える。

impalaに割り当てるリソース管理箇所

プロパティ 設定名 デフォルト 説明
impala deamon memory limit mem_limit null
CPU共有 cpu.shares 1024
Cgroup I/O weight blkio.weight 500
Cgroup Memory Soft limit memory.soft_limit_in_bytes -1MB
メモリのハード制限 memory.limit_in_bytes -1MB

Cgroupとは?

cgroup(control group)

Control Group、Linux Containerの紹介

Control Groups (cgroups)

cgroupsとしばらく一緒に過ごしてみた

Performance Prediction and Optimization using Linux/cgroups

Redhat カスタマーポータル:3.7. memory

memory.limit_in_bytes

ユーザーメモリーの最大値 (ファイルキャッシュを含む) を設定します。単位が指定されていない場合、その値はバイト単位と解釈されますが、より大きな単位を示すサフィックスを使用することが可能です (キロバイトには k または K、メガバイトには m または M、ギガバイトには g または G)。
root cgroup を制限するのには、memory.limit_in_bytes は使用できません。値を適用できるのは、下位階層のグループに対してのみです。
memory.limit_in_bytes に -1 と書き込み、現行の制限値を削除します。

設定

ソフトリミットを設定することで、設定値内でなるべくうまく物理メモリを使ってくれて、それでもうまくいかない時はハードリミットで制限される。ハードリミットを超えてメモリ領域が必要な場合はswapに落ちるか、oom_killer等で沈静化されると解釈

そのため、ソフトリミットのmemory.soft_limit_in_bytesとハードリミットのmemory.limit_in_bytesを設定してみた。

プロパティ
物理メモリ 24GB
memory.soft_limit_in_bytes 18GB
memory.limit_in_bytes 19GB

※上記は実験値で特に推奨値なわけではありません

結果

memory.soft_limit_in_bytesを設定することで(少し見難いが)activeのメモリ使用量部分が18GB付近を上限に調整するようになってくれた。

sbit20_1.png

まとめ

impalaの推奨メモリが128GBとのことだが、なかなか用意するのも大変なので、安定運用や一時凌ぎには設定をしておいたほうが良い気がします。

11
9
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
11
9