Top > PostgreSQL

性能

GPGPU

その他

fsyncへの2つの間違った期待

1: fsyncが失敗した場合、次のfsyncのタイミングで失敗したdirty pageは再度書き込まれる

実際には・・・最初のfsyncに失敗したらデータはpage cacheから削除される。なので、次のfsyncはリトライしない。 さらに、これは、ファイルシステムによって挙動は変わる。ext4は、dirty dataをpage cacheにcleanとして残すし、xfsは捨てる。

2: 複数のファイルディスクリプタがある場合(例えばマルチプロセスの時)、一つのプロセスでfsyncが失敗したら、他のプロセスでも同じようにエラーとなる

実際には・・最初のプロセスだけがエラーとなる。その際、ファイルはcloseされopenされる。さらに、これはkernel versionによって挙動は異なる。 BSDでも同じように発生するけど、FreeBSD、illumosでは起きない。

関連


Reload   Diff   Front page List of pages Search Recent changes Backup Referer   Help   RSS of recent changes
Last-modified: Sun, 17 Feb 2019 19:24:32 JST (1894d)