はじめに
保守担当になっているレガシーサーバで、
LoadAverage(ロードアベレージ)が20~30近く示していたので、上がりすぎじゃない?
どうなっているの?調べるか。
いやそもそも適切なLoadAverage値ってどのくらいなの?みたいな疑問があったので調べてみました。
内容
下記の参考サイトを参考に、物理的なCPU数や1個の物理CPUに対するコア数、仮想CPUコア数などを見てみて、
大体の適切なLoadAverage値を出してみます。
- http://tamatt.blog.fc2.com/blog-entry-3.html
- https://tech.ga-tech.co.jp/entry/2019/11/server-load-beginner#:~:text=%E3%83%AD%E3%83%BC%E3%83%89%E3%82%A2%E3%83%99%E3%83%AC%E3%83%BC%E3%82%B8%E3%81%AE%E5%9F%BA%E6%BA%96%E5%80%A4&text=%E3%83%AD%E3%83%BC%E3%83%89%E3%82%A2%E3%83%99%E3%83%AC%E3%83%BC%E3%82%B8%E3%81%8C%E9%81%A9%E5%88%87%E3%81%8B,%E3%81%A6%E3%81%84%E3%82%8B%E7%8A%B6%E6%85%8B%E3%81%A7%E3%81%99%E3%81%AD%E3%80%82&text=%E3%83%AD%E3%83%BC%E3%83%89%E3%82%A2%E3%83%99%E3%83%AC%E3%83%BC%E3%82%B8%E3%81%AF%E3%80%81%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E5%85%A8%E4%BD%93,%E3%81%97%E3%81%8B%E8%A8%88%E7%AE%97%E3%81%95%E3%82%8C%E3%81%BE%E3%81%9B%E3%82%93%E3%80%82
- https://www.techscore.com/blog/2017/12/08/how_is_load_average_calculated/
適切なLoadAverageを調べる
下記の前提で考えると
- 物理CPU数が1個
- 1個の物理CPUに対するコア数が1個
- Hyper-Threadingの効果が20%
1個(物理的なCPU数) × 1個(1個の物理CPUに対するコア数) × 20%(Hyper-Threadingの効果)
= 1.2
この数字が適切なLoadAverage値となる。
上記をもう少し深堀していく。
物理CPU数を調べる
grep "physical id" /proc/cpuinfo | sort | uniq
physical id : 0
physical id : 1
この結果から、
物理CPU数が2個だとわかる。
コア数を調べる
[ec2-user@ ~]$ grep "cpu cores" /proc/cpuinfo
cpu cores : 4
<以降も続く>
この結果から、
1個の物理CPUに対するコア数は、4個だということがわかる。
Amazon EC2 インスタンスタイプ別の物理コア数でも同様の内容でした。
https://aws.amazon.com/jp/ec2/physicalcores/
仮想CPUコア数を調べる
[ec2-user@ ~]$ grep "siblings" /proc/cpuinfo
siblings : 8
<以降も続く>
この結果から、
1個の物理CPUに対する仮想CPUコア数は、8個だということがわかる。
1個の物理CPUに対して4個のコアを持ち、Hyper-Threadingにより、
仮想CPUコア数も2倍の8個になっている。
上記情報を踏まえて
Hyper-Threadingの効果が20~30%※であることを考えて、
- https://moroto1122.hatenadiary.org/entry/20100917/1284719047
- https://e-words.jp/w/%E3%83%8F%E3%82%A4%E3%83%91%E3%83%BC%E3%82%B9%E3%83%AC%E3%83%83%E3%83%87%E3%82%A3%E3%83%B3%E3%82%B0.html#:~:text=%E3%83%8F%E3%82%A4%E3%83%91%E3%83%BC%E3%82%B9%E3%83%AC%E3%83%83%E3%83%87%E3%82%A3%E3%83%B3%E3%82%B0%E3%81%A8%E3%81%AF%E3%80%81%E7%B1%B3,%E4%BA%8C%E3%81%A4%E3%81%AB%E8%A6%8B%E3%81%9B%E3%81%8B%E3%81%91%E3%82%8B%E6%8A%80%E8%A1%93%E3%80%82
2個(物理CPU) × 4個(物理CPU Core) × 1.2(仮想CPU Core) = 9.6
が最適なLoadAverage値らしい。
ちなみに
詳しい方にお聞きすると
LoadAverageが上がっても、サービスが継続できていれば(スループットとかレイテンシーが適切に維持されていれば)問題ないともいえる。
まずはそっち(ユーザに直接影響する指標)を監視する方が良い
とお話を聞いた。
入門監視にも書いている話題らしいので、チェックしなければ。
まとめ
下記の前提で考えると
- 物理CPU数が1個
- 1個の物理CPUに対するコア数が1個
- Hyper-Threadingの効果が20%
1個(物理的なCPU数) × 1個(1個の物理CPUに対するコア数) × 20%(Hyper-Threadingの効果)
= 1.2
が適切なLoadAverageである。
しかし、LoadAverage値が高くても、他の状況を監視しながら見ることが大切とのこと。
参考
- https://tech.ga-tech.co.jp/entry/2019/11/server-load-beginner#:~:text=%E3%83%AD%E3%83%BC%E3%83%89%E3%82%A2%E3%83%99%E3%83%AC%E3%83%BC%E3%82%B8%E3%81%AE%E5%9F%BA%E6%BA%96%E5%80%A4&text=%E3%83%AD%E3%83%BC%E3%83%89%E3%82%A2%E3%83%99%E3%83%AC%E3%83%BC%E3%82%B8%E3%81%8C%E9%81%A9%E5%88%87%E3%81%8B,%E3%81%A6%E3%81%84%E3%82%8B%E7%8A%B6%E6%85%8B%E3%81%A7%E3%81%99%E3%81%AD%E3%80%82&text=%E3%83%AD%E3%83%BC%E3%83%89%E3%82%A2%E3%83%99%E3%83%AC%E3%83%BC%E3%82%B8%E3%81%AF%E3%80%81%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E5%85%A8%E4%BD%93,%E3%81%97%E3%81%8B%E8%A8%88%E7%AE%97%E3%81%95%E3%82%8C%E3%81%BE%E3%81%9B%E3%82%93%E3%80%82
- https://www.techscore.com/blog/2017/12/08/how_is_load_average_calculated/
- https://moroto1122.hatenadiary.org/entry/20100917/1284719047
- http://edamame-webdev-log.blogspot.com/2015/01/blog-post_2.html
- https://e-words.jp/w/%E3%83%8F%E3%82%A4%E3%83%91%E3%83%BC%E3%82%B9%E3%83%AC%E3%83%83%E3%83%87%E3%82%A3%E3%83%B3%E3%82%B0.html#:~:text=%E3%83%8F%E3%82%A4%E3%83%91%E3%83%BC%E3%82%B9%E3%83%AC%E3%83%83%E3%83%87%E3%82%A3%E3%83%B3%E3%82%B0%E3%81%A8%E3%81%AF%E3%80%81%E7%B1%B3,%E4%BA%8C%E3%81%A4%E3%81%AB%E8%A6%8B%E3%81%9B%E3%81%8B%E3%81%91%E3%82%8B%E6%8A%80%E8%A1%93%E3%80%82