問題タブ [getrusage]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - C でシステム時間を測定するために getrusage() を取得する
いくつかのコードを実行するのにかかるシステム時間を測定したいと思います。これを行うには、getrusage() への 2 つの呼び出しの間に上記のコードを挟むことになると思いますが、予期しない結果が得られます...
これで 2 つの異なる数値が生成されることを願っていますが、残念です。コンピューターが 1 ~ 2 秒考えると、結果は次のようになります。
私は getrusage() を正しく使用していませんか? これらの 2 つの数値が異なってはならないのはなぜですか? 私が根本的に間違っている場合、 getrusage() を使用してソースコードのシステム時間を測定する別の方法はありますか? 読んでくれてありがとう。
c - Linux の ru_maxrss の単位は何ですか?
これはman getrusage
ただし、単位は特定されていません。
FreeBSD のドキュメンテーションでキロバイト単位であると書かれているのを見ましたが、Linux での単位はわかりません。
python - RUSAGE_CHILDRENを使用したPythongetrusageは、スタンジェリーとして動作しますか?
最近、私はオンラインジャッジシステム(spojのような)を開発する計画を立てました。そして、Pythonでジャッジスクリプトを作成しました。送信されたコードを1つ受け取るたびにフォークし、コードをコンパイルしてsubprocess.Popen
、プログラムの開始に使用します。しかし、でプログラムのメモリ使用量を取得するresource.getrusage(resource.RUSAGE_CHILDREN)
と、サブプロセスではなく、フォークされたPythonプロセスのメモリが返されます。
以下は私のコードの一部です:
cpuusage
memoryusage
によって作成された共有メモリでmultiprocessing.Value
あり、の値memoryusage
は12Mです。しかし、を介してtop
、私は、サブプロセスが900Kであるのに対し、フォークされたpythonプロセスのメモリ使用量は12Mであることを発見しました。私のコードに何か問題がありますか?英語が下手でごめんなさい。
c++ - ベンチマーク コード - 反復回数で除算するかどうか
C/C++ コード (または一般的なコード) のベンチマークについて友人と興味深い議論をしました。getrusage
特定のコードの CPU 時間を測定するために使用する単純な関数を作成しました。(特定の機能を実行するのにかかった CPU の時間を測定します)。例を挙げましょう:
(es) を反復回数で割るべきか、そうでないかという議論がありました。つまり、除算しない場合、結果は許容される形式 (例: 3.0 秒) ですが、除算すると、2.34385e-07 秒のような結果が得られます ...
だからここに私の質問があります:
- (es) を反復回数で割るべきですか? そうであれば、なぜですか?
- 2.34385e-07 をより人間が読める形式で出力するにはどうすればよいでしょうか? (たとえば、0.00000003 秒かかりました) ?
最初に関数呼び出しを 1 回行い、その後、反復の CPU 時間を次のように測定する必要があります。
/li>
c - ru_utime.tv_usec と ru_utime.tv_sec で getrusage がゼロを返す
次のコードでは、 getrusage は と でゼロを返しru_utime.tv_usec
ますru_utime.tv_sec
。
コード:
出力:
コンパイルされたコードLinux version 2.6.18-308
ARMボードで実行可能ファイルを実行すると、Linux version 3.8.1-2.0
c++ - プロセスのアイドル時間を見つける方法
以前のリリースでは時間がかかったプロセスがあります。現在、現在のリリースでは同じプロセスに時間がかかっています。ただし、以前と比べてコードに変更はありません。私が見た観察の 1 つは、以前のリリースと比較して、サーバー上に CPU を消費している他のプロセスがいくつかあることです。したがって、私のプロセスがCPU時間を取得していないため、より多くの時間がかかっているとは思えません。しかし、プロセスがほとんどの時間待機 (アイドル) していることを証明する必要があります。これを行うために、私は を使用することを考えていgetrusage()
ます。しかし、それを使用してプロセスのアイドル時間を計算する方法がわかりません。getrusage
プロセスのアイドル時間を計算するために具体的に使用する方法について、簡単な例を教えてください。
前もって感謝します。
java - JAVAを使用してインターネットの使用状況を確認する
Java Code を使用してアップロードおよびダウンロードのデータ容量を確認するにはどうすればよいですか? (インターネットまたはローカル エリア ネットワーク内)
c - getrusage を 2 回続けて呼び出すと、結果が増加することが保証されますか?
getrusage()
減算によってタスクの時間を取得するために 2 回呼び出すプログラムで、タスクの時間が非負でなければならないというアサーションが失敗するのを見たことがあります。もちろん、これを簡単に再現することはできませんが、より簡単に再現できる特殊なプログラムを作成することはできます。
私は実行に伴って増加する保証を見つけようとしましたgetrusage()
が、私のシステム (x86-64 上の Linux) のマニュアルページも、このシステムに依存しない説明も明示的に述べていません。
この動作は、複数のコアがあり、NTP が実行されている物理コンピューターで観察されました。
使用している OS に対するバグを報告する必要がありますか? getrusage()
時間の経過とともに増加すると予想される場合、私はあまりにも多くを求めていますか?
c - getrusage の仕組みと rusage 構造体の中身は?
私は方法を理解しようとしています
私のプログラムの実行時間を計算するために機能します。
たぶん 10 回は man ページを読み直しましたが、それでもわかりません。Web で何かを見つけようとしましたが、この機能に関するマニュアル ページしか見つかりませんでした。
不明な点は、rusage 構造体の内部に何が格納されているかです。man ページはあまり明確ではありません。そのため、デバッガーで実行して内部の内容を直接確認しようとしましたが、特に 2 つの構造体がどのように機能するか、まだわかりません。 - timeval ru_utime と timeval ru_stime - 動作します。
それらの内部にあるものは、ある時は 0、ある時は 2000 など、異なる値を想定しています。
メモリの割り当てと解放を継続的に行う for ループを含む単純なプログラムを実行しました。ストップウォッチを使って実際に何時間かかるかを確認したところ、5.23秒かかりました。しかし、これらの構造体に見られるのはまったく無関係のようです:
ループ前:
ru_utime = { tv_sec = 0, tv_usec = 1000}, ru_stime = { tv_sec = 0, tv_usec = 1000}
ループ後:
ru_utime = { tv_sec = 4, tv_usec = 677000}, ru_stime = { tv_sec = 0, tv_usec = 2000}
だから、誰か私にこれを説明するか、これが説明されている良いリンクを教えてもらえますか?
とても感謝しています。