ááťá˝ááşáŻááşáááş cloud á áá áşááťáŹá¸áá˝ááş ááąááŹáááŻáážáąáŹááşáážáŻ áááşááźáááşáážáŻááᯠááŻááąááááźáŻáᏠáĄááźáąááśáĄááŹááťáŹá¸ááᯠááŹá¸áááşááźáąáŹááşá¸ ááąááťáŹá áąáááş áááááááŻááşááᯠá ááşá¸áááşáááş ááŻáśá¸ááźááşáá˛áˇáááşá á፠ááąááŹáááşáááşáááşááźá˛áážáŻáážááˇáşáááşáááşááąáŹ áĄáŹáááśááťááşááťáŹá¸ááᯠááŹá¸áááşáááşáĄáá˝ááş (áááŻáááŻáááşáážáŹ á áá áşááťááşáá˝ááşááźáŽá¸ááąáŹááş ááąááŹááážááááŻááşááźáąáŹááşá¸ áĄáŹáááśááťááş) áááş ááťá˝ááşáŻááşáááŻáˇáĄáŹá¸ NMVe disk ááťáŹá¸ááᯠááąá¸ááŤá ááťá˝ááşáŻááşáááş áĄáąáŹááşá፠áĄááá ááąáŹááşááťááşááťáá˛áˇáááş- ááąááŹááąá¸áááş áĄááááˇáşááąá¸áááˇáşáĄááťáááşááž ááťááşá áŽá¸áá˝áŹá¸ááąáŹ ááąááŹááᯠááááşá¸áááşá¸áááˇáş ááźáŹá¸ááśáááŻáˇ á áŹááąá¸ááźáŽá¸áááˇáşáááŻááşáĄáąáŹááş áááˇáşáá˝ááşá¸á ááşá¸á áŹá¸áááş áááŻáĄááşááŤáááşá áááŻáˇááąáŹáşá ááááŻááááşáĄááťáŹá¸á áŻáá˝ááşá á áá áşááąáŤáşáááŻáážáŻááťáŹá¸áááş áĄááťááşáĄáááşááąá¸áááş áĄáá˝ááşááŻáśááźáŻáśá á˝áŹ áĄááŻáśá¸ááźáŻááŤáááşá
á¤ááąáŹááşá¸ááŤá¸áá˝ááşá áááŻááş API ááťáŹá¸ááž ááśáˇáááŻá¸ááąá¸ááąáŹ ááąáážááşááąááŹáááŻáážáąáŹááşáážáŻ ááášáááŹá¸ááťáŹá¸ááᯠááťá˝ááşáŻááş ááąáˇááŹááŤáááşá LinuxááŽáážáŹ áĄááŹáĄáŹá¸ááŻáśá¸á áááŻá¸áážááşá¸áááˇáşáááşáááŻáˇ áááşááááş- ááááŻááááşá command ááᯠááąáŤáşááŤáááş write()á á¤áĄááááˇáşááąáŹáşáááŻááşááąáŹááşááťááşááźáŽá¸ááźáąáŹááşááźáŽá¸ááąáŹááşá ááąááŹááᯠáá
áşááşááąáŤáşáá˝ááş ááŻáśááźáŻáśá
á˝áŹááááşá¸áááşá¸ááŹá¸áááşááźá
áşáááşá ááŤááąáááˇáş write() áĄáááŽááąá¸áážááşá¸ááąááŹááᯠRAM áá˝ááşáážáááąáŹ kernel cache áááŻáˇááŹáá°á¸áá°áááşá ááąááŹááᯠáá
áşááşáááŻáˇ ááąá¸áááş á
áá
áşáĄáŹá¸ áá˝ááşá¸áĄáŹá¸ááąá¸áááşáĄáá˝ááşá áĄááťááŻáˇááąáŹ ááąáŹááşáááş ááášáááŹá¸ááťáŹá¸ááᯠáĄááŻáśá¸ááźáŻáááŤáááşá
ááąáá°ááťáĄáŹá¸ááźááˇáşá á¤áĄááźáąáŹááşá¸áĄááŹáááş ááťá˝ááşáŻááşá
áááşáááşá
áŹá¸ááąáŹ ááąáŤááşá¸á
ááşáá
áşááŻáá˝ááş ááťá˝ááşáŻááşáááşáá°áá˛áˇááŹááťáŹá¸áážááˇáş áááşáááŻááşááąáŹ áážááşá
áŻáĄá
áŻá
áŻááźá
áşáááşá áĄááąá¸ááźáŽá¸ááŻáśá¸áĄááźáąáŹááşá¸ áĄáááŻááťáŻááşááźáąáŹáááş ááąáážááşáááşááśáˇáá˛áˇ data storage ááᯠá
áŻá
ááşá¸áááŻáˇáĄáá˝ááş command áááŻááŻáśá¸áááŻáˇ áááŻáĄááşááŤáááş fdatasync() áááŻáˇáááŻááş áĄááśááźááˇáş áááŻááşááťáŹá¸áááŻáá˝ááˇáşááŤá O_DSYNC. ááŻááşáážáá
áşááŽáááŻáˇ ááąááŹááťáŹá¸ááźá
áşááťááşááŻáśáĄááźáąáŹááşá¸ áááŻáááŻááąáˇááŹáááş á
áááşáááşá
áŹá¸ááŤáá ááźááˇáşáážáŻááŤá ááąáŹááşá¸ááŤá¸á
write() function áááŻáĄááŻáśá¸ááźáŻááźááşá¸ááĄááşášááŤáááşááťáŹá¸
á
áá
áşááąáŤáşáááŻáážáŻ write() á
áśáááşáážááşááŹá¸áááşá áááŻááşááąáŹáşááźááťááşááąá¸áá°ááś ááąááŹááąá¸áááş ááźááŻá¸áááşá¸áážáŻáĄááźá
áşá áĄááŻááşááźáŽá¸ááźáąáŹááşáĄáąáŹááşááźááşááŤá
áąá write() data read operations ááťáŹá¸áááş ááááşá ááąá¸ááŹá¸áá˛áˇáááˇáş bytes áĄáááĄááťááᯠááźááşááąá¸áááŤáááşá POSIX á
áśáážáŻááşá¸á áááşáááŻááşáááˇáşáĄáááŻááşá¸)á ááŻáśáážááşáááŻááşááŻááşááąáŹááşáážáŻááťáŹá¸áážááˇáş thread ááťáŹá¸ááĄááźááşáĄáážááşááŻáśáˇááźááşáážáŻáááŻááşááŹáĄáááŻááşá¸áá˝ááşá thread áážá
áşááŻáá
áşááŻá
áŽáááş á¤ááŻááşááąáŹááşááťááşááťáŹá¸áááŻááąáŤáşáááŻááŤáá ááąáŤáşáááŻáážáŻáá
áşááŻá
áŽáááş áĄááźáŹá¸ááąáŤáşáááŻáážáŻáááŻááşááąáŹááşáážáŻááŽáááŻáˇáŚá¸áááşáááˇáşáĄááťááŻá¸áááşááťáŹá¸áĄáŹá¸ááŻáśá¸áááŻááźááşááááşááŻááąáŹáşááźááŹá¸áááˇáşáážááşááťááşáá
áşááŻááŤáážááááşá ááŹáĄááťááŻá¸áááşááž ááá˝áąáˇáá°á¸á áááşá¸áááş áááŻááş I/O ááŻááşááąáŹááşááťááşááťáŹá¸áĄáŹá¸ááŻáśá¸áá˝ááş áĄááŻááşááŻááşááąááąáŹ áĄáááşá¸áĄááźá
áşáĄááąáŤáş ááąáŹáˇááşááťááááşáᯠááąáŹááşááťááşááťá
áąáááşá
á
á
áşáááşááąá¸ááᯠáááŻáááŻáááŹá¸ write() áĄááŻááźá°ááŻáśá¸ááŹá¸ áááşá¸áááŹáááŻááşá¸áĄáááąáŹáˇ ááŻááşááŤáááşá ááąááŹáááşááźááşá¸ ááŻááşááąáŹááşááťááşááťáŹá¸áááş ááąá¸ááŹá¸áááˇáşáĄááŹááťáŹá¸áĄáŹá¸ááŻáśá¸ááᯠáááŻáˇáááŻááş áá
áşááŻááťáž ááźááşááąá¸áááŤáááşá write(). ááŤááąáááˇáş á
á
áşáááşááąá¸ write()á
áśááťáááşá
áśáá˝ážááşá¸áá˛áˇáĄáᎠááąá¸áááŻááşá¸áááťážááᯠááťááąá¸ááźáŽá¸ áĄááŻáśá¸ááááąá¸á
ááŹááááŻááŤáá°á¸á áĄááťááşáĄáááşá áá
áşá
áááşáá
áşáááŻááşá¸áᏠááąá¸ááŹá¸áá˝ááˇáşáážááááşá áĽáááŹáĄáŹá¸ááźááˇáşá áá°ááŽááąáŹáááŻááşááąáŹáşááźááťááşááąá¸áá°áážááąáŹáşááźááąáŹáááŻááşáá
áşááŻáááŻáˇ 1024 bytes ááąáŤááşá¸áááˇáşáááˇáşáá
áşááŻá
áŽáá˝ááş áááŻááşáááŻááşááŻááşáá˝ážááˇáşáážáŻáážá
áşááŻáážááááşá á
áśááážáŻááąáŹááˇáşáážááźááˇáşááťážááş á
áŹááąá¸ááźááşá¸ááŻááşáááşá¸áá
áşááŻá
áŽáááş áááŻááşáá˝ááş áá
áşáááŻááşáᏠááąáŤááşá¸áááˇáşáááŻááşáááˇáşáĄá፠ááááşááᯠáááşááśáááŻááşáááşááźá
áşáááşá á¤ááŻááşááąáŹááşááťááşááťáŹá¸áááş áĄááŻááźá°ááŻáśá¸áĄááźá
áş áááşáááşáááşáážáááąáááşááźá
áşááźáŽá¸á áááŻáˇááąáŹáş áááşá¸áááŻáˇááźáŽá¸ááŻáśá¸ááźáŽá¸ááąáŹááşá áááŻááşáááŻáˇ ááąá¸ááŹá¸ááąáŹ áĄááťááşáĄáááşááťáŹá¸áááş áážáŻááşáá˝áąá¸áá˝áŹá¸áááşááźá
áşáááşá Stack Overflow áá˝ááş á¤áĄááźáąáŹááşá¸áĄááŹáážááˇáşáááşáááşá áĄáá˝ááşá
áááşáááşá
áŹá¸áá˝ááşááąáŹááşá¸ááąáŹ áá˝áąá¸áá˝áąá¸áážáŻááźá
áşáááşá
fsync() áážááˇáş fdatasync() ááŻááşááąáŹááşááťááşááťáŹá¸
ááąááŹááᯠdisk áááŻáˇ flush áááşáĄáá˝ááşáá°ááŻáśá¸áááşá¸áááşá¸áážáŹ function áááŻááąáŤáşáááŻááźááşá¸ááźá
áşáááşá . á¤ááŻááşááąáŹááşááťááşáááş á
ááşáááşáááşáážáŻá
áá
áşááᯠáááşáážáşááž áá
áşááşáááŻáˇ ááźáŻááźááşááŹá¸ááąáŹ áááąáŹááşááťáŹá¸áĄáŹá¸ááŻáśá¸ááᯠáá˝ážáąáˇáááŻááşá¸áááşá áááşá¸áá˝ááş áááŻááşá áááşááŹááąááŹáĄáŹá¸ááŻáśá¸ (áááşááąáŹááşááťáááşá áááŻááşáá˝ááşá¸ááśááťáááşá á
áááşááźááˇáş) ááŤáááşáááşá á¤áááşááŹááąááŹáááş áážáŹá¸áážáŹá¸ááŤá¸ááŤá¸ áááŻáĄááşáááşáᯠááťá˝ááşáŻááşááŻáśááźááşáááşá áááŻáˇááźáąáŹááˇáş áááşá¸áááş áááˇáşáĄáá˝ááş áĄááąá¸áááźáŽá¸ááźáąáŹááşá¸ ááááŤá ááŻááşááąáŹááşááťááşááᯠáááşáĄááŻáśá¸ááźáŻáááŻááşááŤáááşá fdatasync()á áĄáááŻá፠áĄááąáŤáş fdatasync() á¤ááŻááşááąáŹááşááťááşá ááŻááşááąáŹááşáážáŻáĄáá˝ááşá¸á áááŻáá˛áˇáááŻáˇááąáŹ áááşááŹááąááŹáááŹáááᯠáá
áşááşáá˝ááş ááááşá¸áááşá¸ááŹá¸ááźáąáŹááşá¸á áááşá¸áááş "áĄáąáŹááşááŤááąááŹáááşáážáŻááźááşá¸áááŻááşáᏠááŻááşááąáŹááşááťááşááťáŹá¸ááᯠáážááşáááşááąáŹááŻááşááąáŹááşáážáŻáĄáá˝ááş áááŻáĄááşáááş" áᯠááąáŹáşááźááŹá¸áááşá á¤áááşáážáŹ áĄáááŽááąá¸áážááşá¸áĄááťáŹá¸á
ᯠáĄááąá¸ááŹá¸áááˇáşáĄááŹááźá
áşáááşá
á¤ááąááŹáá˝ááş ááźá
áşááąáŤáşááŹáááŻááşáááˇáş ááźáżááŹáá
áşááŻáážáŹ ááźá
áşáááŻááşááźáąáážáááąáŹ ááťááŻáˇáá˝ááşá¸áážáŻáá
áşááŻááźáŽá¸ááąáŹááş áááŻááşááᯠáážáŹáá˝áąáˇáááŻááşáááşáᯠá¤ááášáááŹá¸ááťáŹá¸á áĄáŹáááśááťááşáááąá¸ááźááşá¸ááźáąáŹááˇáşááźá
áşáááşá áĄáá°á¸áááźááˇáşá áááŻááşáĄáá
áşáá
áşááŻáááşááŽá¸ááąáŹáĄááŤá ááŻááşá¸ááąáŤáşáááŻáááˇáşáááşá fsync() áááşá¸áá˝ááşááŤáážáááąáŹáááşá¸áá˝ážááşáĄáá˝ááşá áááŻááşááŤá ááťááşááťááźáŽá¸ááąáŹááşá á¤áááŻááşááážááᯠááąáŤáşááŹáááŻááşáááşá áááşá¸áĄáá˝ááşáĄááźáąáŹááşá¸ááźááťááşáážáŹ UNIX áĄáąáŹááşáá˝ááş hard links ááťáŹá¸áááŻáĄááŻáśá¸ááźáŻááźááşá¸ááźáąáŹááˇáşá directory áĄááťáŹá¸áĄááźáŹá¸áá˝ááşáááŻááşáá
áşááŻáááşáážááááŻááşááąáŹááźáąáŹááˇáşááźá
áşáááşá áááŻáˇááźáąáŹááˇáş ááąáŤáşááąáŹáĄááŤá fsync() áááŻááşáá
áşááŻáááş áááşáááˇáş directory data áááŻáááşá¸ disk áááŻáˇ áážááşá¸ááŻááşááááşááᯠáááááş áááşá¸áááşá¸ááážáááŤá á¤áĄááźáąáŹááşá¸áááŻáááŻáááşáážáŻáááŻááşááŤáááşá) ext4 áááŻááşá
áá
áşáááş ááŻááşááąáŹááşáááŻááşá
á˝ááşá¸áážáááŻáśááááşá áĄááŻáśá¸ááźáŻáááş fsync() áááşáááŻááşááŹáááŻááşááťáŹá¸ááŤáážáááąáŹ áááşá¸áá˝ážááşááťáŹá¸áááŻáˇá áááŻáˇááąáŹáş áááşá¸áááş áĄááźáŹá¸áááŻááşá
áá
áşááťáŹá¸áážááˇáş áĄáááşáááźáąáááŻááşááŤá
á¤ááášáááŹá¸ááᯠááá°ááŽááąáŹ áááŻááşá
áá
áşááťáŹá¸áá˝ááş áá˝á˛ááźáŹá¸á
á˝áŹ áĄááąáŹááşáĄáááşááąáŹáşáááŻááşáááşá ááŤááŻáśá¸áá˛áˇáááş ext4 áážááˇáş XFS áááŻááşá
áá
áşááťáŹá¸áá˝ááş áááşáááˇáş disk ááŻááşááąáŹááşááťááşááťáŹá¸ááᯠáĄááŻáśá¸ááźáŻááźáááşááᯠááąáˇááŹáááşá áážá
áşááŻá
ááŻáśá¸áááş áááŻááşááťáŹá¸á áĄááźáąáŹááşá¸áĄááŹááťáŹá¸áážááˇáş áááŻááşá
áá
áşááťáŹáááşáážá
áşááŻá
ááŻáśá¸áĄáá˝ááş ááŻáśáážááşáĄáááŻááşá¸ááąá¸áááş command ááťáŹá¸ááᯠFUA (Force Unit Accessá disk áááŻáˇ áááŻááşáááŻááşá
áŹááąá¸ááźááşá¸á cache áááŻááťáąáŹáşááźááşááźááşá¸) ááᯠááťáŹáááşáááŻáˇ ááąá¸ááŹá¸ááźááşá¸ááźááˇáş áááşáážáşáááŻáááşáážáŹá¸ááźáŽá¸ áá˝ááşááąáŤááşááᯠááŻááşááąá¸áááşá áĄááąáŹááşá¸áĄáááşááĄááťááşááᯠáĄáááşááźáŻáááşáĄáá˝ááş áááşá¸áááŻáˇáááş áááşá¸ááᯠááŻááşááąáŹááşáááŻááşáá˝ááşáážááááşá FUA áááŻáááśáˇáááŻá¸ááąáŹ drive ááťáŹá¸áá˝ááşáááşá¸áááş cache flush áážá
áşááŻááźá
áşááąáŤáşá
áąáááşá ááťá˝ááşáŻááşáá
ááşá¸áááşáážáŻááťáŹá¸á áááşá¸áááŻááźááá˛áˇáááşá fdatasync() áááşá¸áááşá¸ááźááşáááşá fsync(). áážááážáŹááąáŤáˇá blktrace áá˝ážááşááźáááşá fdatasync() ááťáŹá¸ááąáŹáĄáŹá¸ááźááˇáş disk áá˝ááş data áááşá¸ááŤá¸áááş (ext4 áá˝ááş fsync() 20 KiB áá˛áˇááąá¸áááşá fdatasync() - 16 KiB)á áááŻáˇáĄááźááş XFS áááş ext4 áááşáĄáááşá¸áááşáááŻááźááşáááşáááŻááťá˝ááşááąáŹáşáááá˛áˇáááşá ááąá¸ááąá¸ blktrace áĄá˛ááŤááᯠáážáŹáá˝áąáˇáááŻááşáá˛áˇáááşá fdatasync() ááąááŹááťážáąáŹáˇáááşá¸ááąáŹáá
áş (XFS áá˝ááş 4 KiB)á
fsync() ááᯠáĄááŻáśá¸ááźáŻááąáŹáĄá፠áááąááŹááąáŹ áĄááźáąáĄááąááťáŹá¸
áááąááŹááąáŹ áĄááźáąáĄááąááŻáśá¸áááşááᯠáá˝áąá¸ááźááˇáşáááŻááşáááşá fsync()ááŤáááşáá˝áąáˇáá˝áąáˇááźáŽá¸ááźáŽá
áááŻáá˛áˇáááŻáˇááąáŹ áĄááźá
áşáĄááťááşáááş áááá ááŻáážá
áşáá˝ááş áááááŻáśá¸ ááźá
áşáá˝áŹá¸áá˛áˇáááşá áááŻáĄááťáááşáá˝ááşá áááŻááşáĄááźáąáŹááşáĄááźáŹá¸ááᯠdisk áááŻáˇá
áŹááąá¸ááąááŤá Firefox 2008 interface áááş "frozen" ááźá
áşáááşá ááźáżááŹáážáŹ áĄááşááŹááąáˇá
áşááᯠáĄááąáŹááşáĄáááşááąáŹáşááźááşá¸áááş áááşá¸ááĄááźáąáĄááąáážááˇáşáááşáááşáááˇáş áĄááťááşáĄáááşááťáŹá¸ááᯠááááşá¸áááşá¸áááş SQLite ááąááŹááąáˇá
áşááᯠáĄááŻáśá¸ááźáŻáá˛áˇááźááşá¸ ááźá
áşáááşá áĄááşááŹááąáˇá
áşáá˝ááş ááźá
áşááąáŤáşáá˛áˇááąáŹ ááźáąáŹááşá¸áá˛áážáŻáá
áşááŻá
áŽááźáŽá¸ááąáŹááşá ááŻááşááąáŹááşááťááşááᯠááąáŤáşáááşá fsync()áááşááźáááşááąáŹááąááŹááááşá¸áááşá¸ááźááşá¸áĄáá˝ááş ááąáŹááşá¸áá˝ááşááąáŹáĄáŹáááśááťááşááąá¸ááąáŹá áááŻáˇááąáŹááşáĄááŻáśá¸ááźáŻááąáŹ ext3 áááŻááşá
áá
áşáá˝ááşá ááŻááşááąáŹááşááťááş fsync() á
áá
áşáĄáá˝ááşá¸áážá "áá
áşáááşááąáŹ" á
áŹááťááşáážáŹááťáŹá¸áĄáŹá¸ááŻáśá¸ááᯠáááşááŻááşááźáŽá¸ áááşáááŻááşááŹáááŻááşáážááˇáş áááşáááŻááşááąáŹ áááŻááşááťáŹá¸ááŹáááá˛á áááŻáááŻáááşáážáŹ Firefox áá˝ááş áááŻááşáá
áşááŻááᯠáážáááşáááŻááşááźááşá¸áááş á
áášáááˇáşááťáŹá¸á
á˝áŹ ááźáŹáááŻááşáááˇáş ááśáááŻááşáá
áşáá
áşááŻáááŻáˇ ááąáᏠmegabytes ááᯠááąá¸áážááşá
áąáááŻááşáááşá ááťá˝ááşááąáŹáş ááŹá¸áááşáááąáŹááş ááźáżááŹáá˛áˇ áĄááźáąááŤá materialá áááş database áážááˇáş áĄááŻááşáĄáŹá¸ asynchronous background tasks áááŻáˇ áá˝ážáąáˇáááşááźá
áşáááşá áááŻáááŻáááşáážáŹ Firefox áááş áĄáážááşááááşáááŻáĄááşáááşáááş áááŻáááŻáááşá¸ááźááşááąáŹáááŻáážáąáŹááşáážáŻáááşááźá˛áážáŻáááŻáĄááşááťááşááťáŹá¸áááŻáĄááąáŹááşáĄáááşááąáŹáşáááşáĄááŻáśá¸ááźáŻáá˛áˇááźáŽá¸ ext3 áááŻááşá
áá
áşáĄááşášááŤáááşááťáŹá¸ááᏠá¤ááźáżááŹáááŻáááŻáááŻáááŻá¸áá˝áŹá¸á
áąáááşá
ááŻáááááźáżááŹá 2009 áážáŹááźá
áşáá˛áˇáááşá áááŻáˇááąáŹááşá á
áá
áşááťááşááťááźáŽá¸ááąáŹááşá áĄáá
áşáááşááŽá¸ááŹá¸ááąáŹáááŻááşááťáŹá¸á
á˝áŹáááş ááŻá-áĄáážááşááźá
áşáááşáá°ááąáŹáĄááťááşáážááˇáş ext4 áááŻááşá
áá
áşáĄáá
áşááĄááŻáśá¸ááźáŻáá°ááťáŹá¸áááş ááźáŻáśáá˝áąáˇáá˛áˇáááąáŹáşáááşá¸á áááşá¸áááş ext3 áááŻááşá
áá
áşááąáŹááşá¸áá˝ááş ááźá
áşáááŹááŤá ááááşá
áŹáááŻááşáá˝ááşá ext3 áááş áĄááŹááťáŹá¸á
á˝áŹááᯠáážáąá¸áá˝áąá¸á
áąáááˇáş disk ááąáŤáşáážá ááąááŹááťáŹá¸á
á˝áŹááᯠáááşáá˛áˇáááŻáˇ á
á˝ááˇáşáá
áşáá˛áˇáááşááᯠááźáąáŹááźáá˛áˇáááşá fsync(). áĄááźáąáĄááąáááŻá¸áááşá
áąáááşá ext4 áááş ááŽá¸ááźáŹá¸áááŻááşáá
áşááŻáážááˇáşáááşáááŻááşáááˇáş "áá
áşáááşááąáŹ" á
áŹááťááşáážáŹááťáŹá¸áááŻáᏠáááşáážáŹá¸ááąá¸áááşá áĄááźáŹá¸áááŻááşááťáŹá¸á ááąááŹááťáŹá¸áááş ext3 áááş áĄááťáááşáááŻááźáŹá
á˝áŹ áážááşááŹááşáá˛áá˝ááş áážáááąáááşá á
á˝ááşá¸ááąáŹááşáááşááᯠááźážááˇáşáááşáááş áááşá¸ááᯠááŻááşááąáŹááşáá˛áˇáááş (ááŻáśáážááşáĄáŹá¸ááźááˇáşá ááąááŹáááş á¤áĄááźáąáĄááąáá˝ááş á
áášáááˇáş 30 ááźáŹááąáááşááźá
áşááźáŽá¸á áááşá¸ááᯠáĄááŻáśá¸ááźáŻá áááş configure ááŻááşáááŻááşááŤáááşá ; á¤áĄááźáąáŹááşá¸áĄááŹáážááˇáş áááşáááşá áááşáááŻáááŻáááážááááŻááşáááş)á áááŻáááŻáááşáážáŹ ááťááşá
áŽá¸áážáŻáá
áşááŻááźáŽá¸ááąáŹááş ááąááŹáĄááťáŹá¸áĄááźáŹá¸ ááŻáśá¸áážáŻáśá¸áá˝áŹá¸áááŻááşáááşá á¤ááźáżááŹáĄáá˝ááş ááźáąáážááşá¸áááşá¸áážáŹ áĄááŻáśá¸ááźáŻáááşááźá
áşáááşá fsync() áááşááźáááşááąáŹááąááŹáááŻáážáąáŹááşáážáŻáááŻááąá¸ááąáŹááşáááşáážááˇáşááĄáąáŹááşááźááşáážáŻááťáŹá¸ááĄááťááŻá¸áááşááťáŹá¸áážáááşáááŻááşáááťážááŹáá˝ááşáááşáááŻáĄááşááąáŹ application ááťáŹá¸áá˝ááşá ááŻááşááąáŹááşááťááş fsync() ext4 áá˛áˇ ext3 áááş áĄááťáŹá¸ááźáŽá¸ áááŻááááąáŹááşáááşá á¤ááťááşá¸áááşáážáŻááĄáŹá¸áááşá¸ááťááşáážáŹ ááááşááá˛áˇáááŻáˇ áááşá¸ááĄááŻáśá¸ááźáŻáážáŻáááş ááááŻááááşááťáŹá¸áááˇáşáá˝ááşá¸ááźááşá¸áá˛áˇáááŻáˇááąáŹ ááŻááşááąáŹááşááťááşáĄááťááŻáˇááᯠáážáąá¸áá˝áąá¸á
áąááźááşá¸áááşááźá
áşáááşá ááŽáĄááźáąáŹááşá¸áĄááąá¸á
áááşááźááˇáşááŤá и .
ááááááźáżáᏠfsync(), 2018 áá˝ááşá
áááşáá˛áˇáááşá áááŻáˇááąáŹááş PostgreSQL áááąáŹááťááşáááąáŹááşáĄáá˝ááşá¸áá˝ááşá áááşá¸áááş function áááŻáá˝áąáˇáážááá˛áˇáááşá fsync() error ááźáŻáśáá˝áąáˇáááźáŽá¸ áááşá¸áááş "áá
áşáááşááąáŹ" á
áŹááťááşáážáŹááťáŹá¸ááᯠ"áááˇáşáážááşá¸" áĄááźá
áş áĄáážááşáĄááŹá¸ááźáŻááŤáááşá áááŻáˇááźáąáŹááˇáş áĄáąáŹááşááŤááąáŤáşáááŻáážáŻááťáŹá¸ fsync() áĄá˛ááŽááᯠá
áŹááťááşáážáŹáá˝áąáá˛áˇ ááŹááž áááŻááşááŤáá˛áˇá áááŻáˇáĄáá˝ááşááźáąáŹááˇáş ááźáŻááźááşááŹá¸ááąáŹ á
áŹááťááşáážáŹááťáŹá¸ááᯠáážááşááŹááşáá˝ááş ááááşá¸áááşá¸ááŹá¸ááźáŽá¸ áá
áşááşáááŻáˇ áááşááąáŹáĄááŤááž áááąá¸ááŤá ááąááŹáĄááťááŻáˇááᯠáá
áşááşáááŻáˇ ááąá¸ááťáááşáᯠáĄáááŽááąá¸áážááşá¸á áá°áááąáŹááźáąáŹááˇáş áááşá¸áááş ááááˇáşááąá¸ááŻáášááá
áşááŻááźá
áşááąáŹáşáááşá¸á áĄáážááşááááşááąáŹáˇ áááŻáááŻáˇááźá
áşáááşáááŻááşááąá áĄá˛ááŽááᯠááťááşáá˝ááşáááşá fsync() áážáŹá¸ááŤáááşá ááŽáááŻáĄááźáąáĄááąááťááŻá¸áážáŹ application á ááźáżááŹááᯠáááŻááşááťááşáááŻáˇ ááŹáážááŽá¸ááŤá¸ áááŻááşáááŻááşááŤáá°á¸á ááŽáááşáááŻááşá¸áážáŹ ááŽáááŻááźá
áşááŹáá˛áˇáĄá፠PostgreSQL áá˛áˇ áááźáŹá¸ application áá˝áą ááťááşá
áŽá¸áá˝áŹá¸áááşá "Applications ááťáŹá¸áááş fsync Failures ááž ááźááşáááşááá°áááŻááşáááŹá¸" ááąáŹááşá¸ááŤá¸áá˝ááşá á¤ááźáżááŹááᯠáĄááąá¸á
áááşááąáˇááŹááŹá¸áááşá ááąáŹááąáŹáááş á¤ááźáżááŹáĄáá˝ááş áĄááąáŹááşá¸ááŻáśá¸ááźáąáážááşá¸ááťááşáážáŹ Direct I/O ááᯠáĄááśááźááˇáş áĄááŻáśá¸ááźáŻáááşááźá
áşáááşá O_SYNC áááŻáˇáááŻááş áĄááśáážááˇáş O_DSYNC. á¤ááťááşá¸áááşáážáŻááźááˇáşá á
áá
áşáááş ááŽá¸ááźáŹá¸ááąááŹááąá¸ááźááşá¸áááŻááşáᏠááŻááşááąáŹááşááťááşááťáŹá¸ááᯠááŻááşááąáŹááşááŹáá˝ááş ááźá
áşááąáŤáşááŹáááŻááşáááˇáş áĄáážáŹá¸áĄáá˝ááşá¸ááťáŹá¸ááᯠáĄá
áŽáááşááśáááşááźá
áşááąáŹáşáááşá¸á á¤ááťááşá¸áááşáážáŻáá˝ááş áĄááşááşááŽááąá¸áážááşá¸áááş ááźáŹá¸ááśááťáŹá¸ááᯠá
áŽááśáááˇáşáá˝á˛áááş áááŻáĄááşáááşá áááşá¸áĄááźáąáŹááşá¸áááŻáááŻáááşááŤá и .
O_SYNC áážááˇáş O_DSYNC áĄááśááťáŹá¸ááᯠáĄááŻáśá¸ááźáŻá áááŻááşááťáŹá¸áááŻáá˝ááˇáşááźááşá¸á
ááášáááŹá¸ááťáŹá¸áĄááźáąáŹááşá¸ áá˝áąá¸áá˝áąá¸áážáŻáááŻáˇ ááźááşáá˝áŹá¸ááźááŤá
ááŻáˇ LinuxáááşááźáááşááąáŹááąááŹáááŻáážáąáŹááşáážáŻáááŻááąááťáŹá
áąáááşá áĄáá°á¸áááźááˇáşá ááťá˝ááşáŻááşáááŻáˇáááş áĄááśáĄááŻáśá¸ááźáŻáážáŻáĄááźáąáŹááşá¸ ááźáąáŹááąááŤáááş O_SYNC áááŻáˇáááŻááş áĄááś O_DSYNC á
áá
áşááąáŤáşáááŻáážáŻááᯠáĄááŻáśá¸ááźáŻá áááŻááşááťáŹá¸áááŻáá˝ááˇáşáááˇáşáĄá፠. á¤ááťááşá¸áááşáážáŻááźááˇáşá ááąááŹáá
áşááŻá
áŽááᯠáá˝ááşáááˇáşáá
áşááŻá
áŽááźáŽá¸ááąáŹááş ááŻááşááąáŹááşááá˛áˇáááŻáˇ ááŻááşááąáŹááşáááşá write() á
áá
áşáááş áĄááŽá¸ááŽá¸ áĄááááˇáşááąá¸áááşá fsync() и fdatasync()á áĄáááŻá፠áááşá¸ááᯠ"Synchronized I/O File Integrity Completion" áážááˇáş "Data Integrity Completion" ááŻááąáŤáşáááşá á¤ááťááşá¸áááşáážáŻá áĄááááĄáŹá¸ááŹááťááşáážáŹ ááąááŹáááŻááşááŹáážáŻáážáá
áąáááş á
áá
áşááąáŤáşáááŻáážáŻáá
áşááŻáááşá¸áááŻáᏠááŻááşááąáŹááşáááş áááŻáĄááşááźáŽá¸ áážá
áşááŻáááŻááşá፠(áĽáááŹ- write() и fdatasync()) á¤ááťááşá¸áááşáážáŻá áĄááááĄáŹá¸áááşá¸ááťááşáážáŹ áááşáááŻááşáᏠfile descriptor áááŻáĄááŻáśá¸ááźáŻá ááąá¸ááŹá¸ááźááşá¸ááŻááşáááşá¸áĄáŹá¸ááŻáśá¸ááᯠáá
áşááźááŻááşáááşá¸ááŻááşááąáŹááşáááşááźá
áşááźáŽá¸á áááşá¸áááş áĄáááŽááąá¸áážááşá¸ááŻááşááᯠáááşááąáŹááşáááŻááşáážáŻááᯠáááˇáşáááşáááŻááşáááşá
O_DIRECT áĄááśááźááˇáş áááŻááşáááŻááş I/O ááᯠáĄááŻáśá¸ááźáŻááźááşá¸á
á
áá
áşááąáŤáşáááŻáážáŻ open() áĄááśáááŻááąáŹááşááśááŤáááşá O_DIRECTáááşáááşáážáŻá
áá
áş áááşáážáşááᯠááťáąáŹáşááźááşáááşá I/O ááŻááşááąáŹááşááťááşááťáŹá¸ááᯠááŻááşááąáŹááşáááşá áá
áşááşáážááˇáş áááŻááşáááŻááşáĄááźááşáĄáážááşááŻááşááąáŹááşáááş ááŽáááŻááşá¸ááźáŻááŻááşááŹá¸áááşá á¤áĄááŹáááş ááťáŹá¸á
á˝áŹááąáŹááá
ášá
ááťáŹá¸áá˝ááş ááááŻááááşáážááŻááşááąá¸ááąáŹ write commands ááťáŹá¸ááᯠdisk áážááˇáşáĄááŻááşááŻááşáááşáááşáá˝ááşááąáŹ command ááťáŹá¸áĄááźá
áş áááŻááşáááŻááşááŹááŹááźááşááźááşá¸ááᯠáááŻáááŻáááşá áááŻáˇááąáŹáş ááąááŻááťáĄáŹá¸ááźááˇáş á¤ááášáááŹá¸áááş ááŻááşáááşá¸ááąáŹááşááŹááťáŹá¸áĄáá˝ááş áĄá
áŹá¸áááŻá¸áážáŻáááŻááşááŤá fsync() áááŻáˇáááŻááş fdatasync(). áĄáážááşáážáŹ disk áááŻááşáááŻááşááŻááşáááŻááşáááşá áĄááťááşáĄáááşááąá¸ááŹá¸áááşáĄáá˝ááş áááˇáşááťáąáŹáşááąáŹ command ááťáŹá¸á áááŻáááŻá¸áááşáážáŹ áĄááťááŻáˇááąáŹ áĄáá°á¸ááá
ášá
ááťáŹá¸áá˝ááş I/O ááŻááşááąáŹááşááťááşááťáŹá¸áááş áĄááśáááŻáĄááŻáśá¸ááźáŻáááˇáşáĄá፠ááŻááşááąáŹááşáááşá O_DIRECT, áááŻá¸áᏠbuffered operations áá˛áááŻáˇá á¤ááźáżááŹáááŻááźáąáážááşá¸áááş áĄáá˝ááşáá°ááŻáśá¸áááşá¸áááşá¸áážáŹ áááŻááşááťáŹá¸áááŻáá˝ááˇáşáááş áĄááśáááŻáĄááŻáśá¸ááźáŻááźááşá¸ááźá
áşáááşá O_DSYNCáááŻáááŻáááşáážáŹ á
áŹááąá¸ááźááşá¸ááŻááşáááşá¸áá
áşááŻá
áŽáááş ááąáŤáşáááŻáážáŻáá
áşááŻááźááˇáş ááŻááşááąáŹááşáá˝áŹá¸áááşááźá
áşáááşá fdatasync().
XFS áááŻááşá
áá
áşáááş áááźáŹááąá¸ááŽá "fast path" ááᯠáááˇáşáá˝ááşá¸áá˛áˇááźáąáŹááşá¸ áá˝áąáˇáážááááŤáááşá O_DIRECT|O_DSYNC- ááąááŹáážááşáááşá¸ááťáŹá¸á áĄáááşá block áááŻáĄááŻáśá¸ááźáŻá overwrite ááŻááşááŤá O_DIRECT|O_DSYNCáááŻáˇááąáŹááş XFS áááş áááşáážáşááᯠáááşáážáŹá¸ááźááşá¸áĄá
áŹá¸á á
ááşá áááşá¸ááᯠááśáˇáááŻá¸ááŤá FUA ááąá¸ááŹá¸áááˇáş áĄááááˇáşááᯠááŻááşááąáŹááşáááşááźá
áşáááşá utility ááᯠáĄááŻáśá¸ááźáŻá áááşá¸ááᯠááŤá
á
áşááąá¸áá˛áˇáááşá blktrace á
áá
áşáĄáá˝ááş Linux 5.4 /Ubuntu áá.ááá ááŽáááşá¸áááşá¸á áááŻááááąáŹááşáááˇáşááŤáááşá ááŹáááŻáˇáá˛áááŻááąáŹáˇ áá
áşááşáá˛ááᯠáĄáááşá¸ááŻáśá¸ááąááŹáá˝áąááąá¸ááźáŽá¸ áážá
áşááŻááŻááşáááˇáşáĄá
áŹá¸ áá
áşááŻáááşá¸áááŻáá˛ááŻáśá¸áááŻáˇá፠(áááşáážáşáááŻááąá¸ááźáŽá¸ ááááşááŻááşááźááşá¸)á áááˇáşááşáá
áşááŻáá˝áąáˇáááŻááşáááşá á¤ááášáááŹá¸áááŻáĄááąáŹááşáĄáááşááąáŹáşááąáŹ 2018 kernelá ᤠoptimization áááŻáĄááźáŹá¸áááŻááşá
áá
áşááťáŹá¸áá˝ááşáĄááŻáśá¸ááźáŻááźááşá¸áážááˇáş áááşáááşá áá˝áąá¸áá˝áąá¸áážáŻáĄááťááŻáˇáážáááŤáááşá áááŻáˇááąáŹáşááťá˝ááşáŻááşáááááąáŹááş XFS áááşáááşá¸áááŻáááŻáĄááťáááşáĄááááąáŹááşááśáˇááąá¸ááąáŹáá
áşááŻáááşá¸ááąáŹáááŻááşá
áá
áşááźá
áşáááşá
sync_file_range() ááŻááşááąáŹááşááťááş
Đ Linux á
áá
áşááąáŤáşáááŻáážáŻáá
áşááŻáážááááş áááşá¸áááş áááŻááşáá
áşááŻááŻáśá¸áááŻáááŻááşáᲠáááŻááşáá
áşáááŻááşá¸áááŻáᏠáá
áşááşáááŻáˇ áááşáážáŹá¸áááŻááşá
áąááŤáááşá á¤ááąáŤáşáááŻáážáŻáááş ááťáááşáááŻááşáážáŻáá
áşááŻáĄáŹá¸ á
áááşááźáŽá¸ ááźáŽá¸ááźáąáŹááşáááş áá
áąáŹááˇáşááŤá áááşáá˝ážááşá¸ááťááşáááŹá¸á sync_file_range() á¤áĄááááˇáşáááş "áĄáá˝ááşáĄáášáááŹááşááťáŹá¸" ááŻáááŻáááşá áááşá¸áááŻáĄááŻáśá¸ááźáŻáááşááĄááźáśááźáŻááŤá áĄááşášááŤáááşááťáŹá¸áážááˇáşáĄáášáááŹááşááťáŹá¸ sync_file_range() áĄáá˝ááşááąáŹááşá¸áá˝ááşá
á˝áŹ ááąáŹáşááźááŹá¸ááŤáááşá áá
ášá
ááşá¸ áĄáá°á¸áááźááˇáşá á¤ááąáŤáşáááŻáážáŻáááş kernel ááž "áá
áşáááşááąáŹ" ááąááŹááᯠdisk áááŻáˇáááşáážáŹá¸áááˇáşáĄá፠ááááşá¸ááťáŻááşáááş RocksDB áááŻáĄááŻáśá¸ááźáŻááŻáśááááşá áááŻáˇááąáŹáş áá
áşááťáááşáááşá¸áá˝ááş áááşááźáááşááąáŹááąááŹááááşá¸áááşá¸áážáŻááąááťáŹá
áąáááş áááşá¸áááŻáááşá¸áĄááŻáśá¸ááźáŻáááşá fdatasync()á áĄáááŻá፠RocksDB áá˝ááş á¤áĄááźáąáŹááşá¸áĄááŹáážááˇáş áááşáááşá á
áááşáááşá
áŹá¸áá˝ááş áážááşááťááşáĄááťááŻáˇáážááááşá áĽáááŹá ááąáŤáşáááŻááŻáśááááşá sync_file_range() ZFS áááŻáĄááŻáśá¸ááźáŻááąáŹáĄááŤáá˝ááşááąááŹááᯠdisk áááŻáˇáááŻááşááŤá áĄááŻáśá¸ááźáŻáá˛ááąáŹááŻááşáá˝ááş ááťá˝ááşáá˝ááşá¸ááťááşááťáŹá¸ ááŤáááşáááŻááşáááşáᯠáĄáá˝áąáˇáĄááźáŻáśá ááźáąáŹááźáááşá áááŻáˇááźáąáŹááˇáşá ááŻáśá¸áááááŻáĄááşáᲠá¤á
áá
áşááąáŤáşáááŻááźááşá¸ááᯠáĄááŻáśá¸ááźáŻááźááşá¸áááźáŻáááş ááťá˝ááşáŻááşáĄááźáśááźáŻáááŻááŤáááşá
ááąááŹáááşááźá˛áážáŻáážáá áąáááşáĄáá˝ááş á áá áşááąáŤáşáááŻáážáŻááťáŹá¸
áĄááźá˛áááźááş I/O ááŻááşááąáŹááşááťááşááťáŹá¸ááᯠááŻááşááąáŹááşáááş ááťááşá¸áááşáážáŻ ááŻáśá¸ááŻáážáááźáąáŹááşá¸ ááťá˝ááşáŻááş ááááŻáśá¸ááťáŻááşáááŻááşááŤáááşá áááşá¸áááŻáˇáĄáŹá¸ááŻáśá¸áááş function call áá
áşááŻáááŻáĄááşáááşá fsync() áááŻááşáááŻáááşááŽá¸áá˛áˇáááˇáşáááşá¸áá˝ážááşáĄáá˝ááşá ááťááşá¸áááşááŻáśááťáŹá¸áážáŹ-
- ááŻááşááąáŹááşááťááşááąáŤáşáááŻáážáŻ
fdatasync()áááŻáˇáááŻááşfsync()function ááźáŽá¸ááąáŹááşwrite()(ááŻáśá¸áááş áááŻááąáŹááşá¸ááŤáááşáfdatasync()). - áĄááśáá
áşááŻááźááˇáşáá˝ááˇáşááŹá¸ááąáŹ áááŻááşááąáŹáşááźááťááşáá
áşááŻáážááˇáş áĄááŻááşááŻááşááźááşá¸á
O_DSYNCáááŻáˇáááŻááşO_SYNC(áĄááśáážááˇáş áááŻááąáŹááşá¸áááşáO_DSYNC). - áá˝ážááşááźáŹá¸ááťááşáĄááŻáśá¸ááźáŻáážáŻ
pwritev2()áĄááśáážááˇáşáĄáá°RWF_DSYNCáááŻáˇáááŻááşRWF_SYNC(ááźá áşáááŻááşáááş áĄááśáá˛áˇRWF_DSYNC).
á á˝ááşá¸ááąáŹááşáááşáážááşá áŻááťáŹá¸
ááŤá áŻáśá ááşá¸á á áşááąá¸áá˛áˇááąáŹ áĄááťááŻá¸ááťááŻá¸ááąáŹááášáááŹá¸ááťáŹá¸á á á˝ááşá¸ááąáŹááşáááşááᯠáááŻáá ááŻááşááááŻááşá¸ááŹáá˛áˇááŤá áá°áááŻáˇáá˛áˇ ááŻááşáááşá¸áĄáážáááşáĄááŻááşáážáŹ áááááźáŻáááá˛áˇ áá˝áŹááźáŹá¸ááťááşáá˝áąá áĄáá˝ááşááąá¸áááşááŤáááşá áááŻáááŻáááşáážáŹ ááťá˝ááşáŻááşáážáŹá¸áááŻááşáááşá áĄááźáŹá¸áĄááźáąáĄááąááťáŹá¸áá˝ááş áá°ááŽááąáŹáĄááŹáááş ááá°ááŽááąáŹááááşááťáŹá¸ááᯠááźááááŻááşáááşáᯠáááŻáááŻáááşá ááááŚá¸á á˝áŹá á á˝ááşá¸ááąáŹááşáááşáááŻááááşááąáŹááşáááˇáşáĄááŹááťáŹá¸áĄááźáąáŹááşá¸á áááŻáˇááąáŹááş á á˝ááşá¸ááąáŹááşáááşááťáąáŹáˇáááşá¸á áąáááˇáşáĄááŹááťáŹá¸áĄááźáąáŹááşá¸ áá˝áąá¸áá˝áąá¸ááŤáááşá
- áááŻááşááąááŹááᯠáááşááąá¸ááźááşá¸áááş áááŻááşáá
áşááŻáááŻáˇ ááąááŹáááşáááˇáşááźááşá¸áááş áááŻááźááşáááş (á
á˝ááşá¸ááąáŹááşáááşááážááážáŻáááş 2-100%) áážááááŻááşááŤáááşá áááŻááşáá
áşááŻáááŻáˇ ááąááŹááᯠáá˝á˛ááťáááşááźááşá¸áááş á
áá
áşááąáŤáşáááŻááźáŽá¸ááąáŹááşáá˝ááşáááş áááŻááşá áááşááŹááąááŹááᯠáááşááąáŹááşá¸ááźáąáŹááşá¸áá˛áážáŻ áááŻáĄááşááŤáááşá
fallocate()áááŻáˇááąáŹáş á¤áĄááťááŻá¸áááşááąáŹááşáážáŻáááŹá áá˝á˛ááźáŹá¸áááŻááşáááşá áĄááąáŹááşá¸ááŻáśá¸á á˝ááşá¸ááąáŹááşáááşáĄáá˝ááş ááŻááşá¸ááąáŤáşáááŻáááş áĄááźáśááźáŻáĄááşááŤáááşáfallocate()áááŻáĄááşááąáŹááąááŹááᯠááźááŻáááşáá˝á˛ááąááąá¸áááşá áááŻáˇááąáŹááş á¤ááąááŹááᯠááŻáááźááˇáş áĄáááĄáááşá¸ááźááˇáşááźáŽá¸ ááąáŤáşáááŤáááşáfsync(). áááşá¸áááş áááŻááşá áá áşáážá áááşá ááşááááşáááŻáˇáážáŻááťáŹá¸ááᯠ"áá˝á˛ááąáááŹá¸ááąáŹ" áĄá áŹá¸ "áá˝á˛ááąáááşáážááşááźááşá¸" áĄááźá áş áĄáážááşáĄááŹá¸ááźáŻá áąáááşááźá áşáááşá áááşá¸áááş á á˝ááşá¸ááąáŹááşáááş áĄáááşá¸áááş (2%) áááˇáş áááŻá¸áááşáážáŻááᯠááąá¸áááşá áááŻáˇáĄááźááşá áĄááťááŻáˇááąáŹáá áşááťáŹá¸áááş áĄááźáŹá¸áĄááŹááťáŹá¸áááş ááááááąáŹááşáááşááąáŹááşáááşáááşáážáŻ áážáąá¸áá˝áąá¸áá˝áŹá¸áááŻááşáááşá áááŻáááŻáááşáážáŹ ááąááŹááᯠááŻáááźááˇáş ááźááˇáşáá˝ááşá¸ááźááşá¸ááźááˇáş ááááŹáááşáážáŹá¸ááąáŹ (100%) á á˝ááşá¸ááąáŹááşáááş áááŻá¸áááşáážáŻááᯠááźá áşááąáŤáşá áąáááŻááşáááşá áĄáá°á¸áááźááˇáşá áááşá¸áááş disks ááťáŹá¸áážááˇáşááźá áşáá˝áŹá¸áááŻááşáááşá (ááŤááááŹá¸áááşáááŻááşáá˛áˇáĄááťááşáĄáááşááŤá ááŤáá°áááŻáˇáááŻáĄáááşáááźáŻáááŻááşáá°á¸)á Storage áážáŹáááşá¸ áĄááŹá¸áá°ááŤáá˛á (áááşá¸áááş áááŹá¸áááşáĄááťááşáĄáááşááźá áşááźáŽá¸á á ááşá¸áááşáážáŻááťáŹá¸ááźááˇáş áĄáááşááźáŻááźáŽá¸ááŹá¸ááźá áşáááş)á áááźáŹá¸ áááŹáážááşáá˝áąáááşá¸ ááŽáááŻááŤáá˛á ááá°ááŽááąáŹ disk ááťáŹá¸áážááˇáşáááşáááŻááşáááşá - á
áá
áşááąáŤáşáááŻáážáŻ áááşá¸ááŤá¸ááąá á
á˝ááşá¸ááąáŹááşáááş ááźááˇáşááŹá¸ááą (áĄááźááş 5%) áááˇáş áážááááŻááşááŤáááşá ááąáŤáşááŻáśááááşá
open()áĄááśáážááˇáşáĄáá°O_DSYNCáááŻáˇáááŻááş ááŻááşá¸ááąáŤáşáááŻááŤápwritev2()áĄááśáážááˇáşáĄáá°RWF_SYNCááźááşááźááşááąáŤáşááŤáfdatasync(). á¤ááąááŹáá˝ááş áĄááááĄááťááşáážáŹ á¤ááťááşá¸áááşáážáŻááźááˇáşá áá°ááŽááąáŹááŻááşáááşá¸ááŹáááşáááŻááźáąáážááşá¸áááş (ááąáŤáşáááŻáážáŻáážá áşááŻáĄá áŹá¸ ááąáŤáşáááŻáážáŻáá áşááŻáĄá áŹá¸) áááşá¸ááŤá¸ááąáŹá áá áşááąáŤáşáááŻáážáŻááťáŹá¸ ááŻááşááąáŹááşááááşáᯠááťá˝ááşáŻááşááśáááážáááŤáááşá áááŻáˇááąáŹáş á á˝ááşá¸ááąáŹááşáááşáá˝áŹááźáŹá¸ááťááşáážáŹ áĄáá˝ááşááąá¸áááşááąáŹááźáąáŹááˇáş áááşáááş áááşá¸ááᯠáĄáá˝ááşááá° ááťá áşááťá°áážáŻáááŻááşááźáŽá¸ áááşá¸áááŻáášááááąáá áážáŻááşáá˝áąá¸áážáŻááᯠáááźá áşááąáŤáşá áąáááˇáş áĄáááŽááąá¸áážááşá¸áá˝ááş áá áşááŻááŻááᯠáĄááŻáśá¸ááźáŻáááŻááşáááşá
ááąáážááşáááşááśáˇááąáŹ ááąááŹááááşá¸áááşá¸ááźááşá¸áááŻááşáᏠááąáŤááşá¸á ááşááᯠáááşá áááşáááşá áŹá¸ááŤáá á¤áĄááŹááťáŹá¸áááş áĄááŻáśá¸áááşááąáŹ áá ášá ááşá¸áĄááťááŻáˇááźá áşáááşá
- - áĄáááş/áĄáá˝ááş ááášáááŹá¸ááťáŹá¸á áĄááźáąááś ááźáŻáśááŻáśááŻáśá¸áááşááťááşá
- - áĄáááŽááąá¸áážááşá¸áážáá áşáááŻáˇáá˝áŹá¸ááŹáááşá¸áážáááąááŹááťáŹá¸ááźá áşááťááşááŻáśáĄááźáąáŹááşá¸ááŹááşáááşá¸á
- - ááťážáąáŹááşááŹá¸ááááˇáşáĄááťáááşáááąá¸áá˝ááşá¸ááĄááźáą
fsync()áááşá¸áá˝ážááşááťáŹá¸áĄáá˝ááşá áĄáááŻááťáŻááşááźáąáŹáááťážááş áááŻááşáĄáá áşáá áşááŻáááşááŽá¸áááˇáşáĄá፠á¤áááŻáˇááźáŻááŻááşáááˇáşááźáŽá¸ á¤áĄááźáśááźáŻááťááşáĄáá˝ááş áĄááźáąáŹááşá¸áááşá¸áážáŹ Linux áááŻááşáá áşááŻáááşá¸áááŻáˇ áááˇáşááşááťáŹá¸á á˝áŹ áážááááŻááşááŤáááşá - â á¤ááąááŹáá˝ááş ááááşááąáŹááşá¸ááąáŤáşáážá SQL Server áá˝ááş persistent data storage ááᯠáááşáááŻáˇáĄááąáŹááşáĄáááşááąáŹáşáááşááᯠááąáŹáşááźááŹá¸ááŤáááş Linuxá¤ááąááŹáá˝ááş á áá áşááąáŤáşáááŻáážáŻááťáŹá¸áĄááźáŹá¸ á áááşáááşá áŹá¸áá˝ááşááąáŹááşá¸ááąáŹ áážááŻááşá¸áážááşááťááşáĄááťááŻáˇáážáááŤáááşá Windows и LinuxXFS áá˛áˇ FUA optimization áĄááźáąáŹááşá¸ ááťá˝ááşááąáŹáş áááşáá°áá˛áˇáᏠááŽáá ášá ááşá¸ááźáąáŹááˇáşáá˛áááŻáᏠááąááťáŹááŤáááşá
áá áşááąáŤáşáá˝ááş ááŻáśááźáŻáśá á˝áŹááááşá¸áááşá¸ááŹá¸áááşáᯠáááşáááşááŹá¸áááˇáş ááąááŹááťáŹá¸ ááŻáśá¸áážáŻáśá¸áá°á¸ááŤáááŹá¸á
source: www.habr.com
