[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[jfriends-ml 11775] Re: 垂直スケーリングト Java プロセス



村山です.

#並列処理には五月蠅いです.
##Subjectは「Javaプロセス」じゃなくて「Javaスレッド」だと思う.

> 前々回(1月)の読書会の時に「プロセッサーを増やしてもJavaでは
> パフォーマンスがある個数で頭打ちになる」との話題が出たと思う
> のですが、そのあたりの話の情報源となるポインターなどを教えて
> いただけますでしょうか?
直接の関係はないですし,少し古い文献ですが,次などは参考になると思います.
「LinuxにおけるJava、スレッドおよびスケジューリング機能」
http://www-6.ibm.com/jp/developerworks/linux/java2.html

なんとIBM developerWorksの「Linux」のコーナーにあります.

後は台数効果は並列処理の大きなテーマの一つなので,その関係の論文を
あたればいくらでも見つかると思います.

> そのときの話題では、「スレッドがCPUで分離して実行された場合、
> 同期処理が足かせになって。。」という話題をよりアーキテクチャー
> の説明を交えあったと思うのですが。。

一般論として,並列処理においてCPU数を増やしてもそれに比例した性能を
得ることは極めて困難です.大抵はそれより低い性能しか得られませんし,
一定数を超えると横這いになるのも珍しくありません.この制約はJavaであろうと
他の言語であろうと関係なく存在します.むしろJavaではマルチスレッドが安全に
利用できる分,他の言語よりは細粒度並列処理に適しているとさえ言えます.

アーキテクチャの問題となると,いわゆる擬似共有(false sharing)の問題の
ことでしょうか.
http://www.netgene.co.jp/java/concurrentTips.html#falseSharing

ただし擬似共有がボトルネックになるのは,かなり特殊な場合(要するにとてつ
もなく下手糞なプログラムの場合)に限られます.通常はむしろ単純に同期その
ものが持つ,本質的な性質の方が問題です.

reorderingの制約が厳しくなるのでコンパイラの最適化の阻害要因になるだとか,
並列度が下がるために同時に実行できるスレッド数が少なくなる,同期そのもの
の通信コストなどが考えられます.今後はJMMの改訂によって,さらに厳しくな
ることが予想されています.
http://gee.cs.oswego.edu/dl/jmm/cookbook.html