■仕様説明
通常のスクリプトの場合は、1つのスクリプトは1つのスレッドで実行されるため、コア数を増やしてもスクリプトの処理速度を向上させることは期待できません。
ただし、1スクリプトを複数スレッドで実行した場合、処理速度を向上させることが期待できます。
例えば以下の方法があります。
PSPスクリプトの場合は、読み取り、変換、書き込みがそれぞれ別のスレッドで実行されます。
スレッドコンポーネントに含まれる処理が、マルチスレッドで実行されます。
- Multi-Stream Converter を使用した場合
Multi-Stream Converter(マルチストリーミングコンバータ)の機能である[結合]、[集計]、[ソート]処理を使用した場合には、CPUのコア数(ハイパースレッディング含む)と同数のスレッドで並列に処理が実行されます。
通常のスクリプトでは、CPUのクロック数を上げることで、スクリプトの処理速度を向上させることが期待できます。この場合、CPUがボトルネックになっている場合に効果が期待できますが、メモリや接続先のデータソースがボトルネックになっている場合、効果が期待できません。
CPU がボトルネックになっていることが確実な場合のみ、クロック数を上げることをご検討下さい。
■補足
スレッド数を上げることにより、スレッド領域が確保できなくなり「java.lang.OutOfMemoryError: unable to create new native thread」が発生する場合がございます。
このため、スレッドを増やす場合、上記エラーが発生しない範囲でスレッドを増やす開発をご検討ください。
なお、上記エラーが発生した場合のDataSpiderとしての対処方法は以下となります。
- PSP 処理を無効化し、スレッド生成数を減らす
- (OS が 32bit である場合) DataSpider の ヒープメモリを小さくし、スレッドを生成する領域を確保する