オルタナティブ・ブログ > 森崎修司の「どうやってはかるの?」 >

計測できそうでできない多くのこと。エンピリカル(実証的)アプローチで。

本当に「マルチコアプロセッサのコア増加のペースが早すぎてそれをフルに活かすソフトウェアが現れない」のだろうか?

»

表題はガートナーのWeb(プレスのページ)に掲載されているアナリストの予測。1つのプロセッサの中に複数のコアを収容していく技術はどんどん発達し、1つのプロセッサ(ソケットに装着される物理的なもの)のコアの数を約2年で2倍のペースで増えていくだろうと予測している。同時に、そのペースでそれを使い切るようなソフトウェアを開発できないリスクがある、という予測もしている。このページは知人から教えてもらった。

前のエントリでも書いたが、ネットワーク機器を仮想化し、負荷に応じて自身でスケールしていくシステムができれば、ハイパースレッディングのような仮想的なプロセッサや、コアが非常に早いペースで増えていっても、それを使いきれると考えている。CNETの記事にあるように、Googleのように冗長化された(それほど信頼性の高くない)PCを束ねて高性能、高信頼性するタイプのシステムでは特に有益だ。もちろん、あまりに集約しすぎるとストレージをはじめとしたハードウェアの信頼性の問題で大量のサーバが同時に欠損してしまうので限度はあるだろう。

誰もがGoogleと同様のスケーラビリティが必要になるとは思わないが、計算リソースが必要になれば、自身で仮想ネットワーク機器を作成し、それを介した複数の仮想計算機を瞬時に生成することができるようになれば状況はかわるだろう。これまで難しかったタイプの新たなインデクシングやハッシングの方法を考えることができるだろうし、これによって回避できる性能問題はいくつでも存在するだろう。また、プログラミング言語から新たな仮想計算機の生成やネットワーク機器の生成が比較的迅速にできるようになれば、今までの考え方がかわるだろう。

たとえば、

aHost = new Host();
aSwitch = new Switch();
aSwitch.setUplink(coreSwitch.port[12]);

aSwitch.port[1].connect(aHost);
aSwitch.boot();
aHost.boot();

のように、プログラムからネットワーク機器や仮想計算機を生成することには、現段階では大きな技術的課題は存在しないのではないだろうか。これまでのデータベースで難しかったようなハッシングが可能になるのではないだろうか。あるいはもう既に検討、実現されていて私が知らないだけという状態にあるのではないかとも思う。

後半、私の妄想全開になってしまったが、2年で2倍のペースで増えていくコアを使い切るためのソフトウェア技術がないというのは、限定的には正しいがそうでない用途もある、というところではないだろうか。

Comment(5)