マシンを独占しているプロセスを見つける方法


10

シナリオ:突然、コンピューターの動作が遅くなったように感じます。マウスは動きますが、ウィンドウが開くまでに時間がかかりuptimeます。

負荷の原因となっているプロセスを見つける最も速い方法は何ですか?

現在、「トップ」ツールや同様のツールは、CPUまたはメモリの使用量を表示しますが、同時に両方を表示しないため、答えにはなりません。私が必要なのは、発生時に入力できる単一のコマンドです-のいずれかを理解するもの

プロセスXのため、システムは8GBのRAMをディスクにスワップしようとしています...

または

プロセスXはディスク全体をシークします

または

プロセスXは400%のCPUを使用します」

したがって、私が探しているのは、iostat、htop / atop、および同様のツールが次のような出力で1つに実行されることです。

 1235 cp - Disk trashing
   87 chrome - Uses 2 GB of RAM
  137 nfs_bench - Uses 95% of the network bandwidth

分析できる数値を提供するツールは必要ありませんが、現在の負荷の原因となっているプロセスを正確に通知するツールです。キーボードの前にいるユーザーが「プロセス」の書き方をほとんど知らないが、「常駐サイズ」、「仮想メモリー」、または「プロセスライフサイクル」になると、ユーザーはすぐに圧倒されます。

私の議論は次のようになります:ユーザーが問題に気づきます。何千もの理由がある可能性があります...まあ、ほぼ:-)ユーザーは問題の原因を知りたがっています。

現在のソリューションでは多くの数値が得られますが、これらの数値の意味を知る必要があります。私が探しているのはメタツールです。データの99%は問題とは無関係です。したがって、ツールがすべきことは、リソースを占有し、「このプロセスは多くのCPUを必要とし、これは多くのIRQを生成し、このプロセスは多くのRAMを割り当てる(そしてそれはまだ成長している)」と一緒にリストするプロセスを探すことです。

これは比較的短いリストになります。たとえば、このリストから犯人を特定する方が、たとえばhtop5000程度の数字が得られるが、自分でマルチスレッドプロセスを折りたたむ必要がある(50行あるVIRT 2750Mが、たった16 GBのRAM-マシンは自動的にスワップして死ぬはずですが、もちろん、これはデータが誤って解釈される可能性があるため、すぐに発生する可能性があります)。


理由はわかりません。あなたが説明する症状は、ディスクのゴミ箱の症状ではありません(マウスには影響しません)。Sluggishマウスは、フル機能のクラシックCPUです。
soandos

1
これは単なる例です。一粒の塩と一緒に服用してください。noobが何も知らないコンピュータの前に座っていると想像してください。どのようにして彼は何が起こっているのかを最も簡単に見つけることができます(つまり、出力が何をtop意味するかを30分グーグルで費やすことなく)
アーロンディグラ

あなたはGUIとすべてを備えたタスクマネージャーに相当するLinuxを探していますか、それとも何か他のものですか?
soandos 2011

私は自分が実行し、「プロセスXがマシンを独占している」と言うものを探します。
アーロンディグラ2011

回答:


3

それぞれがツールXを実行するように言われたので、私は応答で笑顔にする必要があります。唯一の問題は、表示されているものが断続的である場合、何かを関連付ける方法がないことです。sarのようなツールは、十分に高い頻度で実行すれば役立ちますが、collectlの方が優れていると思います。

sarと同様に、RPMをインストールして実行することにより、デーモンとして実行します/etc/init.d/collectl start

ここで何かが遅いのを見るcollectl -p /var/log/collectl/filename --topと、データを再生し、上位のプロセスを表示します。また、実行collectl --topしてリアルタイムで表示することもできます。ところで、リアルタイムでできることなら何でも再生できます。

CPU負荷については、割り込みで過負荷になった場合はどうなりますか? collectl -sC個々のCPUの負荷(または-sc平均負荷の使用)を表示するだけでなく、それらがどのように時間を費やしているかを示します。-j-scj)を含めると、割り込み/ CPUの数が表示されます。大文字-Jを使用すると、各割り込み/ CPUのタイプが表示されます。

もちろん、vmstatが本当に好きな場合は、collectlデータをいつでも再生でき、--vmstat履歴データがvmstat形式で表示されます。

リストする時間よりもはるかに多くのスイッチがありますが、SourceForgeでチェックするか、ググってみてください。


ありがとう。これはまさに私が探していたものではありませんが、少なくともそれは良い出発点です。
Aaron Digulla

素晴らしいツール!そして、Ubuntu(少なくとも12.04以降)では、パッケージをインストールする必要があります。インストール時にデーモンが自動的に起動し、その後再起動すると:)
nealmcb

6

"top"は、適切な数値を見る限り、適切に機能します。どれどれ:

top - 13:11:45 up 13 days,  1:13, 21 users,  load average: 0.06, 0.11, 0.26
Tasks: 271 total,   2 running, 267 sleeping,   0 stopped,   2 zombie
Cpu(s): 19.0%us,  6.3%sy,  0.0%ni, 74.0%id,  0.5%wa,  0.0%hi,  0.2%si,  0.0%st
Mem:   8183668k total,  8002712k used,   180956k free,    12476k buffers
Swap: 11847900k total,   723480k used, 11124420k free,   767016k cached

現在、CPUがすべて使用されているためにシステムが遅い場合、「Cpu(s):」行の「us」列と「sy」列が一緒に100%に近いことが示されます。

スワッピングが遅い場合、「Mem:」「free」は非常に低い値を示し、「Swap:」「used」は高い値を示します。

I / Oが原因で遅い場合、「Cpu(s):」「wa」は、I / O待機に時間が費やされていることを示します。

これで、I / O待機が問題であることがわかっている場合は、プログラム「iotop」を使用して、どのプロセスがほとんどのI / Oを作成しているかを知ることができます。


+1しかし、私はこの分析を私に代わって行い、何が悪いのかという情報とともにプロセスを出力するツールをもっと探しています。「生の」数字からそれを集めたくありません。何か?
アーロンディグラ2011

1
申し訳ありませんが、基本的なレベルで異なる種類の遅延の違いを理解しないと、マシンの速度低下などの問題を解決できません。そのようなツールが存在する場合、私はそれらについて知りません。ほとんどの場合、有能なコンピューター管理者/サービス担当者が必要です。
Zds、2011

これを自動的に判断することは確かに可能であるため、そのようなツールが存在するとよいでしょうtop。の出力から判断できれば、コンピュータもそうです。これはモナリザの笑顔ではありません。「悪い」数字を見つけるためにいくつかの数値を計算しているだけです。
Aaron Digulla

2

400%の使用率に基づいて、クアッドコアプロセッサを使用していると仮定します。負荷平均は容量のほぼ2倍であり、プロセスの半分はCPUを待機しています。

まず、reniceシェルを0または-10に設定してより応答性の高いシステムを取得し、次にを使用htopして問題のプロセスを見つけ、strace特定のプロセスでそれに従います。役立つ可能性のある他のツールは次のとおりです。

  • vmsat
  • sar
  • iostat
  • pmap

1

マウスの動作が遅いのは、割り込みの負荷が高すぎるか、USBコントローラーが非常にビジーであることが原因である可能性があります(USBマウスだと思います)。


どのドライバー/コンポーネントがIRQの高負荷を引き起こしているのかを教えてくれるツールはありますか?
アーロンディグラ2011

1

vmstatは一般的な意味で役立ちます。使用例は次のとおりです。

$ vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
 1  0      0 977908 426184 1543884    0    0    38    45  106  385  4  1 95  1

X秒ごとに実行することもできます。コマンドの後にXを追加するだけです。

編集:コメントの観点から...以下をファイルに書き込み、そのファイルを実行可能にします。マシンの上位3プロセスがわかります。

top -n 1 | tail -16 | head -4 | awk '{print $13}'

CPUとは対照的に、どのメモリが占​​有されているかを知りたい場合は、トップマニュアルページを読んで、表示の順序を変更してください。


もっとレベルの高いものを探しています。vmstatを実行して数値を分析する必要があるので、「cs」の意味と、大きな「cs」が「良い」か「悪い」かを知る必要はありません。
アーロンディグラ2011
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.