メモリの使用状況

# メモリの使用、空き状況を調べる
```
root@***********:***********# free
              total        used        free      shared  buff/cache   available
Mem:        3907956      859316     1674624        5556     1374016     2798072
Swap:       1190340           0     1190340
```
### total 
システムに搭載されている```全メモリの量```。
### free
```見かけ上の空きメモリ```
### buff/cashe
```バッファキャッシュ、およびページキャッシュが利用するメモリ```。システムの空きメモリが減少してきたら、カーネルによって解放される。
### available
```実質的な空きメモリ```。freeフィールドの値に、空きメモリが足りなくなってきたら解放できるカーネル内メモリ領域のサイズを足したもの
### used
```システムが使用中のメモリ(total-free)からbuff/cacheを引いたもの```。

#### 気づき
参考書の図を見るとavailableはカーネルが使用中の開放可能なメモリ領域とfreeのメモリ領域を足したものだった。
メモリの使用状況がわかるな。

# used
usedの値は、プロセスが使うメモリとカーネルが使うメモリの両方を含みます。
...
usedの値は、プロセスのメモリ使用量に従って増えます。その一方で、プロセスが終了すると、カーネルは当該プロセスのメモリをすべて開放します
```
root@***********:***********# ./memuse.py 
メモリ獲得前のシステム全体のメモリ使用量を表示します。
              total        used        free      shared  buff/cache   available
Mem:        3907956      859296     1674372        5560     1374288     2798064
Swap:       1190340           0     1190340
メモリ獲得後のシステム全体のメモリ空き容量を表示します。
              total        used        free      shared  buff/cache   available
Mem:        3907956      897852     1635816        5560     1374288     2759508
Swap:       1190340           0     1190340
root@***********:***********# free
              total        used        free      shared  buff/cache   available
Mem:        3907956      887032     1646408        5548     1374516     2770336
Swap:       1190340           0     1190340
root@***********:***********# free
              total        used        free      shared  buff/cache   available
Mem:        3907956      887024     1646408        5548     1374524     2770344
Swap:       1190340           0     1190340
root@***********:***********# ps aux
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root           1  0.2  0.2 102116 11632 ?        Ss   11:22   0:01 /sbin/init s
...
root        4022  0.0  0.0   9928  3236 pts/0    R+   11:30   0:00 ps aux
root@***********:***********# free
              total        used        free      shared  buff/cache   available
Mem:        3907956      855240     1678164        5544     1374552     2802204
Swap:       1190340           0     1190340
```
### 気づき
あまり変わっていない。けどその後freeをすると使用中のメモリがプロセス開始前と同じぐらいになった。

# buff/cache
```ページキャッシュおよびバッファキャッシュに使われるメモリの量```の値を表します。
...
ページキャッシュとバッファキャッシュは```アクセス速度が遅いストレージデバイス上にあるファイルのデータをアクセス速度を上げる```ためのカーネル機能です。ここでは「ストレージデバイス上にあるファイルのデータを読み出すと、メモリ上に```データをキャッシュしておく（貯めておく）```」ということを覚えていただければ結構です。
```
root@***********:***********# ./buff-cache.sh 
ファイル作成前のシステム全体のメモリ使用量を表示します。
              total        used        free      shared  buff/cache   available
Mem:        3907956      874492     1657316        5556     1376148     2782892
Swap:       1190340           0     1190340
1GBのファイルを新規作成します。これによってカーネルはメモリ上に1GBのページキャッシュ領域を獲得します。
1024+0 レコード入力
1024+0 レコード出力
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 3.22534 s, 333 MB/s
ページキャッシュ獲得後のシステム全体のメモリ使用量を表示します。
              total        used        free      shared  buff/cache   available
Mem:        3907956      878688      575268        5556     2454000     2764092
Swap:       1190340           0     1190340
ファイル削除後、つまりページキャッシュ削除後のシステム全体のメモリ使用量を表示します。
              total        used        free      shared  buff/cache   available
Mem:        3907956      947760     1583452        5556     1376744     2709384
Swap:       1190340           0     1190340
```
### 気づき
1GBのファイルを作成したらキャッシュの方に1GB増えた

# sar -s
```メモリに関する統計情報```を得られます。
...
freeコマンドに比べると1行に情報がまとまっているので```継続的に情報を取得```するような時に使い勝手がいいです。
```
root@***********:***********# sar -r 1 5
Linux 5.15.0-107-generic (linuxstructure2) 	2024年05月21日 	_x86_64_	(1 CPU)

11時41分22秒 kbmemfree   kbavail kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit  kbactive   kbinact   kbdirty
11時41分23秒   1614732   2741400    850628     21.77     47892   1269096   4206752     82.51    516328   1501312       288
11時41分24秒   1614732   2741408    850620     21.77     47892   1269104   4206764     82.51    516336   1501364       304
11時41分25秒   1614732   2741408    850620     21.77     47892   1269104   4206764     82.51    516336   1501364       304
11時41分26秒   1614732   2741408    850620     21.77     47892   1269104   4206764     82.51    516336   1501364       304
11時41分27秒   1614732   2741408    850620     21.77     47892   1269104   4206764     82.51    516336   1501364       304
平均値:    1614732   2741406    850622     21.77     47892   1269102   4206762     82.51    516334   1501354       301
```
### 気づき
連続的なメモリの使用状況を見ることができる
# 出典
https://gihyo.jp/book/2022/978-4-297-13148-7
# 感想
メモリの状況を見ることができるから嬉しい。