AMRを開発しているときに異常な挙動を示して解析の必要があったり、量産品でパフォーマンスの見積もりをするためにコマンドを使って各パフォーマンスの値を確認します。
社内メモを兼ねたいつもとりあえず自分が確認するものを書きます。
説明が長くなりそうなのはリンク貼っておくだけです…
CPU中心に全般
top
計算資源を食っているプロセスを確認する。
無限ループなどで無駄に意図せずリソースを食ってる場合はシングルコアの100%近くにいたりする。
vmstat
CPU RAM DiskI/Oの概要が見える。
実行待ちに並んでいるプロセス数(r)やI/O待ってたりするプロセス(b)が多くいないかとかCPUのidle率がそこそこあるか(id)をよく見ている。
RAMに関してはfreeが少ないとやばいわけではないので注意。
docker stats
動作しているコンテナのCPU使用率・RAMの使用率などが見える。
perf
Linuxのsystemcallのボトルネック調べるために使うやつ。
strace
perfで大体概要見たら、さらに追い込むために使う。
そもそもstraceが重いのでずっと動かすのはNG
https://qiita.com/t_ymgt/items/7f13c89b08b889da2146
ネットワーク系
nethogs
どのプロセスがどれくらい通信量を使っているかを可視化する。
ethtool
「全二重の通信のつもりなのに半二重になってないか?」とか「そもそもEthernet抜けてない?」みたいなときに使う
iwconfig
こいつらってそもそも全部インストール済みなの?
結構デフォルトでは入っていない。
でも本番環境には解析用ツールなんて入れたくない。
なのでこういうdocker imageを使う
https://hub.docker.com/repository/docker/industryalphainc/ubuntu-debug-tools/general
随時追加予定