ps出力をソートしてプロセスのリアルタイム優先順位を見つけ、現在のプロセスが占めている実行キューを識別する方法

ps出力をソートしてプロセスのリアルタイム優先順位を見つけ、現在のプロセスが占めている実行キューを識別する方法

現在CPUキューを占めているリアルタイムプロセスを正しく識別し、psを使用してそれらを計算する方法は?私はprio、rtprio、pri、niceなどのファイルが多いことを知っていますが、正しく使用する方法がわかりません。リスト全体を取得するのと同じ方法を使用する必要があるようですが、ps -eo rtprio,prio,cpu,cmd --sort=+rtprio多くのプロセスが-RTPRIO列にシンボルを持っているので、それは私には適していないようです。たとえば、Oracle Linuxを実行している48コアシステムがあり、次の問題を特定したいとします。

  1. どのプロセスが実行キューを占めていますか?彼らの電話番号は何回ですか?
  2. リアルタイムモードで実行しているプロセスや優先順位の高いプロセスを識別する方法は?

答え1

0以外のCPU%プロセスのリスト:

ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm --sort=+pcpu | awk '$8!=0.0 {print}' | awk 'NR>1'

数えよう

ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm --sort=+pcpu | awk '$8!=0.0 {print}' | awk 'NR>1' | wc -l

継続的に更新される内容については、次のファイルを使用してくださいprocesses.sh

#!/bin/bash
ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm --sort=+pcpu | awk '$8!=0.0 {print}' | awk 'NR>1'

実行可能にしてくださいchmod +x processes.sh。ウォッチを使ってリアルタイムアップデートを実行します。

watch ./processes.sh

関連情報