Namazu-users-ja(旧)


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: NMZ.slogについて



  Message-Id: <3E8AA84E.5A6ED719@xxxxxxxxxxxxxxx>
  Date:       Wed, 02 Apr 2003 18:07:26 +0900
  From:       Tadamasa Teranishi <yw3t-trns@xxxxxxxxxxxxxxx>
  Subject:    [namazu-users-ja] Re: NMZ.slogについて

  | > slogの1行はそんなに長くない(BUFSIZ以下)と仮定すれば
  | > stdioが1発のwriteシステムコールで処理してくれるはずで
  | > そうすればKernelの方が排他制御してくれるので
  | > 2つのログが混ざるなんてことはないとおもいます。
  | 
  | ないとは思いますが、fprintf() というか stdio というかの実装依存な
  | 部分ではないかと思います。
  | 
  | ロックするのが筋だと思いますが、ロックしなくてもBUFSIZ以下なら
  | 確実に大丈夫(保障された動作)だということでしょうか?
  | # だとすると、ちょっと私の認識に誤りがあるので教えていただければ
  | # 幸いです。

(たいていのOSでは)writeシステムコールがあった時点でそのファイルをライ
トロックします。これはたしかPOSIX方面の仕様だったと聞いてますが調べた
ことはないです。

データベースなど、巨大ファイルに複数スレッドで書き込みたいプログラムで
は、このロックがあるために同時に1スレッドしか書き込めなくて性能が出な
いらしいです。一部のOS(たとえばSolaris9とか)では同時書き込みができるよ
うに改良されてるみたいですが確認してません。

そういえば、以上の話はローカルファイルシステムの話で
NFSで複数クライアントから同時書き込みがあった場合で
writeシステムコールで一気に1MBも書くような場合はだめです。

--
鯉江英隆 <hide@xxxxxxxx>