問題タブ [futex]
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++ - デッドロック futex で malloc とプログラムを呼び出す際のセグメンテーション違反
私が取り組んでいるコードには、新しい文字列などを作成するための呼び出しがたくさんあります..しかし、最近、サーバーを 12.10 Ubuntu にアップグレードした後、いくつかの問題に直面し始めました。一部の子プロセスがfutex
. それで、私は長い間GDB
実行中のプロセスに接続して、次のログを見つけましたfutex
backtrace
私は混乱しています。メモリを確認したところ、PC には 20GB 近くの空き RAM メモリがありました。では、関数が でクラッシュする可能性はどのくらいmalloc
ですか? で立ち往生している理由はfutex
わかりますが、なぜmallocなのですか?これについての説明をいただければ幸いです。
クラッシュは、次のように呼び出された後に発生します。
この行は、単純な c-string を c++ タイプの std::string に変換するために呼び出されます。しかし、クラスは私のものです。主に 2 つの理由により、ここでコード全体を示すことはできません。1) コードは私の会社が所有しています。2) めちゃくちゃ長い。
本当にごめんなさい。なぜそれがクラッシュしmalloc
てデッドロックが発生するのかについての説明が必要です。なぜなら、以前のロックが解放されるのを待っているからですsighandler
。malloc
linux - futex ロックをデバッグする
私はfutexを待っているプロセスを持っています:
このような状況を最適にデバッグするにはどうすればよいですか? フューテックスの保有者を特定できますか? ipcs と ipcrm に似ているが、futex 用のツールはありますか?
perl - Perl のワーカーは接続を処理せず、futex を待機します
ユーザーの接続を処理する 10 個のワーカーがあります。ワーカーは Perl で実装され、 と を使用FCGI
しFCGI::ProcManager
ます。
場合によっては、1 つのワーカーが接続の処理を停止します。トレース表示:
つまり、フテックスを待ってスリープ状態です。
ワーカーは待機から戻ることはありません。
このワーカーを殺すと
次に、その親がそれを刈り取ります。戻りコードは 9 です。
私たちのプロジェクトは高負荷です。この問題はめったに発生しません。
linux - pthread_mutex が堅牢な futex に基づいているかどうかを確認する方法
Linux で堅牢な futex ベースの pthread ミューテックスを使用しようとしています。これは、高速で堅牢である必要があるためです (「デッド」ロックを回復する)。Linux システムの pthread ミューテックス ライブラリが堅牢な futex に基づいているかどうかを確認するにはどうすればよいですか?
ありがとう!
c++ - tcmalloc の MALLOCSTATS 出力の解釈
tcmalloc を使用するマルチスレッド アプリケーションのパフォーマンスの問題を修正しようとしています。各スレッドは多数のオブジェクトを作成し、私の分析では、tcmalloc のスレッド キャッシュがメモリを割り当てることができず、中央のページ ヒープからメモリを取得しようとすることがよくあります。 これは、 4 つのスレッドに対してMALLOCSTATS=2を使用した app の私の出力です。
255 大 * 15 スパン ~ 706.3 MiB; 713.5 MiB 精液; マッピングされていない: 0.0 MiB; 0.0 MiB 兼
これが、どのスレッドキャッシュが使い果たされているかを示しているかどうかはよくわかりません。枯渇するスレッド キャッシュの分析は、GDB で実行されているプログラムを観察し、futex システム コールを呼び出す tcmalloc コードを解釈することに基づいています。
更新また、スレッド数が増減してもスレッドごとのキャッシュが変化しないことに気付きました。成長するのはページヒープです。
linux - Linuxでの高速ユーザー空間プロセス間通知アプローチ?
2 つの Linux プロセスがドメイン ソケットと通信します。パフォーマンスの目標は、単一のドメイン ソケット接続を介して 4k の要求サイズで 5k iops です。CPU コストを削減するために、ドメイン ソケットを io-ring (共有メモリ ベース) に置き換えますが、重要なのは「通知」ステップはまだドメインソケットによって実装されており、オーバーヘッドがまだ大きすぎるようです。
PS: 現在、IO の深さは通常 2 ~ 4 です。これは、「通知」ごとに 1k IOPS を示します。
セマフォ、pthread_condvars、futex ベースのロック、eventfd、inotify、どちらが好みですか (または他の人)、私はパフォーマンスとオーバーヘッドを非常に気にします。ありがとう!