4

現在CPU使用率のベンチマークを行っているWebサーバーがあります。私が行っているのは、基本的に1つのプロセスを実行してサーバーを要求で非難し、次に次のbashスクリプトを実行してCPU使用率を判別することです。

#! /bin/bash

for (( ;; ))
do

    echo "`python -c 'import time; print time.time()'`, `ps -p $1 -o '%cpu' | grep -vi '%CPU'`"
    sleep 5
done

Pythonでこれを実行できると便利です。そうすれば、2つ実行する代わりに、1つのスクリプトで実行できます。コマンドを実行するために別のプロセスを実際に起動せずに、Pythonでps出力を取得するためのプラットフォームに依存しない(または少なくともLinuxとOS Xに依存しない)方法を見つけることができないようです。私はそれを行うことができますが、これを行うためのAPIがあれば本当に素晴らしいでしょう。

これを行う方法はありますか、それとも外部スクリプトを起動する必要がありますか?

4

4 に答える 4

3

Pythonを使用したps出力の解析に関するこの質問を確認できます。

答えの1つは、PSIpythonモジュールの使用を提案しています。ただし、これは拡張機能なので、それがあなたにどれほど適しているかはわかりません。

また、Pythonを使用してpsサブプロセスを呼び出す方法も質問に示されています:)

于 2010-08-24T17:45:13.063 に答える
3

私の好みはこのようなことをすることです。

collection.sh

for (( ;; ))
do
    date; ps -p $1 -o '%cpu'
done

次にcollection.sh >someFile、「サーバーをリクエストで非難」しながら実行します。

次にcollection.sh、サーバーが非難された後、この操作を強制終了します。最後に、日付スタンプとCPU値のログを含むファイルが作成されます。

analysis.py

import datetime
with( "someFile", "r" ) as source:
    for line in source:
        if line.strip() == "%CPU": continue
        try:
            date= datetime.datetime.strptime( line, "%a %b %d %H:%M:%S %Z %Y" )
        except ValueError:
            cpu= float(line)
            print date, cpu # or whatever else you want to do with this data.
于 2010-08-24T17:49:10.510 に答える
1

PySNMPを使用してCPU使用率を照会できます。これには、リモートコンピューターから測定を行うことができるという追加の利点があります。さらに言えば、Zenossまたはその同類のVMをインストールして、監視を任せることができます。

于 2010-08-24T17:46:58.427 に答える
1

PSを起動したくない場合は、/ procファイルシステムを試してみませんか。Pythonプログラムを作成し、/ procファイルシステムからファイルを読み取って、必要なデータを抽出できると思います。 perl、perlスクリプトでインラインCコードを書くことによって。Pythonでも同様の方法を見つけることができると思います。それは実行可能だと思いますが、/ profファイルシステムを調べて、何が必要で、どのようにできるかを理解する必要があります。それを得る。 上記のURLのhttp://www.faqs.org/docs/kernel/x716.html は、最初のプッシュを提供する可能性があります。

于 2010-08-26T10:50:33.993 に答える