web-dev-qa-db-ja.com

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

現在使用中のCPUキューをリアルタイムプロセスで適切に識別し、psを使用してそれらを数える方法は? prio、rtprio、pri、Niceのようなフィールドがたくさんあることは知っていますが、正しく使用できるかわかりません。完全なリストを取得するにはps -eo rtprio,prio,cpu,cmd --sort=+rtprioのようなものを使用する必要があるようですが、RTPRIO列で多くのプロセスが-記号で取得したため、適切ではないようです。たとえば、Oracle Linuxを実行している48コアシステムがあり、次の質問を特定しようとします。

  1. どのプロセスが占有されている実行キューを占有していますか?それらの数は何ですか?
  2. リアルタイムモードで実行されている、または優先度が高いプロセスを識別する方法
6
user3417815

ゼロ以外の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
6
user1717828