Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SAP Sybase SQL Anywhere 16.0 » SQL Anywhere サーバ データベース管理 » SQL Anywhere データベース接続 » SQL Anywhere データベースサーバ » SQL Anywhere のスレッド化

 

Windows と Linux でのワーカ

Windows と Linux の場合、ワーカは「ファイバー」と呼ばれる軽量スレッドを使用して実装されます。ファイバーを利用した実装によって、オペレーティングシステムスレッドのスケジューラーでワーカを先取りでスケジュールするのではなく、協調的にスケジュールできます。その結果、ファイバー間の切り替えをより詳細に制御できるようになります。データベースカーネルは、プロセッサのアフィニティを最大にして各ワーカの実行優先度を密接に制御するようにファイバーをスケジュールします。

ファイバーは、オペレーティングシステムスケジューラーに依存しないため、他のアクティビティの完了を待機しているときは、制御を別のファイバーに明示的に譲ります。たとえば、ファイバーで実行中のタスクにおいて、I/O 操作の完了を待機するなどの理由でブロックが必要になると、ファイバーは制御を解放して他のファイバーに譲ります。元のファイバーを実行しているスレッドは、カーネルを介した切り替えを行うことなく、即座に別のファイバーを選択して実行を開始できます。ファイバーがブロックしたが制御を譲らなかった場合、そのファイバーを実行しているスレッドがブロックされ、他のファイバーがそのスレッドで実行できなくなります。複数のスレッドがファイバを実行している場合は、待機中のファイバを実行しているスレッドだけがブロックされます。他のスレッドはブロックされず、ファイバを実行できます。

Windows と Linux プラットフォームには、少なくとも、データベースサーバの最大同時実行性設定 (-gnh オプションで指定) で求められた数と同数のファイバーが存在します。データベースサーバは、サーバの実行中に、現在のサーバマルチプログラミングレベルに対応する、これらのファイバーのサブセットを利用します。ファイバーごとに、オペレーティングシステムはスタックのアドレス領域を予約する必要があります。各ファイバーに必要なスタックのサイズは、-gss サーバオプションの設定によって異なります。

ネットワークサーバで必要な実行スタックのアドレス領域のサイズは、最大マルチプログラミングレベルに比例します。

 参照