HOME > Scutumを支える技術 > Scutum技術ブログ

技術者ブログ

クラウド型WAF「Scutum(スキュータム)」の開発者/エンジニアによるブログです。
金床“Kanatoko”をはじめとする株式会社ビットフォレストの技術チームが、“WAFを支える技術”をテーマに幅広く、不定期に更新中!

2013年2月

          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28    
Scutum開発者/エンジニアによる技術ブログ WAF Tech Blog
▼ 2013年2月 アーカイブ

テキストデータ処理を簡単にマルチコア対応にするJavaフレームワーク、MCPの実装

2013年2月14日

はじめに

ログファイルなどの行指向のテキストデータを加工するタスクでは、多くの場合、awkやsed、あるいはperlなどのプロセスをパイプで組み合わせる、いわゆるワンライナー的なアプローチがよく使われます。また、ワンライナーでは収まりきらないようなちょっと込み入った処理を行いたい場合などは、各自得意なプログラミング言語でコードを書くことになります。このとき、多くの場合は、標準入力から1行ずつデータを読み込み、順番に処理していくというアプローチになるかと思います。

しかしこのようなアプローチには大きな欠点があります。それはCPUリソースを1コア分しか消費できないということです。grepのような簡単な処理で、CPUリソースではなくI/Oがボトルネックになる場合はそれでもまったく問題ありませんが、CPUがボトルネックになるような場合には、1つのコアだけでなく、マルチコアを使うことによって、処理が数倍速くなる可能性があります。現在ではサーバ・クライアントを問わずほとんどのマシンが4コアあるいはそれ以上のコアを搭載していますので、シングルコアのパワーしか活かせない加工処理は多くの場合ナンセンスであると言えるでしょう。

今回のエントリでは、筆者が開発した、Javaを用いて手軽にマルチコアを生かしたデータ処理を可能にするためのフレームワーク、MCP(MultiCore Parser)を紹介します。MCPはマルチスレッドを用いて複数のコアを生かした並列処理を可能にするものですが、ユーザがデータを加工するために書くコードからは、その詳細は隠蔽されています。そのため、ユーザはスレッドやロックについてはまったく意識することなく、従来のように各行に対して行う処理を簡潔に記述するだけで、自動的にスケールする処理が実現できるようになっています。MCPはオープンソースです。

続きを読む ≫ テキストデータ処理を簡単にマルチコア対応にするJavaフレームワーク、MCPの実装