タグ

fsyncに関するyassのブックマーク (5)

  • ファイルに書きこみを行ったらかならず fsync しよう - にょきにょきブログ

    通常、なんの考えも無しにプログラムがファイルに書きこみを行った後、運悪くシステムがクラッシュするとファイルが失われる可能性がある。通常のファイル書き込みはファイルに書き込んでいるように見えて実はバッファがメモリ上に蓄えているだけだからだ。このメモリ上に蓄えられた、いずれストレージに書き込むデータのことをダーティページと言う。何もしなくてもダーティページに書きこまれたデータはカーネルが定期的にストレージに書き込むのだが、若干のタイムラグがある。この間にクラッシュするとデータが失われるわけだ。データが書き込んだ直後、すぐストレージに書き出したい場合は fsync システムコールを呼ぶ必要がある。 C や C++ といった低レイヤーを扱う言語なら fsync を呼ぶだけで良いが、Java のような高級言語でどうやって fsync を発動させればよいか。 通常のファイル書き込み 下記のような一般的

    ファイルに書きこみを行ったらかならず fsync しよう - にょきにょきブログ
  • Overwriting is much faster than appending

    Writing small volume of data (Bytes-MBs) with sync (fsync()/fdatasync()/O_SYNC/O_DSYNC) is very common for RDBMS and is needed to guarantee durability. For transactional log files, sync happens per commit. For data files, sync happens at checkpoint etc. Typically RDBMS does syncing data very frequently. In this case, overwriting is much faster than appending for most filesystems/storages. Overwrit

  • Why buffered writes are sometimes stalled

    Many people think buffered write (write()/pwrite()) is fast because it does not do disk access. But this is not always true. Buffered write sometimes does disk access by itself, or waits for some disk accesses by other threads. Here are three common cases where write() takes longer time (== causing stalls). 1. Read Modify Write Suppose the following logic. Opening aaa.dat without O_DIRECT/O_SYNC,

    Why buffered writes are sometimes stalled
    yass
    yass 2014/03/11
    " 1. write() does disk read when needed. To avoid this issue you need to append a file, not overwrite. Or use OS page aligned writes.   2. write() may be blocked for "stable page writes". To avoid this issue you need to use newer Linux kernel supporting disabling stable page writes. "
  • Ubuntu 12.04 への移行資料 - Cybozu Inside Out | サイボウズエンジニアのブログ

    日頃の作業はもっぱら Ubuntu 上で行っている山泰宇です。 ご存知の方も多いと思いますが、Ubuntu は Canonical Ltd. で開発されている Linux ディストリビューションです。Debian Gnu/Linux をベースにしていますが、必ず2年に一度の長期サポート版(LTS)をリリースしてくれるので、安定して運用していくにはありがたい存在です。 その LTS ですが、最新は去年4月にリリースされた Ubuntu 12.04 です。さらに一つ前が Ubuntu 10.04 となります。サイボウズでは Ubuntu 12.04 がリリースされた去年の4月から9月まで半年をかけて、Ubuntu 10.04 のシステムを 12.04 に移行しました。移行プロジェクトについては機会があれば別に書こうと思います。 今回は、移行作業の過程で作成した調査資料を公開します。 資料は別

    Ubuntu 12.04 への移行資料 - Cybozu Inside Out | サイボウズエンジニアのブログ
  • 「ディスク」への書き込み性能を上げるには - (ひ)メモ

    ユーザランドのプロセスから見たwrite(2)は、ページキャッシュのおかげで(メモリが潤沢にある環境下では)ブロックされない(待たされない)というのは id:naoya さんの丁寧な解説のおかげでわかると思うのですが、一方、fsync(2)などの実際にディスクに書き込む処理、 あと id:hirose31 さんがコメントしてますが、アプリケーションが SYNC モードでファイルを開いてたり、明示的に fsync() してたりするとそこで wait が発生するのは言わずもがな、です。 Linux I/O のお話 write 編 - naoyaのはてなダイアリー The fsync() function does not return until the system has completed that action or until an error is detected. fsync

    「ディスク」への書き込み性能を上げるには - (ひ)メモ
    yass
    yass 2012/03/09
    " ユーザランドのプロセスから見たwrite(2)は、ページキャッシュのおかげでブロックされない / fsync(2)などの実際にディスクに書き込む処理は「ディスク」自身が『書き込みが終わったよ』というまでブロック "
  • 1