Oracle® Developer Studio 12.5: パフォーマンスライブラリユーザーズガイド

印刷ビューの終了

更新: 2016 年 6 月
 
 

同期メカニズム

POSIX/Oracle Solaris スレッドモデルの 1 つの特性は、実行中のアプリケーションのバインドされているスレッドがアイドル状態のときに CPU を放棄することであり、そのために、共有 (登録超過) 環境で、優れたスループットとリソース使用状況を実現します。デフォルトで、コンパイラ並列化コードのバインドされているスレッドは、アイドル状態のときにスピン待機するため、システムに CPU リソースを競争するほかのアプリケーションがある場合に、ほぼ最適なスループットを発揮できます。この場合、環境変数 SUNW_MP_THR_IDLE を使用して、並列ジョブのそのシェアの完了後のスレッドの動作を制御できます。

my_host% setenv SUNW_MP_THR_IDLE value

ここで、value は、spin または sleep n s または sleep n ms のいずれかを指定でき、spin がデフォルトです。

sleep は、n 単位のスピン待機後にスレッドをスリープさせます。待機単位は秒 (s、デフォルトの単位) またはミリ秒 (ms) です。引数なしの sleep は並列タスクの完了後すぐにスレッドをスリープさせます。SUNW_MP_THR_IDLE に不正な値が含まれているか、または設定されていない場合、spin がデフォルトとして使用されます。

次の設定では、スレッドがそれぞれスピン待機 (デフォルトの動作) するか、スリープする前に 2 秒間スピンするか、またはスリープする前に 100 ミリ秒間スピンします。Oracle Developer Studio パフォーマンスライブラリルーチンを使用しても、コードのスピン待機動作は変更されません。

% setenv SUNW_MP_THR_IDLE spin
% setenv SUNW_MP_THR_IDLE 2s
% setenv SUNW_MP_THR_IDLE 100ms