私のメモリとCPU時間を最も占めるバックグラウンドタスクをどのように見つけることができますか?

私のメモリとCPU時間を最も占めるバックグラウンドタスクをどのように見つけることができますか?

monやsysstatのような一種の監視ツールが必要かもしれませんが。私のメモリ、CPU時間などを最も占める仕事が何であるかを理解する方法を探しています。

すべてのワークステーション/デスクトップが一意であることはわかっていますが、私のデスクトップの1つの一般的なワークロードは次のとおりです。

  • 単一ユーザー(複数のユーザーを持つオプションがある場合でも)
  • ゲーム - Aisleriot, kshisen
  • 急流クライアント - qbittorrent
  • 電子メールクライアント – Thunderbird
  • メッセージングクライアント - 共感、電報、quasselcore、クライアント。
  • ブラウザ - Firefox、時にはTor
  • デスクトップ - MATE
  • メディアプレーヤー - ほとんどの場合mpv

作業量は通常軽量ですが、ハードドライブセンサーにはまだ点灯しています。これは、フォアグラウンドジョブが発生しなくても、一部のバックグラウンドジョブが集中的に発生していることを意味します。 top を使用して、最も多くの CPU とメモリサイクルを占めるタスクを見つけることができますが、これは一時的なものです。私は一定期間(例えば、1日)にわたって計算し、バックグラウンドで実行し、分析するのに十分なグラフを生成し、最も重要なのは、カスタム位置(たとえば/ home)に生データを保持できることが必要であることを意味します。気づきました。 /shirish/mon または任意のディレクトリ名。 /var/log//logsなら大丈夫でしょう。

いくつかのことだけ知りたいです。

  • 時間の経過とともにメモリとCPUを占めるプロセス、フォアグラウンドプロセスとバックグラウンドプロセス。
  • CPUとメモリの大部分を占めるバックグラウンドプロセス
  • ロギングは調整可能で、スナップショットは2〜5分ごとに撮影されます。

人々がいくつかのツールと方法を使用してサーバーなどに対してこれを行ったと確信していますが、上記のシナリオについて行った人はいますか?それでは、彼らはどうしたのですか?

答え1

//List Processes
ps -la

//Display All Network Activity
nettop

クローン操作が最も簡単な方法です。
パイプを使用して出力したい環境/パスへのリダイレクト

答え2

たとえば、cron を使用して時々次のコマンドを実行できます。X分:

ps --no-headers -eo "uname fname %cpu %mem" | sed -e 's/ \+/,/g' | sed "s/^/$(date --iso-8601='minutes'),/g" >> /path/to/ps.csv

ps必要に応じてフィールドを調整します。

その後、出力ファイルを使用してスプレッドシートソフトウェア、gnuplot、または同様のソフトウェアを使用して使用量をグラフ化できます。

クローンタブに追加する方法

  1. 上記のコマンドを入力するスクリプトを作成します(例$HOME/bin/pscsv.sh:)。
  2. chmod+x/パス/to/pscsv.sh
  3. crontab -e*/5 * * * * /path/to/pscsv.sh必要に応じて期間を調整するのと同様の行を追加します(この例は5分ごとに実行されます)。

関連情報