CentOS7でBitcoindやMonacoindがディスクI/Oやメモリ、CPUを食いつぶさないようにするための設定 その1

CentOS7でBitcoindやMonacoindを起動すると、ディスクI/Oやメモリ、CPUを根こそぎ食われてサーバーが激重になる場合があります。このページでは、そのような事態を防ぐための設定について解説します。

もくじ

  • 使用するもの・前提条件
  • ディスクI/Oを食いつぶさないようにするための設定
  • メモリを食いつぶさないようにするための設定
  • CPUを食いつぶさないようにするための設定(別記事)

使用するもの・前提条件

このページでは、Cgroupsを使用してディスクI/O及びメモリ、CPU使用率の制御を行います。Cgroupsを利用したリソース制御のやり方はこちらでも解説していますが、このページで解説している操作を行う前に予め以下のコマンドで必要なものをインストールし、設定を済ませましょう。 [VIM] sudo yum install libcgroup libcgroup-tools sudo systemctl enable cgconfig sudo systemctl start cgconfig sudo systemctl enable cgred sudo systemctl start cgred [/VIM]

また、Monacoind/Bitcoindを稼働させるユーザーが存在していることを前提とします(リソース制御をユーザー単位で行うため)。Monacoind/Bitcoind以外のソフトを稼働させるユーザー・管理用ユーザーとMonacoind/Bitcoindを稼働させるユーザーは別々にしてください。なお、以降の解説ではMonacoind/Bitcoindを稼働させるユーザーのユーザー名をhogeとします。

ディスクI/Oを食いつぶさないようにするための設定

まずはディスクI/Oの設定を行い、Monacoind/Bitcoindがストレージのデータを読み書きする速度を制限します。こちらを参考にMonacoind/Bitcoindのデータが存在する論理ボリュームのデバイス番号(メジャー番号、マイナー番号)を把握した上で、以下のコマンドで設定ファイルを編集します。 [VIM] sudo vim /etc/cgconfig.conf #以下の内容を追記する group monacoind { perm{ task { uid=”hoge”; gid=”hoge”; } admin { uid=”hoge”; gid=”hoge”; } } blkio { # 8:0 はMonacoind/Bitcoindのデータが存在する論理ボリュームのデバイス番号に置き換えること #読み取り・書き込み速度の上限値はバイト毎秒単位(1KB = 1024Byte) #この例では読み取り速度20MB/sまで、書き込み速度10MB/sに規制 blkio.throttle.read_bps_device=”8:0 20971520″; blkio.throttle.write_bps_device=”8:0 10485760″; } } [/VIM] 読み取り・書き込み速度の上限値は、各自の環境に合わせて適切な値をセットしましょう。あまり厳しくするといつまで経ってもブロックチェーンの同期が終わらなくなる可能性もあるので、そのへんも考慮して設定してください。…蛇足だとは思いますが、「blkio.throttle.read_bps_device」にセットするのが読み取り速度の上限値で、「blkio.throttle.write_bps_device」にセットするのが書き込み速度の上限値です。

/etc/cgconfig.confを編集したら、/etc/cgrules.confも編集します。 [VIM] sudo vim /etc/cgrules.conf #以下の内容を追記 hoge blkio monacoind/ [/VIM]

両ファイルの編集が完了したら、以下のコマンドで設定を反映させましょう。 [VIM] sudo systemctl restart cgconfig sudo systemctl restart cgred [/VIM]

メモリを食いつぶさないようにするための設定

ストレージへのアクセス速度規制も必要ですが、特にBitcoindはメモリ喰いなのでメモリ使用量についても上限値を設定する必要があります。再びroot権限で/etc/cgconfig.confを開いて設定を追記します。 [VIM] sudo vim /etc/cgconfig.conf #ここから下は書き込み済み group monacoind { perm{ task { uid=”hoge”; gid=”hoge”; } admin { uid=”hoge”; gid=”hoge”; } } blkio { blkio.throttle.read_bps_device=”8:0 20971520″; blkio.throttle.write_bps_device=”8:0 10485760″; } #ここから上は書き込み済み #ここから下を追記 memory { memory.limit_in_bytes=”512M”; memory.memsw.limit_in_bytes=”512M”; } #ここから上を追記 } [/VIM] 「memory.limit_in_bytes」では、物理メモリ使用量の上限値を設定します。特に単位を付けずに書くとバイト単位で解釈されますが、末尾にK/M/Gと書くとそれぞれキロバイト、メガバイト、ギガバイトとして解釈されます。上の例では512メガバイトを上限値にしています。
「memory.memsw.limit_in_bytes」では、物理メモリとスワップの使用量合計の上限を設定します。書式は「memory.limit_in_bytes」と同様です。スワップ領域に手を付けたくない場合は「memory.limit_in_bytes」と同じ値をセットすればOKです。

/etc/cgconfig.confを編集したら、/etc/cgrules.confも編集します。2つ以上のサブシステムを利用する場合はカンマで区切って追記します。 [VIM] sudo vim /etc/cgrules.conf hoge blkio,memory monacoind/ [/VIM]

両ファイルの編集が完了したら、以下のコマンドで設定を反映させましょう。 [VIM] sudo systemctl restart cgconfig sudo systemctl restart cgred [/VIM]

このブログを応援する・寄付する

当ブログでは暗号通貨による寄付を募っております。

モナゲボタン モナゲボタン

Bitcoin:

Monacoin:

Litecoin: