Thread: AW: AW: AW: AW: WAL does not recover gracefully from ou t-of -dis k-sp ace
AW: AW: AW: AW: WAL does not recover gracefully from ou t-of -dis k-sp ace
From
Zeugswetter Andreas SB
Date:
> >> This seems odd. As near as I can tell, O_SYNC is simply a command to do > >> fsync implicitly during each write call. It cannot save any I/O unless > >> I'm missing something significant. Where is the performance difference > >> coming from? > > > Yes, odd, but sure very reproducible here. > > I tried this on HPUX 10.20, which has not only O_SYNC but also O_DSYNC AIX has O_DSYNC (which is _FDATASYNC) too, but I assumed O_SYNC would be more portable. Now we have two, maybe it is more widespread than I thought. > I attach my modified version of Andreas' program. Note I do > not believe his assertion that close() implies fsync() --- on the machines I've > used, it demonstrably does not sync. Ok, I am not sure, but essentially do we need it to sync ? The OS sure isn't supposed to notice after closing the file, that it ran out of disk space. Andreas
Zeugswetter Andreas SB <ZeugswetterA@wien.spardat.at> writes: >> I attach my modified version of Andreas' program. Note I do not >> believe his assertion that close() implies fsync() --- on the >> machines I've used, it demonstrably does not sync. > Ok, I am not sure, but essentially do we need it to sync? The OS sure isn't > supposed to notice after closing the file, that it ran out of disk space. I believe that out-of-space would be reported during the writes, anyway, so that's not the issue. The point of fsync'ing after the prewrite is to ensure that the indirect blocks are down on disk. If you trust fdatasync (or O_DSYNC) to write indirect blocks then it's not necessary --- but I'm pretty sure I heard somewhere that some versions of fdatasync fail to guarantee that. In any case, the real point of the prewrite is to move work out of the transaction commit path, and so we're better off if we can sync the indirect blocks during prewrite. >> I tried this on HPUX 10.20, which has not only O_SYNC but also O_DSYNC > AIX has O_DSYNC (which is _FDATASYNC) too, but I assumed O_SYNC Oh? What speeds do you get if you use that? regards, tom lane