適切なLoadAverage値を調査した件

# はじめに
保守担当になっているレガシーサーバで、
LoadAverage（ロードアベレージ）が20~30近く示していたので、上がりすぎじゃない？
どうなっているの？調べるか。
いやそもそも適切なLoadAverage値ってどのくらいなの？みたいな疑問があったので調べてみました。

# 内容


下記の参考サイトを参考に、物理的なCPU数や1個の物理CPUに対するコア数、仮想CPUコア数などを見てみて、
大体の適切なLoadAverage値を出してみます。


```md:参考
- 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%※であることを考えて、

```md:参考
- 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が上がっても、サービスが継続できていれば（スループットとかレイテンシーが適切に維持されていれば）問題ないともいえる。
まずはそっち（ユーザに直接影響する指標）を監視する方が良い
```

とお話を聞いた。

入門監視にも書いている話題らしいので、チェックしなければ。

https://www.amazon.co.jp/%E5%85%A5%E9%96%80-%E7%9B%A3%E8%A6%96-%E2%80%95%E3%83%A2%E3%83%80%E3%83%B3%E3%81%AA%E3%83%A2%E3%83%8B%E3%82%BF%E3%83%AA%E3%83%B3%E3%82%B0%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AE%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3-Mike-Julian/dp/4873118646



# まとめ

下記の前提で考えると

```
- 物理CPU数が1個
- 1個の物理CPUに対するコア数が1個
- Hyper-Threadingの効果が20%
```

```
1個(物理的なCPU数) × 1個(1個の物理CPUに対するコア数) × 20%(Hyper-Threadingの効果)
= 1.2
```

が適切なLoadAverageである。
しかし、LoadAverage値が高くても、他の状況を監視しながら見ることが大切とのこと。


# 参考

```md
- 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
```