負荷とは何でしょう?
“負荷” と一般に言われているものは何を意味しているのでしょうか?Linux ではよくロードアベレージと見られています。ロードアベレージは「プロセスがどれだけ待たされた状態にあるか」とよく定義されます。
なぜこのような指標を用いるかというと例えば、どれだけ CPU に負荷がかかっていない状態であっても処理性能の悪いディスク I/O 等がネックになってシステム全体の処理能力が落ちることが多くみられます。
このような場合に「じゃあ、今どれだけシステムに負荷がかかっているの?」というのを表すのがスーパーのレジで例えた混雑状況でしめしています。これがロードアベレージの考え方と言えます。
Unix や Linux 系 OS ではこれらは簡単に確認することができます。これには top コマンドや /proc/loadavg を cat して確認することができます。
ただ、気をつけなければならないのはロードアベレージが分かっても結局は「どの処理・どのプロセス・どのツールが原因で負荷がかかっているのか」を見抜くことができないことです。これはロードアベレージが総合的な指標でしかない為となります。
- A プロセスは CPU に負荷をかけている
- B プロセスはメモリを使いすぎてスワップが発生している
- C プロセスはディスク I/O に負荷をかけている
等、様々な原因がありますがこれらは個々のプロセスを自ら調査し、負荷が高くなっている瞬間に何の処理が動いているのかを見極める必要があります。これらのことが判明して初めて負荷の高い原因を見抜くことができるでしょう。