問題タブ [strace]
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 - select() システム コールが CPU を消費している
さまざまなリモート クライアントを受け入れ、select()さまざまなハンドラーにジョブを分散するためのアプリケーションを作成しました。ARM926EJ-S とカーネル 2.6.33-rc4 を実行している 1 つのプラットフォームで、アプリケーションが大量の CPU を使用していることに気付きました! strace -cを使用してアプリケーションを 30 秒間実行すると、次のようになります。
ただし、リモート クライアントからアプリケーションに継続的にデータを送信すると、select の CPU 使用量が大幅に削減されます。
select()忙しい待機で実装されているかどうか疑問に思っています。ただし、MIPS プロセッサと 2.6.30.10 Linux カーネルを実行している古いプラットフォームでは、strace をクロスコンパイルして確認する必要があるにもかかわらず、この問題は発生しませんでした ...! そして、データが「めったに」送信されないため、私はほとんど最悪のケースです!
問題はどこから来るのか気になります!C ライブラリ? Linuxカーネル?一方、マルチスレッド アプリケーションを作成するとpthread、クリティカル セクションが原因でパフォーマンスが向上するかどうかはわかりません。
インターネットで興味深い記事を 2 つ読みました。
残念ながら、それらはかなり古いものです ('98/'99 以降) 他の誰かがそのような問題に直面したかどうか、またはパフォーマンスを改善するための提案や実際の問題を指摘する他の提案があったかどうかを知りたいですか?
編集:
クライアントがデータを送信しないにもかかわらず、より多くのクライアントが接続され、アプリケーションが CPU を使用していることに気付きました! ほとんどの時間が選択に費やされるため、選択自体がより多くの CPU を消費すると思いました。アプリケーションをプロファイリングして問題を指摘するために、ARM の下で使用できる他の無料ツールは何ですか? Valgrind は (まだ) ARM9 では動作しません ...
php - 特定のプロセスを実行しているPHPスクリプトを追跡する方法は?
VPS ホスティング サービスでカスタム スクリプトを実行している Web サイトがあります。すべてのスクリプトは、使いやすい URL に mod_rewrite と .htaccess を使用して index.php を通過します。
次のように、スクリプト内の何かが高い CPU 使用率を生成しています。

私が行っstraceて特定のプロセスに行くと、私は理解できないこれを取得します:
これが無限ループで連続的に繰り返されます。
私が知る必要があるのは、この問題を引き起こしている正確な PHP スクリプトを追跡する方法です。助言がありますか?
linux - sendtopidとグループ
Linuxのstraceからこの行を理解しようとしています:
sendtoに関するネットやマニュアルページを調べましたが、pidやgroupsについての言及はありません。イベントAF_NETLINKは言及されていません。
pidとgroupsの引数はどういう意味ですか?この関数に関する適切なドキュメントはどこにありますか?
ありがとう
linux - xterm を閉じると nohup プロセスが終了しますが、終了時には終了しません
単純な nohup コマンドの動作がおかしいように見える問題があります。これを、Sleep という名前の小さな Java アプリに要約しました。
次のように nohup を実行しています。
次に、別のウィンドウで strace を実行して、次のようにシグナルを探し、pid (12345) を探します。
元のウィンドウで「exit」と入力してシェルを閉じると、シグナルを受信せずにプロセスが実行され続けることがわかります。ただし、パテ ウィンドウを閉じると (メニュー バーの [x] をクリック)、nohup されたプロセスが SIGHUP を取得することがわかります。
nohup は SIGHUP をインターセプトする/渡さないはずだと思っていました。それ以来、setsid の使用に切り替えたので、ターミナル ウィンドウをどのように閉じても正しい動作が得られます。私は何か間違ったことをしていますか?私が取り組んでいる実際の問題で深刻な問題を引き起こしている nohup が正しく機能していないようです。
performance - 遅延/レイテンシを特徴付けるための strace の解釈
Linux Kernel 2.6.27.45 の組み込みシステムでデーモンを実行しています。プロセスの 1 つが想定どおりに実行されず、さらに分析するためにstraceを使用しようとしました (ネット上のいくつかの投稿に従って、接続されたプロセスのスタック トレースを strace に出力する機能を追加しました)。使用したコマンドは次のとおりです。
次のような出力が得られます (列 1 でソートした後):
私の質問は次のとおりです。
(1) たとえば、0.252104 で始まる行を考えると、252ms には、以前にスタックにあったすべての関数 (1019e878,...10191fa0) と futex( ) 現在のスタック (082f4808...1219a614,..10578674) に加えて、タスクがスケジュールされた時間に加えて、futex() 呼び出しの実行 (33us) を加えますか?
(2) futex() 呼び出しが本当にプロセスを待機させたかどうかを確認する方法はありますか?
(3) カーネルは、システム コールを行うたびにこのタスクをスケジュールしますか?
(4) 0.282577 で始まる行では、SIGALARM 時間によって 283ms の遅延が発生しますか? (5) 0.417500 で始まる行で ioctl() 呼び出しを行うと、418ms の遅延が発生しますか? (ただし、ioctl() 自体は 32us で行われます)。ありがとうございます。
c++ - straceはプログラムの適切な実行を妨げる可能性がありますか?
straceがトレースしているプログラムに異常を引き起こす可能性があるかどうか知りたいのですが。現在、私が呼び出した行で発生したランダムセグメンテーション違反エラー(ただし、straceを使用するとプログラムがそのようにクラッシュすることはないようです)をトレースしようとしていますpthread_cond_wait()。
プログラムを直接実行すると(実際にはc / c ++が混在しています)、想定どおりに動作する場合がありますが、前述のように、pthread_cond_wait()(ちなみに、誰かがその問題を解決したい場合は)でクラッシュすることがあります。 、ここを参照してください、どんな助けでも大歓迎です)。
プログラムを直接実行し、次のようにstraceをプロセスにアタッチする場合:
出力は、futexを待機していることを示すワンライナーです(事実上次のように:)
次のようにstraceからプログラムを実行すると、次のようになります。
次に、ファイル出力のある時点で、正確には、を呼び出すとpthread_cond_wait()、このような複数の行でスパムを送信し続けます(そして、毎回、futex()呼び出しが待機している値は以前よりも高くなります。ここでは15です)
また、プロセスの親ではなく子としてstraceを実行しようとしました(違いが生じることを期待して)。そして、私はそのランダムなセグメンテーション違反エラーをキャッチしようとしましたが、それは決して現れませんでした。
さて、私の質問は、これが一般的で意図的なものなのか、それとも私のstrace-callが偽物なのかということです。そうでない場合は、straceで機能しない可能性があるため、注意する必要のあるシステムコールはありますか、それともこの奇妙な動作はシステムコールのグループに関係しますか?これを回避する方法はありますか?
私はdebian-squeezeを使用しています。
アップデート1
私は複数のスレッド(POSIXスレッド)といくつかの子を実行していることを完全に忘れました。はレースに遭遇するpthread_cond_wait()べきではありませんが、それは間違いなく、pthread_mutex_lock()にアクセスし、pthread_cond_t引数pthread_mutex_tとして解析しているaの後の最初の呼び出しであるためです。pthread_cond_wait()しかし、内部に競合状態があるかどうかはわかりません。必要に応じてプログラムコードを提供します。
perl - Coro + Coro::LWP がフリーズする
Coro、Coro::LWP、LWP::UserAgent を使用したスクリプトがあります。一連のリクエストを作成し、Coro の非同期 {} で実行します。次に、それらの結果を使用してファイルに保存します。スクリプトが数時間、場合によっては数分間実行された後、フリーズします。strace ルックアップを作成して、それが何をしているかを確認しました。たくさんのアクションがありますが、結果を保存した後、フリーズする前にこのアクションがありました:
フリーズを理解するのに何か奇妙なことはありますか?
PerlMonks でクロスポストされました。
解決済み: 非常に大きな秒数 (4000 日間など) の奇妙な usleep でした。
shell - adbシェルをstraceする方法はmyandroidappを開始します
SDK エミュレーターでの Android アプリの追跡について、あなたに頼る必要があります。
これが私のセットアップです
エミュレーターに接続されたAndroid API 4.03 adbシェルを実行しているAndroid SDKエミュレーター。
adb install filename.apk を使用して apk をインストールできます
adb shell am start -a android.intent.action.Main -n com.akproduction.notepad/com.akproduction.notepad.NoteList を使用してアプリを実行できます
(adb shell) strace am start -a android.intent.action.Main -n com.akproduction.notepad/com.akproduction.notepad.NoteList を使用して strace しようとしましたが、何も得られません!
Android アプリの実行時の動作とそのインストールをどのようにトレースしますか?
ありがとう、
ホセ。
ps テストアプリはここにあります: http://www.appbrain.com/app/ak-notepad/com.akproduction.notepad
android - Android: ADB shell am start を使用してアプリを strace する方法
SDK エミュレーターでの Android アプリのトレースについてサポートが必要です。
これが私のセットアップです:
エミュレーターに接続された Android API 4.03 ADB シェルを実行している Android SDK エミュレーターがあります。
ADB install filename.apk を使用して APK をインストールできます
ADB シェルを使用してアプリを実行できますam start -a android.intent.action.Main -n com.akproduction.notepad/com.akproduction.notepad.NoteList
(ADBシェル)を使用してstraceしようとしましstrace am start -a android.intent.action.Main -n com.akproduction.notepad/com.akproduction.notepad.NoteListたが、何も得られません!
Android アプリの実行時の動作とそのインストールをどのようにトレースしますか?
(PS テスト アプリはここにあります。
c - mmap2 システムコール strace なしのメモリ割り当て?
mmap2呼び出しなしでメモリを割り当てることは可能ですか?
私は A10 ボード ビデオ プレーヤーで作業していましたが、ここで大量のメモリ リークが発生しました。おそらく各フレーム表示器にあります。システムコールを処理するライブラリがありますlibvecoreが、ソースはありません。
A10 は一般的な話題ではないことはわかっているので、私の質問は A10 ではなく、カーネル メモリの割り当てに関するものです。
私はプログラムをトレースしようとします: strace -e mmap2 ./VideoPlayer.
しかし、私はその結果に驚いています。mmap2ビデオプレーヤーが起動時にのみ呼び出す間は呼び出していません。
しかし同時に、TOPVideoPlayer が論争の的にメモリを割り当てており、3 分間で 300 MB をほぼ消費していることがわかります。
では、メモリ リークはカーネルにあると考えるべきでしょうか? または、メモリを動的に割り当てる他の呼び出しがありますか?