【原创】O_SYNC 同步标志导致的I/O速度的巨大差异

myscp 程序 中open系统调用指定了 O_SYNC 标志位

[@more@]

open(argv[2],O_WRONLY|O_CREAT|O_TRUNC|O_SYNC,S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP)

用myscp 拷贝600M左右的程序所花的时间:
[root@fsever FreeBSD]# du -m ./*
25 ./6.2-RELEASE-i386-bootonly.iso
574 ./6.2-RELEASE-i386-disc1.iso
640 ./6.2-RELEASE-i386-disc2.iso
189 ./6.2-RELEASE-i386-docs.iso
[root@fsever FreeBSD]# time myscp ./6.2-RELEASE-i386-disc1.iso ./test.iso

real 13m21.320s
user 0m0.184s
sys 0m5.936s
[root@fsever FreeBSD]#


mycp 程序中open 系统调用没有指定O_SYNC 标志位
open(argv[2],O_WRONLY|O_CREAT|O_TRUNC,S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP)

用mycp 拷贝同样600M左右的文件所花的时间:
[root@fsever IBM.Lotus.Domino.Server.v7.0]# time mycp ./IBM.Lotus.Domino.Server.v7.0.ISO-TBE.bin ./test.bin

real 0m25.629s
user 0m0.152s
sys 0m2.608s


所以:要求写同步系统调用I/O花费比update 守护进程自动同步的I/O要大非常多!

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7437037/viewspace-977394/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/7437037/viewspace-977394/

你可能感兴趣的:(【原创】O_SYNC 同步标志导致的I/O速度的巨大差异)