teratailで回答できなったもの(319121)

への回答のめも。回答しようとしたら削除リクエストが送られていた。

【追記】削除リクエストは却下されて、現在は表示できている模様。

[RubyGems.orgで「cpu」で検索](https://rubygems.org/search?query=cpu)から適当に探してみるとかでしょうか。ちょっと見る感じ、sys_cpuはload_avgはとれるけど、使用率は取れないみたいで、難しいかも知れません。

Linuxなら`IO.read('/proc/stat')`として自分で解析するのもいう方法もあります、[「stat proc」で検索](https://rubygems.org/search?query=stat+proc)してみると'link-kstatが人気みたいです。ただ、これらで取得できるのはこれまでの**CPU使用時間**なので、一定期間で差分を取って自分で計算する必要があります。(vmstatとかもそういう仕組みです。)

まとめると

* ロードアベレージならすぐ取れる。(/proc/loadavgを見に行くだけなので)
* CPU使用率はCPU使用時間の差分を取って自分で計算する必要がある。(瞬間的なCPU使用率は記録されておらず、CPU使用時間を/proc/statから取得するぐらいしかない)

となります。単にサーバーの負荷の目安を見たいというのであればロードアベレージだけで十分でしょう。しかし、CPU使用率となると、たとえば間近1分間の使用率をみたいとなったとき、1分前の/proc/statのデータが必要と言うことになります。ずっと定期的にとっておくか、アクセスしたときだけグラフ化していくような仕組み(1秒おき更新なら、最初の1秒はグラフに表示されない)ぐらいでしょう。

この記事が気に入ったらサポートをしてみませんか?