Linuxでメモリ残容量を意図的に減らす
- テストの一環でメモリの残容量を減らして別システムにアラームが飛ぶかを確認していたが当初考えていた手順ではうまく動かなかったのでメモ
- 環境
# cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)
最初に考えていた手順
# /dev/null < $(yes)
# free -h -s 1
実際に返ってきた結果
-bash: xrealloc: cannot allocate 18446744071562067968 bytes (1945600 bytes allocated)
- メモリの残容量が1.8GBあたりでとまってしまう → Why?
別の方法を試す
stress --vm 2 --vm-bytes 3G --timeout 2m
- こうなった。orz
-bash: stress: command not found
- 導入されているパッケージが絞られている仕様のためstressコマンドが存在しなかった
/dev/null < $(yes) だけで乗り切ろうと頑張る
- xargsで並列処理を試みる
xargs -P64 -n1 /dev/null > ($yes)
-
なぜか最初の手順と結果が変わらず
-
バックグラウンドで実行してみる
# /dev/null < $(yes) & /dev/null < $(yes) & /dev/null < $(yes)
- 結果、順調に残メモリが減少しアラームが通知された
total used free shared buff/cache available
Mem: 7.6G 4.7G 1.5G 16M 1.4G 2.5G
Swap: 4.0G 0B 4.0G
total used free shared buff/cache available
Mem: 7.6G 5.0G 1.2G 16M 1.4G 2.2G
Swap: 4.0G 0B 4.0G
total used free shared buff/cache available
Mem: 7.6G 5.3G 953M 16M 1.4G 1.9G
Swap: 4.0G 0B 4.0G
total used free shared buff/cache available
Mem: 7.6G 5.6G 650M 16M 1.4G 1.6G
Swap: 4.0G 0B 4.0G
total used free shared buff/cache available
Mem: 7.6G 5.9G 352M 16M 1.4G 1.3G
Swap: 4.0G 0B 4.0G
total used free shared buff/cache available
Mem: 7.6G 6.2G 130M 16M 1.3G 1.0G
Swap: 4.0G 2.0M 4.0G
めでたしめでたし
疑問点
↓これは何だろう?
-bash: xrealloc: cannot allocate 18446744071562067968 bytes (1945600 bytes allocated)
xargsがうまく動かなかった理由が不明
参考文献
[意図的にLinuxサーバに負荷をかける方法 stressコマンド編]
https://blog.supersonico.info/?p=223
【Linux】stressコマンドを使わずに手軽にメモリ負荷をかける方法
https://techblog.ap-com.co.jp/entry/linux-memory
Linuxコマンド(Bash)でバックグラウンド実行する方法のまとめメモ
https://qiita.com/inosy22/items/341cfc589494b8211844