スレッドごとのCPU統計の取得


17

特定のアプリケーションの各スレッドに対するcpuの現在の使用法(正確にはcpu%とwait%)に興味があります。その情報をどこかから入手することは可能ですか?

私はそれtopが実際のスレッド(pidを持つもの)ごとに情報を分割できることを知っていますが、それぞれのシステム/ユーザー/待機CPU使用量の分割を表示しません。また、その情報を記録する何らかの方法が欲しいです。それができるアプリ(またはAPI)を知っていますか?

回答:


4

SystemTapを調べます。このツールは確かにあなたが欲しいものを提供します。プロファイリングスレッドのこの例があります。必要なものがすべて揃っているかどうかはわかりませんが、必要になるように変更できます。



11

psコマンドで取得できるスレッドごとのCPU使用率:

 ps -emo %cpu,pid,user,args

計算方法はps manpage次のとおりです。

現在、使用されているCPU時間をプロセスが実行されている時間(cputime / realtime ratio)で割ったものが、パーセンテージで表されます。


CPU時間とio-wait時間の両方に本当に興味があります。残念ながら、psは2番目のものを処理できません。
viraptor 09

自己への注意:Javaアプリ内のスレッドIDのSPIDによって-C Javaとpidで-eを交換するには
kellogs

2
自己へのより大きな注意:ps -To pcpu,tid -C java | sort -r -k1 | moreJavaアプリの豚のスレッド用。ps --sort=pcpu何も達成しません。並べ替え部分はシェルに依存したほうがよいでしょう。
ケルログ

非常に便利な@kellogs、ありがとう。たとえば、「2」の上に「10」が表示されるように追加-nまたは-gソートします。
EM0

0

htopを見ると、かなり多くの設定ができます。


唯一のマシン全体のために-残念ながらそれは、特定のスレッドのユーザー/システム/待機時間のCPUを分割することはできません
viraptor

はい、でもそれをどうやってやるのですか?
rmobis

0

sarを試しましたか?pidレベルでも多くの情報を取得できます。



0

私は、組み込みシステムでこれにつまずきました。そこでは、このようなものを調べるための派手なツールがありません。

このために、cpuacct cgroup各スレッドを使用して独自のフォルダーに配置しました。この方法で、私はそれらの使用量を測定することができました。

階層は次のようになりました。

my-app.service
|-tid1
|-tid2
|-tid3

それから私はそれを

my-app.service
|-dir1
|  -tid1
|-dir2
|  -tid2
|-dir3
|  -tid3
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.