タグ

プロセス間通信に関するstmsyのブックマーク (3)

  • 共有メモリとファイルシステム――その2

    mmap(2)で共有メモリを実装する方法はいくつかある。前回、各方法ごとに性能を検証したところ、大きな違いは見られなかった。そこで今回は共有するデータサイズを100MBにして、あらためて性能の違いを調査していく。(編集部) 性能測定、データサイズを大きくしたらどうなる? 第6回ではmmap(2)を使って共有メモリを実装する方法を紹介した。mmap(2)で共有メモリを実装する場合、いくつかの選択肢があり、それぞれ性能にどういった違いがあるのかを調べた。 今回は前回の話に引き続き、共有するデータのサイズを変えた場合に性能にどのような違いが発生するのかを調査していく。 mmap(2)はメモリへのアクセスがそのままファイルへのアクセスになるところにその特徴がある。ファイルをマッピングしなくても利用できるが、来的にはファイルに対してマッピングを実施するものだ。前回はファイルにマッピングするケースと

    共有メモリとファイルシステム――その2
  • 共有メモリとファイルシステム――その1

    今回は、mmap(2)で共有メモリを実装すると処理能力の向上が見込めること、そしてその実装方法にはいくつもの選択肢があることを紹介し、次回以降の比較につなげていく。(編集部) 共有メモリ活用方法のバリエーション 第5回では、プロセス間でデータをやりとりする方法としてパイプpipe(2)と共有メモリmmap(2)の双方を取り上げ、それぞれの利点・欠点について紹介した。 パイプpipe(2)を使う方法は実装がシンプルだし、概念としても分かりやすい。どのタイミングでロックがかかるかも明確だ。一方、小さいサイズのデータを何度もやりとりするようなケースでは、大量のread(2)/write(2)システムコールが発生し、効率が悪いことも紹介した。 共有メモリmmap(2)を使う方法は、pipe(2)/read(2)/write(2)と比べて実行速度の面で利点がある。共有メモリを使うと、それぞれ独立した

    共有メモリとファイルシステム――その1
  • システムコールを減らすシステムコール

    前回まで、mmap(2)によるコピー処理の高速化について紹介してきた。mmap(2)にはまた、システムコールが呼ばれる回数を削減し、処理速度を高速化するという効果もある。今回は、共有メモリの観点から、その機能を紹介する(編集部) システムコールを減らすシステムコール mmap(2) 前回まではコピープログラムを例に挙げながら、mmap(2)を使うことでコピー処理を高速化できることを紹介してきた。連載第1回目で説明したように、処理速度を高速化したければ、基的にはシステムコールは少ない方がよい。システムコールを実行すれば、その分プログラムとカーネルの間でのデータのコピーや処理の切り替えが発生し、それだけ処理速度が遅くなる。 しかし、例外的に処理を高速化できるものもある。その代表格がmmap(2)だ。mmap(2)はシステムコールだが、このシステムコールを利用すると、最終的にはシステムコールが

    システムコールを減らすシステムコール
  • 1