« マルチスレッド貧乏性(4) | Main | マルチスレッド貧乏性(6) »

December 14, 2016

マルチスレッド貧乏性(5)

さてもさて、冗談はさておき...偶然というか、時代の趨勢というか、アホかっ!というか、マルチスレッド好きが好きにマルチスレッドできる便利な口實が出來つつある。

CPU時閒の殘りカスをいくら掻き集めたって、所詮カスはカスと思っていたのだが、システムはスレッドという名の殘りカスで動作することを前提とすることが主流になり始め、スレッドにより多くのCPU時閒を割り當てる必要があるというので、CPUGPUがどんどん高性能化し、どんどん高集積化し、ナノプロセスルールなどというものが登場した。それによりCPUの低クロック化傾向とマルチコア化がどんどん進んだおかげで、個々のスレッドの性能がどんどん惡くなり始めた。これは私自身も身をもって經驗したのだが、ひと昔前のデュアルコアCPUを積んだサーバよりも、最新鋭6コア、8コアCPUのサーバの方が、バッチ處理などにかかる時閒が目に見えて增大してきているのだ。

この流れは、システムソフトウェアの生產性向上とも呼應して、OSの高機能化、Javaなどのアプリケーション構築環境の充實により、ただでさえ殘りカスのCPU時閒が壓迫されつつある。その上、生產性向上のための對策がよりダメなプログラマを大量生產したため、ソフトウェアの性能はさらに惡くなる一方となった。

整理すると、ひと昔前よりも1スレッドの性能がハードウェア的にもソフトウェア的にも惡くなり、畫面制御もデータベースもバッチ處理もマルチスレッドで組まないとさっぱり性能が出ない、という狀況になった。1スレッドでシリアルにガリガリ動く處理をいくら效率化しても、8コア16スレッドのCPUでは16分の1の性能しか出ない勘定になる。殘りの16分の15CPUリソースを使う唯一の方法が、ソフトウェアのマルチスレッド化ということになってしまったのだ。そしてそのような狀況下でも、高度な整合性を保ってきたGNU Emacsまでもがついにスレッド機能を實裝せざるを得ないハメになったというわけだ。

それでも、優秀かつ賢いSEやプログラマが、マルチスレッドなんてしなくたって、こうすればCPUを餘すことなく使いこなせるぜぇ~と涼しい顏して言えば、それで濟んだのかもしれないが、そんなエース級が客前にチョロチョロ出てくることはなく、ソフトハウスの社運をかけてパッケージ開發に勤しんでいる。スレッドが殘りカスなら、人材も殘りカスということで、そのあおりを食うのはいつもエンドユーザということになる。というのが世の常なのかもしれない。

おかげで誰に後ろ指刺されることなくマルチスレッドしまくれる情勢にはなっているが、問題はそれをするにふさわしいSEやプログラマが居るかどうかだ(笑)

|

« マルチスレッド貧乏性(4) | Main | マルチスレッド貧乏性(6) »

Comments

Post a comment



(Not displayed with comment.)


Comments are moderated, and will not appear on this weblog until the author has approved them.



TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/74224/64622169

Listed below are links to weblogs that reference マルチスレッド貧乏性(5):

« マルチスレッド貧乏性(4) | Main | マルチスレッド貧乏性(6) »