タグ

ブックマーク / www.iij.ad.jp (3)

  • マルチコアでスケールするようになったHaskell | IIJの技術 | インターネットイニシアティブ(IIJ)

    Glasgow Haskell Compiler(GHC)は、関数型言語Haskellの主要コンパイラです。GHCは(並列性に加えて)並行性を主要な目的として長年開発されてきました。そのため、GHCには、 軽量スレッド(グリーンスレッド) マルチコア用の軽量スレッド・スケジューラ マルチコア上での効率的なメモリアロケータ マルチコア用のガベージコレクタ など、マルチコアで簡潔に並行性を実現するための部品が揃っています。そこで、Haskellで Web サーバなどの並行プログラムを書き、GHC でコンパイルすれば、マルチコア環境でスケールするのを期待したくなります。 残念ながら GHC 7.6.3 までは、入出力を司るIOマネージャの実装にボトルネックがあり、マルチコア環境でスケールしませんでした。エール大学のAndreas Voellmy氏と筆者は、IOマネージャの改良に取り組み、その成果

    マルチコアでスケールするようになったHaskell | IIJの技術 | インターネットイニシアティブ(IIJ)
  • 高速WebサーバMighttpdのアーキテクチャ | IIJの技術 | インターネットイニシアティブ(IIJ)

    IIJ-II技術研究所では、2009年の秋からMighttpd(mightyと読む)というWebサーバの開発を始め、オープンソースとして公開しています。この実装を通じて、マルチコアの性能を引き出しつつ、コードの簡潔性を保てるアーキテクチャにたどり着きました。ここでは、各アーキテクチャについて順を追って説明します。 ネイティブ・スレッド 伝統的なサーバは、スレッド・プログラミングという手法を用いています。このアーキテクチャでは、1つのコネクションを1つのプロセスかネイティブ・スレッドが処理します。 このアーキテクチャは、プロセスやネイティブ・スレッドを生成する方法で細分化できます。「プール」方式では、あらかじめ複数を起動しておきます。例としては、Apacheのpreforkというモードが挙げられます。「都度」方式では、コネクションを受け取るたびに生成します。このアーキテクチャの利点は、制御を

    高速WebサーバMighttpdのアーキテクチャ | IIJの技術 | インターネットイニシアティブ(IIJ)
  • Web表示の高速化を実現するSPDYとHTTP/2.0の標準化 | IIJの技術 | インターネットイニシアティブ(IIJ)

    はじめに SPDY(スピーディと読みます)は、GoogleがWebの表示を高速化するために開発した、新しいプロトコルです。新しいと言っても、今後普及が見込まれるような新技術ではなく、既に実用化され多くの方が日常的に利用しています。 現在ChromeやFirefox、Operaのブラウザを使われている方は、Googleのサービスやtwitterにアクセスしていると、実は全く気付かないうちに、このプロトコルを利用しています。 SPDYは2010年6月にリリースされたChromeのバージョン6安定版からデフォルトで有効になっており、Chrome利用者はこの新技術を3年以上も利用していることになります。 一般のユーザはSPDYを使っているかどうか、どうしたらわかるのでしょうか? Chromeでは、"SPDY Indicator"という便利な拡張機能を提供しています。また同種のツールは、Firefo

    Web表示の高速化を実現するSPDYとHTTP/2.0の標準化 | IIJの技術 | インターネットイニシアティブ(IIJ)
  • 1