高速化を支えるソフトウエア技術の3つ目は、デーモンの動作タイミングを複数ノード間で同期させることだ。
並列プログラムの実行は、数百~数万ノードで二人三脚をするようなもので、各ノードが同期して動作できなければ高い性能を実現できない。ノード間の同期を妨げる要因として、OSや運用ソフトウエアが動かすデーモンがある。デーモンが不定期に動くと、並列プログラムの動作の外乱(システムノイズ)となり、数万ノードで動く並列プログラムでは大きな性能低下につながる。これは、デーモンの動作によって特定ノードの処理が遅くなり、その間、他の全ノードが待たされてしまうためである(図14)。
これを回避するため、「京」ではOSの機能を拡張し、デーモンの動作タイミングをノード間で同期させている。ノード間の同期には、Tofuインターコネクトのバリア同期機能を利用する。このためデーモンによる並列プログラムへの悪影響を一定以下に抑えられる。
共有ファイルシステム
最後に、ファイルへの高速アクセスを実現するファイルシステムについて説明しよう。
前述のように、「京」のファイルシステムはローカルファイルシステムとグローバルファイルシステムの2階層で構成している。どちらも、複数台のファイルサーバーでファイルを分散管理する「Lustreファイルシステム」を拡張したファイルシステムだ。数万台の計算ノードから、数10Pバイトにも及ぶファイルへのアクセスを扱うことができる。
ローカルファイルシステムでは、 Tofuインターコネクトを介して計算ノードに接続された数千個のIOノードをファイルサーバーとして使用する。MPI-IOなどのAPIを利用し、多数のIOノードで並列にIO処理を実行し、Pバイトオーダーの大規模ファイルを高速にアクセスできる。IOノードには複数のRAID装置を接続してあり、ファイルを複数のディスクに分散して記録することで高速なIO性能を実現している。
ハードウエアの故障時にもシステムを継続して運用できるように、RAID装置の接続は二重化している。RAIDコントローラなどが故障した場合、OSのドライバが異常を検知して二重化されたもう一方のIOパスに切り替える。
このとき、ファイルシステムやアプリケーションは故障を意識することなく動作を継続できる。この切り替えは、Linuxのマルチパスドライバの機能により実現している。
ローカルファイルシステムでは、複数の並列プログラムが同時にIO処理を実行する際の工夫も施してある。具体的には、プログラムを実行する計算ノードがローカルファイルシステムのIOノード・ディスクを占有するようにファイルを配置する(図15)。こうすることで、複数の並列プログラムのファイルアクセスがネットワーク上で競合しなくなる。
「京」は、これまでにない規模の超並列システムである。様々な利用・運用環境を想定して、ハードウエアとソフトウエアのそれぞれの技術を進化・発展させ、世界最高クラスの性能・機能を持つシステムを目指して開発を進めてきた。今後は完成に向けて全力を尽くすとともに、利用しやすいシステムを目指して開発・整備を進めていく。