web-dev-qa-db-ja.com

/ usr / bin / random多くのCPUを使用

QNX 6.4.1を使用すると、プロセスに関する情報を表示するpidin timesというコマンドがあります。それはPID情報を意味すると思います。特に、プロセスが開始されてから使用されたCPUの量を確認できます。

システムが約10時間実行された後、/usr/sbin/randomでほぼ2分のプロセッサ使用率を示しているシステムがあります。私のコードでは/usr/sbin/randomを何も呼び出さないので、それは多くのように思えます。

現在、ネットワークアクティビティ(UDPとTCP)がたくさんあるので、ネットワークドライバーがパケットの衝突のために動的な衝突のバックオフ時間を取得するためにrandomを呼び出しているのではないかと思います。

この理論は正しいでしょうか? (さて、それはどれほどもっともらしいですか?)そうでない場合、私がチェックすべき他の何かがありますか?現在、このシステムには昨日存在しなかった遅延の問題があり、何が起こっているのかを知りたいと思います。この特定の手がかりは、問題を特定するのに役立つ場合があります。


更新

nicinfoを使用してさらに調査したところ、パケットの衝突はまったくありませんでした。それで、私の動的衝突バックオフ時間理論があります。他のアイデアはありますか?


別の更新

これは私の問題に対する答えを見つけるのに役立ちましたが(SSHDはもちろんランダムを使用していました!!)、注意してください。 SSHを使用する場合、ログオンするにはrandomが機能している必要があります。何らかの理由で、スクリプト内のrandom.oldの呼び出しが機能せず、組み込みシステムをブリックしました。ので注意してください。

7
kmort

クレイジーなトラブルシューティングのアイデア:ハニーポット/貧乏人のプロセスアカウンティングを作成します。

  1. /usr/bin/randomのバックアップを作成します

    cp -p /usr/bin/random /usr/bin/random.bak
    
  2. touch /tmp/who_is_calling_random.log ; chmod 622 /tmp/who_is_calling_random.log

  3. /usr/bin/randomをこのシェルスクリプトに置き換えます(必要に応じて/ tmpとは異なるパスを使用できますが、誰でも書き込み可能であることを確認してください)。

    #!/bin/sh
    echo "`date` $USER $$ $@" >> /tmp/who_is_calling_random.log
    /usr/bin/random.bak "$@"
    
  4. chmod 755 /usr/bin/random

  5. システムを再起動します。

  6. ハニーポットログに何が集まるかを確認します。これは、ランダムプログラムの使用の背後にいる人/もののログである必要があります。

    tail -f /tmp/who_is_calling_random.log
    
  7. 手順1で作成したバックアップからrandomを復元します。

  8. 再起動システム。

4
Joshua Huber