問題タブ [nptl]
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.
linux - スレッド /proc/PID/cmdline を設定しますか?
Linux/NPTLでは、スレッドは何らかのプロセスとして作成されます。
プロセスの一部に奇妙なコマンドラインがあることがわかります。
プロセスの各スレッドでそれを行う方法を知っていますか? これは、デバッグに非常に役立ちます。
/me 現在 HAL ソースで調査中
redhat - GNU_LIBC_VERSION と GNU_NPTL_VERSION の違いは何ですか?
次の 2 つの RedHat Linux システム構成設定に注目してください。
それらがいくつかの TLS ライブラリに対応していることがわかります。
/usr/lib
同等のライブラリではなく、これらのライブラリにリンクしたいと思います。いくつかの質問を聞きたいんです:
- これは RedHat と Debian で見たことがあります。すべての GNU Linux ディストリビューションに存在しますか?
GNU_LIBC_VERSION
と異なる場合はありますGNU_LIBPTHREAD_VERSION
か?- これらの変数は、共有ライブラリを識別するために安全に使用できます
/lib/tls
か? 魔法の glibc/pthread バージョン番号をハードコーディングするのではなく、これを Makefile で自動化したいと考えています。
linux - NPTL デフォルト スタック サイズの問題
C プログラミング言語とNPTL 2.6を使用して、マルチスレッド モジュラー アプリケーションを開発しています。プラグインごとに、POSIX スレッドが作成されます。問題は、各スレッドが独自のスタック領域を持っていることです。デフォルトのスタック サイズはユーザーの選択に依存するため、場合によっては大量のメモリが消費される可能性があります。
不必要なメモリの使用を防ぐために、次のようなものを使用して、各スレッドを作成する前にスタック サイズを変更しました。
EDIT I: pthread_create() セクションが追加されました。
これは期待どおりに機能しませんでした。によって報告されたスタック サイズpthread_attr_getstacksize()
は変更されましたが、アプリケーションの合計メモリ使用量 (ps/top/pmap 出力から) は変更されませんでした。
旧:10485760、新:65536 - 最小:16384
ulimit -s MY_STACK_SIZE_LIMIT
アプリケーションを開始する前に使用すると、期待される結果が得られます。
私の質問は次のとおりです。
1-) アプリケーションの起動後 (もちろんスレッドを作成する前) に (デフォルトの) スレッドスタックサイズを変更する移植可能な (UNIX バリアント間の) 方法はありますか?
2-) すべてのスレッドに同じスタック領域を使用することは可能ですか?
3-) あまり苦労せずにスレッドのスタックを完全に無効にすることは可能ですか?
posix - pthread 関数 pthread_condattr_setclock の NPTL へのリンク
条件変数で時限待機を使用する pthread コードをいくつか作成しましたが、相対的な待機を確実にするために、pthread_condattr_setclock() を使用して condvar のクロック タイプを CLOCK_MONOTONIC に設定しました。
RHEL4 で pthread_condattr_setclock() をコンパイルしてリンクするには、gcc コマンド ラインに -I/usr/include/nptl と -L/usr/lib/nptl を追加する必要がありました。私の理解では、2.6 カーネル (RHEL4 にある) はデフォルトで NPTL pthread 実装を使用しますが、この機能を使用するためにこれらのパスを明示的に指定する必要があるのはなぜですか?
これを行う必要があるのはこの関数だけです。省略した場合、余分なパスを指定しなくても、すべてが正常にコンパイルおよびリンクされます (ただし、コードの動作は正しくありません)。
c++ - linuxthreadsとnptlの特定の定義はありますか
私はプログラムを持っていますが、これはlinuxthreadsとnptlでは動作が異なる必要があります。
このライブラリには、私のプログラムで検出に使用できる定義がありますか、nptlが使用されていますか、それともlinuxthreadsが使用されていますか?
UPDATE1:ランタイムにはgetconf GLIBC_LIBPTHREADSがありますが、コンパイル時はどうなりますか?
c - NPTL は最大スレッド数を 65528 に制限していますか?
次のコードは、100,000 スレッドを作成することになっています。
これは、32 GB の RAM を搭載した 64 ビット マシンで実行されています。Debian 5.0 がインストールされており、すべてストックされています。
- ulimit -s 512 スタックサイズを抑える
- /proc/sys/kernel/pid_max を 1,000,000 に設定 (デフォルトでは、32k pid に制限されています)。
- ulimit -u 1000000 を使用して最大プロセス数を増やします (これはまったく問題にならないと思います)。
- /proc/sys/kernel/threads-max を 1,000,000 に設定 (デフォルトでは、まったく設定されていませんでした)
これを実行すると、次のように吐き出されます。
私は確かにラムを使い果たしていません。同時に実行されているこれらのプログラムをさらにいくつか起動することもでき、それらはすべて 65k スレッドを開始します。
(100,000 以上のスレッドを起動しようとしないことを示唆するのは控えてください。これは動作するはずの単純なテストです。現在の epoll ベースのサーバーには常に約 20 万以上の接続があり、さまざまな論文では、スレッドの方が優れた選択肢である可能性があることが示唆されています。 。 - ありがとう :) )
java - Linux NPTL を使用した Java I/O と Java new I/O (NIO) の比較
私の Web サーバーは、通常の Java I/O と接続メカニズムごとのスレッドを使用しています。現在、彼らはユーザーの増加 (ロングポーリング接続) にひざまずいています。ただし、接続はほとんどアイドル状態です。これは Web サーバーを追加することで解決できますが、私はNIOの実装についていくつかの調査を試みています。
私はそれについて複雑な印象を受けました。Linux の新しいNPTLライブラリを使用した通常の I/Oが NIO より優れているというベンチマークについて読んだことがあります。
Java I/O で Linux 用の最新の NPTL を構成して使用する実際の経験は何ですか? パフォーマンスの向上はありますか?
そして、より大きな範囲の質問について:
標準サーバー クラスのマシン (クアッドコア プロセッサを搭載した Dell) で (Linux NPTL ライブラリを使用して) 正常に実行されると予想されるI/O およびブロック スレッド ( Tomcatスレッド プールで構成する) の最大数はいくつですか? スレッドプールが非常に大きくなった場合、たとえば 1000 スレッドを超えると、どのような影響がありますか?
参考文献やポインタは非常に高く評価されます。
pthreads - スレッドがブロックされているかどうかを判断する
スレッドが現在ブロックされているかどうかを判断する方法を知っている人はいますか? 基本的に、特定のスレッドがブロックされているかどうかを確認し (この場合は AF_UNIX データグラム ソケット受信呼び出しで)、ブロックされている場合は中断するようにシグナルを送信します。
私はBoost.Threadを使用してLinuxに取り組んでおり、その下でpthreadsを使用しています。私のシステムには NPTL があります。
答えは「いいえ」だと思いますが、何か不足しているかどうかを確認したいと思います。
linux - (pthreads ではなく) NPTL を使用するために何か特別なことをする必要がありますか?
pthread の代わりに NPTL を使用するには、何か特別なことをする必要がありますか? 私はカーネル2.3.23を使用しています...
おそらくNPTLで動作しているいくつかのコードを見ているので質問していますが、それにはまだpthreadsが含まれていることがわかります.AFAIKには、スレッドレベルでのシグナル処理、偽のウェイクアップなどの問題があります.
pthreads - ubuntu x86_64 アーキテクチャ用にソースから glibc-2.13 をコンパイルして使用する
libc/NPTL の修正版をビルドしようとしています。私のubuntuバージョンは、バージョン2.13であることを示しています。別の libc/nptl/libpthreads を作成し、既存の glibc/libpthreads を置き換えることなく、動的読み込みを使用して既存のアプリケーション (Apache など) に使用したいと考えています。カーネル プログラミングと動的読み込みは初めてです。動的読み込み機能を使用して libc/NPTL を使用する方法の例を教えてください。