パスワードを忘れた? アカウント作成
13674459 journal
モニター

mishimaの日記: cgroupのIO帯域制限と性能監視 2

日記 by mishima

弊社のサーバ運用ポリシーに変更があり、全Linuxサーバでウィルススキャンソフトによる全ファイルのフルスキャンが基本となった。
そのこと自体は問題ないのだけど(rootkit検出じゃなくてウィルススキャン、というところにやる意味あんのかという気がしないのではないけど、自分の管理している部分はともかくとして他のサーバ管理者の水準が怪しい気もするのでやらないよりはやったほうがいいと思う)、ふつうにスキャンを実施すると30分程度は負荷の高い状況になる。

ウィルススキャンというのは基本的に大量のIOを発行する処理で、放っておくとディスクのIO帯域を使い切ってしまう。その間に本来のサーバの業務が発生し、それに関連するディスクIOが発行された場合、業務側にそれなりの遅延が発生する。

これを避けるため、cgroup によるIO帯域の制限を入れてみた。この方法だとウィルススキャン中でも業務側の遅延があまり悪化せず、いい方法だと思ったのだけれど…欠点が一つあって、見かけ上CPU負荷が100%になってしまう。

cgroup による IO 帯域制限に引っかかったプロセスはIO待ち状態になるのだけど、CPU統計情報では「IO待ち状態のプロセスが存在している=IO待ち時間」としてカウントされてしまう。そのため、実際にはディスクIOの帯域に余裕があるにもかかわらずCPU使用率100%、うちIO待ち時間が95%…みたいな状態になる。気が付いてみると当たり前といえば当たり前なんだけど、これがよくあるCPU性能監視と相性が悪く、一般的な監視ツールの設定だけでは本当の高負荷との区別が難しい。

何かいい方法がないものだろうか。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by Anonymous Coward on 2018年08月09日 23時08分 (#3458938)

    CPU使用率の見方を間違っていますよ

    IO待ちは,IOの負荷であって,CPU負荷ではありません
    CPU負荷を調べたいなら,CPU待ちのプロセス数をカウントしてください

typodupeerror

UNIXはただ死んだだけでなく、本当にひどい臭いを放ち始めている -- あるソフトウェアエンジニア

読み込み中...