เชŸเช•เชพเช‰ เชกเซ‡เชŸเชพ เชธเซเชŸเซ‹เชฐเซ‡เชœ เช…เชจเซ‡ Linux เชซเชพเช‡เชฒ API

เชฎเซ‡เช‚, เช•เซเชฒเชพเช‰เชก เชธเชฟเชธเซเชŸเชฎเชฎเชพเช‚ เชกเซ‡เชŸเชพ เชธเซเชŸเซ‹เชฐเซ‡เชœเชจเซ€ เชธเซเชฅเชฟเชฐเชคเชพ เชชเชฐ เชธเช‚เชถเซ‹เชงเชจ เช•เชฐเซ€เชจเซ‡, เชนเซเช‚ เชฎเซ‚เชณเชญเซ‚เชค เชฌเชพเชฌเชคเซ‹เชจเซ‡ เชธเชฎเชœเซ€ เชถเช•เซเช‚ เช›เซเช‚ เชคเซ‡เชจเซ€ เช–เชพเชคเชฐเซ€ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชฎเชพเชฐเซ€ เชœเชพเชคเชจเซ‡ เชšเช•เชพเชธเชตเชพเชจเซเช‚ เชจเช•เซเช•เซ€ เช•เชฐเซเชฏเซเช‚. เช†เชˆ NVMe เชธเซเชชเซ‡เช• เชตเชพเช‚เชšเซ€เชจเซ‡ เชถเชฐเซ‚ เช•เชฐเซเชฏเซเช‚ เชกเซ‡เชŸเชพ เชชเชฐเซเชธเชฟเชธเซเชŸเชจเซเชธ (เชเชŸเชฒเซ‡ โ€‹โ€‹เช•เซ‡ เชธเชฟเชธเซเชŸเชฎเชจเซ€ เชจเชฟเชทเซเชซเชณเชคเชพ เชชเช›เซ€ เชกเซ‡เชŸเชพ เช‰เชชเชฒเชฌเซเชง เชฅเชถเซ‡ เชคเซ‡เชตเซ€ เชฌเชพเช‚เชฏเชงเชฐเซ€ เช†เชชเซ‡ เช›เซ‡) เชคเซ‡ เชธเชฎเชœเชตเชพ เชฎเชพเชŸเซ‡ เช…เชฎเชจเซ‡ NMVe เชกเชฟเชธเซเช• เช†เชชเซ‹. เชฎเซ‡เช‚ เชจเซ€เชšเซ‡เชจเชพ เชฎเซเช–เซเชฏ เชคเชพเชฐเชฃเซ‹ เช•เชพเชขเซเชฏเชพ เช›เซ‡: เชคเชฎเชพเชฐเซ‡ เชกเซ‡เชŸเชพ เชฒเช–เชตเชพเชจเซ‹ เช†เชฆเซ‡เชถ เช†เชชเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เชคเซ‡ เช•เซเชทเชฃเชฅเซ€ เชจเซเช•เชธเชพเชจ เชฅเชฏเซ‡เชฒเชพ เชกเซ‡เชŸเชพเชจเซ‡ เชงเซเชฏเชพเชจเชฎเชพเช‚ เชฒเซ‡เชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡, เช…เชจเซ‡ เชœเซเชฏเชพเช‚ เชธเซเชงเซ€ เชคเซ‡ เชธเซเชŸเซ‹เชฐเซ‡เชœ เชฎเชพเชงเซเชฏเชฎเชฎเชพเช‚ เชฒเช–เชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เชคเซเชฏเชพเช‚ เชธเซเชงเซ€. เชœเซ‹ เช•เซ‡, เชฎเซ‹เชŸเชพเชญเชพเช—เชจเชพ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเซเชธเชฎเชพเช‚, เชกเซ‡เชŸเชพ เชฒเช–เชตเชพ เชฎเชพเชŸเซ‡ เชธเชฟเชธเซเชŸเชฎ เช•เซ‹เชฒเซเชธเชจเซ‹ เช‰เชชเชฏเซ‹เช— เชคเชฆเซเชฆเชจ เชธเซเชฐเช•เซเชทเชฟเชค เชฐเซ€เชคเซ‡ เชฅเชพเชฏ เช›เซ‡.

เช† เชฒเซ‡เช–เชฎเชพเช‚, เชนเซเช‚ Linux เชซเชพเชˆเชฒ API เชฆเซเชตเชพเชฐเชพ เชชเซ‚เชฐเซ€ เชชเชพเชกเชตเชพเชฎเชพเช‚ เช†เชตเซ‡เชฒ เชชเชฐเซเชธเชฟเชธเซเชŸเชจเซเชธ เชฎเชฟเช•เซ‡เชจเชฟเชเชฎเซเชธเชจเซเช‚ เช…เชจเซเชตเซ‡เชทเชฃ เช•เชฐเซเช‚ เช›เซเช‚. เชเชตเซเช‚ เชฒเชพเช—เซ‡ เช›เซ‡ เช•เซ‡ เช…เชนเซ€เช‚ เชฌเชงเซเช‚ เชธเชฐเชณ เชนเซ‹เชตเซเช‚ เชœเซ‹เชˆเช: เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎ เช†เชฆเซ‡เชถเชจเซ‡ เช•เซ‰เชฒ เช•เชฐเซ‡ เช›เซ‡ write(), เช…เชจเซ‡ เช† เช†เชฆเซ‡เชถเชจเซ€ เช•เชพเชฎเช—เซ€เชฐเซ€ เชชเซ‚เชฐเซเชฃ เชฅเชฏเชพ เชชเช›เซ€, เชกเซ‡เชŸเชพ เชธเซเชฐเช•เซเชทเชฟเชค เชฐเซ€เชคเซ‡ เชกเชฟเชธเซเช• เชชเชฐ เชธเช‚เช—เซเชฐเชนเชฟเชค เชฅเชถเซ‡. เชชเชฃ write() เชซเช•เซเชค RAM เชฎเชพเช‚ เชธเซเชฅเชฟเชค เช•เชฐเซเชจเชฒ เช•เซ‡เชถเชฎเชพเช‚ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชกเซ‡เชŸเชพเชจเซ€ เชจเช•เชฒ เช•เชฐเซ‡ เช›เซ‡. เชธเชฟเชธเซเชŸเชฎเชจเซ‡ เชกเชฟเชธเซเช• เชชเชฐ เชกเซ‡เชŸเชพ เชฒเช–เชตเชพ เชฎเชพเชŸเซ‡ เชฆเชฌเชพเชฃ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เช•เซ‡เชŸเชฒเซ€เช• เชตเชงเชพเชฐเชพเชจเซ€ เชชเชฆเซเชงเชคเชฟเช“เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเซ‹ เช†เชตเชถเซเชฏเช• เช›เซ‡.

เชŸเช•เชพเช‰ เชกเซ‡เชŸเชพ เชธเซเชŸเซ‹เชฐเซ‡เชœ เช…เชจเซ‡ Linux เชซเชพเช‡เชฒ API

เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡, เช† เชธเชพเชฎเช—เซเชฐเซ€ เช เชฎเชพเชฐเชพ เชฐเชธเชจเชพ เชตเชฟเชทเชฏ เชชเชฐ เชฎเซ‡เช‚ เชœเซ‡ เชถเซ€เช–เซเชฏเชพ เช›เซ‡ เชคเซ‡เชจเชพเชฅเซ€ เชธเช‚เชฌเช‚เชงเชฟเชค เชจเซ‹เช‚เชงเซ‹เชจเซ‹ เชธเชฎเซ‚เชน เช›เซ‡. เชœเซ‹ เช†เชชเชฃเซ‡ เชธเซŒเชฅเซ€ เชฎเชนเชคเซเชตเชชเซ‚เชฐเซเชฃ เชตเชฟเชถเซ‡ เช–เซ‚เชฌ เชœ เชŸเซ‚เช‚เช•เชฎเชพเช‚ เชตเชพเชค เช•เชฐเซ€เช, เชคเซ‹ เชคเซ‡ เชคเชพเชฐเชฃ เช†เชชเซ‡ เช›เซ‡ เช•เซ‡ เชŸเช•เชพเช‰ เชกเซ‡เชŸเชพ เชธเซเชŸเซ‹เชฐเซ‡เชœ เช—เซ‹เช เชตเชตเชพ เชฎเชพเชŸเซ‡, เชคเชฎเชพเชฐเซ‡ เช†เชฆเซ‡เชถเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ fdatasync() เช…เชฅเชตเชพ เชงเซเชตเชœ เชธเชพเชฅเซ‡ เชซเชพเช‡เชฒเซ‹ เช–เซ‹เชฒเซ‹ O_DSYNC. เชœเซ‹ เชคเชฎเชจเซ‡ เช•เซ‹เชกเชฅเซ€ เชกเชฟเชธเซเช• เชธเซเชงเซ€เชจเชพ เชฎเชพเชฐเซเช—เชฎเชพเช‚ เชกเซ‡เชŸเชพเชจเซเช‚ เชถเซเช‚ เชฅเชพเชฏ เช›เซ‡ เชคเซ‡ เชตเชฟเชถเซ‡ เชตเชงเซ เชœเชพเชฃเชตเชพเชฎเชพเช‚ เชฐเชธ เชนเซ‹เชฏ, เชคเซ‹ เชคเซ‡เชจเชพ เชชเชฐ เชเช• เชจเชœเชฐ เชจเชพเช–เซ‹ เช† เชฒเซ‡เช–

write() เชซเช‚เช•เซเชถเชจเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซ€ เชธเซเชตเชฟเชงเชพเช“

เชธเชฟเชธเซเชŸเชฎ เช•เซ‰เชฒ write() เชงเซ‹เชฐเชฃเชฎเชพเช‚ เชตเซเชฏเชพเช–เซเชฏเชพเชฏเชฟเชค เช†เช‡เช‡เช‡เช‡ เชชเซ‹เชธเชฟเช•เซเชธ เชซเชพเช‡เชฒ เชตเชฐเซเชฃเชจเช•เชฐเซเชคเชพ เชชเชฐ เชกเซ‡เชŸเชพ เชฒเช–เชตเชพเชจเชพ เชชเซเชฐเชฏเชพเชธ เชคเชฐเซ€เช•เซ‡. เช•เชพเชฐเซเชฏ เชธเชซเชณเชคเชพเชชเซ‚เชฐเซเชตเช• เชชเซ‚เชฐเซเชฃ เชฅเชฏเชพ เชชเช›เซ€ write() เชกเซ‡เชŸเชพ เชฐเซ€เชก เช‘เชชเชฐเซ‡เชถเชจเซเชธเซ‡ เช…เช—เชพเช‰ เชฒเช–เซ‡เชฒเชพ เชฌเชพเช‡เชŸเซเชธ เชฌเชฐเชพเชฌเชฐ เชชเชฐเชค เช•เชฐเชตเชพ เชœเซ‹เชˆเช, เชœเซ‹ เชกเซ‡เชŸเชพ เช…เชจเซเชฏ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเช“ เช…เชฅเชตเชพ เชฅเซเชฐเซ‡เชกเซ‹เชฎเชพเช‚เชฅเซ€ เชเช•เซเชธเซ‡เชธ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เชฐเชนเซเชฏเซ‹ เชนเซ‹เชฏ เชคเซ‹ เชชเชฃ เช†เชฎ เช•เชฐเชตเชพเชฅเซ€ (เชœเซ‹เชฏเซ‡เชฒเซเช‚ POSIX เชงเซ‹เชฐเชฃเชจเซ‹ เช…เชจเซเชฐเซ‚เชช เชตเชฟเชญเชพเช—). เชคเซ‡, เชธเชพเชฎเชพเชจเซเชฏ เชซเชพเช‡เชฒ เช‘เชชเชฐเซ‡เชถเชจเซเชธ เชธเชพเชฅเซ‡ เชฅเซเชฐเซ‡เชกเซ‹เชจเซ€ เช•เซเชฐเชฟเชฏเชพเชชเซเชฐเชคเชฟเช•เซเชฐเชฟเชฏเชพ เชชเชฐเชจเชพ เชตเชฟเชญเชพเช—เชฎเชพเช‚, เชเช• เชจเซ‹เช‚เชง เช›เซ‡ เชœเซ‡ เช•เชนเซ‡ เช›เซ‡ เช•เซ‡ เชœเซ‹ เชฌเซ‡ เชฅเซเชฐเซ‡เชกเซ‹ เชฆเชฐเซ‡เช• เช† เช•เชพเชฐเซเชฏเซ‹เชจเซ‡ เช•เซ‰เชฒ เช•เชฐเซ‡ เช›เซ‡, เชคเซ‹ เชฆเชฐเซ‡เช• เช•เซ‰เชฒเซ‡ เช•เชพเช‚ เชคเซ‹ เช…เชจเซเชฏ เช•เซ‰เชฒเชจเชพ เช…เชฎเชฒเซ€เช•เชฐเชฃ เชคเชฐเชซ เชฆเซ‹เชฐเซ€ เชœเชพเชฏ เช›เซ‡ เชคเซ‡ เชคเชฎเชพเชฎ เชธเซ‚เชšเชฟเชค เชชเชฐเชฟเชฃเชพเชฎเซ‹ เชœเซ‹เชตเชพ เชœเซ‹เชˆเช, เช…เชฅเชตเชพ เช•เซ‹เชˆ เชชเชฃ เชชเชฐเชฟเชฃเชพเชฎ เชœเซ‹เชคเชพ เชจเชฅเซ€. เช† เชจเชฟเชทเซเช•เชฐเซเชท เชคเชฐเชซ เชฆเซ‹เชฐเซ€ เชœเชพเชฏ เช›เซ‡ เช•เซ‡ เชคเชฎเชพเชฎ เชซเชพเช‡เชฒ I/O เช‘เชชเชฐเซ‡เชถเชจเซเชธเซ‡ เชœเซ‡ เชธเช‚เชธเชพเชงเชจ เชชเชฐ เช•เชพเชฎ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ เชคเซ‡เชจเชพ เชชเชฐ เชฒเซ‰เช• เชฐเชพเช–เชตเซ‹ เชœเซ‹เชˆเช.

เชถเซเช‚ เช†เชจเซ‹ เช…เชฐเซเชฅ เช เช›เซ‡ เช•เซ‡ เช“เชชเชฐเซ‡เชถเชจ write() เช…เชฃเซ เช›เซ‡? เชคเช•เชจเซ€เช•เซ€ เชฆเซƒเชทเซเชŸเชฟเช•เซ‹เชฃเชฅเซ€, เชนเชพ. เชกเซ‡เชŸเชพ เชฐเซ€เชก เช‘เชชเชฐเซ‡เชถเชจเซเชธเซ‡ เชœเซ‡ เชฒเช–เชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เชนเชคเซเช‚ เชคเซ‡เชฎเชพเช‚เชฅเซ€ เชฌเชงเซ เชœ เช…เชฅเชตเชพ เช•เช‚เชˆเชชเชฃ เชชเชฐเชค เช•เชฐเชตเซเช‚ เช†เชตเชถเซเชฏเช• เช›เซ‡ write(). เชชเชฐเช‚เชคเซ เช“เชชเชฐเซ‡เชถเชจ write(), เชงเซ‹เชฐเชฃ เช…เชจเซเชธเชพเชฐ, เชคเซ‡เชฃเซ€เชจเซ‡ เชœเซ‡ เชฒเช–เชตเชพเชจเซเช‚ เช•เชนเซ‡เชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เชนเชคเซเช‚ เชคเซ‡ เชฌเชงเซเช‚ เชฒเช–เซ€เชจเซ‡, เชคเซ‡เชจเซ‡ เชธเชฎเชพเชชเซเชค เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชจเชฅเซ€. เชคเซ‡เชจเซ‡ เชกเซ‡เชŸเชพเชจเซ‹ เชฎเชพเชคเซเชฐ เชเช• เชญเชพเช— เชฒเช–เชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช›เซ‡. เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เช…เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เชธเชฎเชพเชจ เชซเชพเช‡เชฒ เชตเชฐเซเชฃเชจเช•เชฐเซเชคเชพ เชฆเซเชตเชพเชฐเชพ เชตเชฐเซเชฃเชตเซ‡เชฒ เชซเชพเช‡เชฒเชฎเชพเช‚ 1024 เชฌเชพเช‡เชŸเซเชธ เชœเซ‹เชกเชคเซ€ เชฆเชฐเซ‡เช• เชธเซเชŸเซเชฐเซ€เชฎ เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡. เชงเซ‹เชฐเชฃเชจเชพ เชฆเซƒเชทเซเชŸเชฟเช•เซ‹เชฃเชฅเซ€, เชชเชฐเชฟเชฃเชพเชฎ เชธเซเชตเซ€เช•เชพเชฐเซเชฏ เชนเชถเซ‡ เชœเซเชฏเชพเชฐเซ‡ เชฆเชฐเซ‡เช• เชฒเซ‡เช–เชจ เช‘เชชเชฐเซ‡เชถเชจ เชซเชพเช‡เชฒเชฎเชพเช‚ เชฎเชพเชคเซเชฐ เชเช• เชฌเชพเช‡เชŸ เช‰เชฎเซ‡เชฐเซ€ เชถเช•เซ‡. เช† เช“เชชเชฐเซ‡เชถเชจเซเชธ เชเชŸเซ‹เชฎเชฟเช• เชฐเชนเซ‡เชถเซ‡, เชชเชฐเช‚เชคเซ เชคเซ‡เช“ เชชเซ‚เชฐเซเชฃ เชฅเชฏเชพ เชชเช›เซ€, เชคเซ‡เช“ เชซเชพเช‡เชฒเชฎเชพเช‚ เชฒเช–เซ‡ เช›เซ‡ เชคเซ‡ เชกเซ‡เชŸเชพ เช—เซ‚เช‚เชšเชตเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡. เช…เชนเซ€เช‚ เชธเซเชŸเซ‡เช• เช“เชตเชฐเชซเซเชฒเซ‹ เชชเชฐ เช† เชตเชฟเชทเชฏ เชชเชฐ เช–เซ‚เชฌ เชœ เชฐเชธเชชเซเชฐเชฆ เชšเชฐเซเชšเชพ.

fsync() เช…เชจเซ‡ fdatasync() เช•เชพเชฐเซเชฏเซ‹

เชกเชฟเชธเซเช• เชชเชฐ เชกเซ‡เชŸเชพ เชซเซเชฒเชถ เช•เชฐเชตเชพเชจเซ‹ เชธเซŒเชฅเซ€ เชธเชนเซ‡เชฒเซ‹ เชฐเชธเซเชคเซ‹ เชซเช‚เช•เซเชถเชจเชจเซ‡ เช•เซ‰เชฒ เช•เชฐเชตเชพเชจเซ‹ เช›เซ‡ fsync(). เช† เชซเช‚เช•เซเชถเชจ เช“เชชเชฐเซ‡เชŸเชฟเช‚เช— เชธเชฟเชธเซเชŸเชฎเชจเซ‡ เชคเชฎเชพเชฎ เชธเช‚เชถเซ‹เชงเชฟเชค เชฌเซเชฒเซ‹เช•เซเชธเชจเซ‡ เช•เซ‡เชถเชฎเชพเช‚เชฅเซ€ เชกเชฟเชธเซเช• เชชเชฐ เช–เชธเซ‡เชกเชตเชพ เชฎเชพเชŸเซ‡ เช•เชนเซ‡ เช›เซ‡. เช†เชฎเชพเช‚ เชซเชพเช‡เชฒเชจเชพ เชคเชฎเชพเชฎ เชฎเซ‡เชŸเชพเชกเซ‡เชŸเชพ (เชเช•เซเชธเซ‡เชธ เชŸเชพเช‡เชฎ, เชซเชพเช‡เชฒเชฎเชพเช‚ เชซเซ‡เชฐเชซเชพเชฐ เช•เชฐเชตเชพเชจเซ‹ เชธเชฎเชฏ เช…เชจเซ‡ เชคเซ‡เชฅเซ€ เชตเชงเซ) เชถเชพเชฎเซ‡เชฒ เช›เซ‡. เชนเซเช‚ เชฎเชพเชจเซเช‚ เช›เซเช‚ เช•เซ‡ เช† เชฎเซ‡เชŸเชพเชกเซ‡เชŸเชพเชจเซ€ เชญเชพเช—เซเชฏเซ‡ เชœ เชœเชฐเซ‚เชฐ เช›เซ‡, เชคเซ‡เชฅเซ€ เชœเซ‹ เชคเชฎเชจเซ‡ เช–เชฌเชฐ เชนเซ‹เชฏ เช•เซ‡ เชคเซ‡ เชคเชฎเชพเชฐเชพ เชฎเชพเชŸเซ‡ เชฎเชนเชคเซเชตเชชเซ‚เชฐเซเชฃ เชจเชฅเซ€, เชคเซ‹ เชคเชฎเซ‡ เชซเช‚เช•เซเชถเชจเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹ fdatasync(). เช† เชฎเชฆเชฆ เชชเชฐ fdatasync() เชคเซ‡ เช•เชนเซ‡ เช›เซ‡ เช•เซ‡ เช† เชซเช‚เช•เซเชถเชจเชจเซ€ เช•เชพเชฎเช—เซ€เชฐเซ€ เชฆเชฐเชฎเชฟเชฏเชพเชจ, เชกเชฟเชธเซเช•เชฎเชพเช‚ เชฎเซ‡เชŸเชพเชกเซ‡เชŸเชพเชจเซ‹ เช†เชŸเชฒเซ‹ เชœเชฅเซเชฅเซ‹ เชธเชพเชšเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชœเซ‡ "เชจเซ€เชšเซ‡เชจเซ€ เชกเซ‡เชŸเชพ เชฐเซ€เชกเชฟเช‚เช— เช•เชพเชฎเช—เซ€เชฐเซ€เชจเชพ เชฏเซ‹เช—เซเชฏ เช…เชฎเชฒ เชฎเชพเชŸเซ‡ เชœเชฐเซ‚เชฐเซ€ เช›เซ‡." เช…เชจเซ‡ เช† เชคเซ‡ เชœ เช›เซ‡ เชœเซ‡เชจเซ€ เชฎเซ‹เชŸเชพเชญเชพเช—เชจเซ€ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซ‹ เช•เชพเชณเชœเซ€ เชฒเซ‡ เช›เซ‡.

เชเช• เชธเชฎเชธเซเชฏเชพ เชœเซ‡ เช…เชนเซ€เช‚ เชŠเชญเซ€ เชฅเชˆ เชถเช•เซ‡ เช›เซ‡ เชคเซ‡ เช เช›เซ‡ เช•เซ‡ เช† เชฎเชฟเช•เซ‡เชจเชฟเชเชฎเซเชธ เชฌเชพเช‚เชนเซ‡เชงเชฐเซ€ เช†เชชเชคเชพ เชจเชฅเซ€ เช•เซ‡ เชธเช‚เชญเชตเชฟเชค เชจเชฟเชทเซเชซเชณเชคเชพ เชชเช›เซ€ เชซเชพเช‡เชฒ เชถเซ‹เชงเซ€ เชถเช•เชพเชฏ เช›เซ‡. เช–เชพเชธ เช•เชฐเซ€เชจเซ‡, เชœเซเชฏเชพเชฐเซ‡ เชจเชตเซ€ เชซเชพเช‡เชฒ เชฌเชจเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชคเซเชฏเชพเชฐเซ‡ เช•เซ‹เชˆเช เช•เซ‰เชฒ เช•เชฐเชตเซ‹ เชœเซ‹เชˆเช fsync() เชคเซ‡ เชธเชฎเชพเชตเซ‡ เช›เซ‡ เชคเซ‡ เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€ เชฎเชพเชŸเซ‡. เชจเชนเชฟเช‚เชคเชฐ, เช•เซเชฐเซ‡เชถ เชชเช›เซ€, เชคเซ‡ เชšเชพเชฒเซ เชฅเชˆ เชถเช•เซ‡ เช›เซ‡ เช•เซ‡ เช† เชซเชพเช‡เชฒ เช…เชธเซเชคเชฟเชคเซเชตเชฎเชพเช‚ เชจเชฅเซ€. เชคเซ‡เชจเซเช‚ เช•เชพเชฐเชฃ เช เช›เซ‡ เช•เซ‡ UNIX เชนเซ‡เช เชณ, เชนเชพเชฐเซเชก เชฒเชฟเช‚เช•เซเชธเชจเชพ เช‰เชชเชฏเซ‹เช—เชจเซ‡ เช•เชพเชฐเชฃเซ‡, เชซเชพเช‡เชฒ เชฌเชนเซเชตเชฟเชง เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€เช“เชฎเชพเช‚ เช…เชธเซเชคเชฟเชคเซเชตเชฎเชพเช‚ เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡. เชคเซ‡เชฅเซ€, เชœเซเชฏเชพเชฐเซ‡ เช•เซ‰เชฒ เช•เชฐเซ‹ fsync() เช•เชˆ เชกเชพเชฏเชฐเซ‡เช•เซเชŸเชฐเซ€ เชกเซ‡เชŸเชพ เชชเชฃ เชกเชฟเชธเซเช• เชชเชฐ เชซเซเชฒเชถ เชฅเชตเซ‹ เชœเซ‹เชˆเช เชคเซ‡ เชœเชพเชฃเชตเชพ เชฎเชพเชŸเซ‡ เชซเชพเชˆเชฒ เชฎเชพเชŸเซ‡ เช•เซ‹เชˆ เชฐเชธเซเชคเซ‹ เชจเชฅเซ€ (เช…เชนเซ€เช‚ เชคเชฎเซ‡ เช† เชตเชฟเชถเซ‡ เชตเชงเซ เชตเชพเช‚เชšเซ€ เชถเช•เซ‹ เช›เซ‹). เชเชตเซเช‚ เชฒเชพเช—เซ‡ เช›เซ‡ เช•เซ‡ ext4 เชซเชพเช‡เชฒ เชธเชฟเชธเซเชŸเชฎ เชธเช•เซเชทเชฎ เช›เซ‡ เช†เชชเชฎเซ‡เชณเซ‡ เชฒเชพเช—เซ เช•เชฐเซ‹ fsync() เช…เชจเซเชฐเซ‚เชช เชซเชพเชˆเชฒเซ‹ เชงเชฐเชพเชตเชคเซ€ เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€เช“ เชฎเชพเชŸเซ‡, เชชเชฐเช‚เชคเซ เช…เชจเซเชฏ เชซเชพเชˆเชฒ เชธเชฟเชธเซเชŸเชฎเซ‹ เชธเชพเชฅเซ‡ เช†เชตเซเช‚ เชจ เชนเซ‹เชˆ เชถเช•เซ‡.

เช† เชฎเชฟเช•เซ‡เชจเชฟเชเชฎ เช…เชฒเช— เช…เชฒเช— เชซเชพเช‡เชฒ เชธเชฟเชธเซเชŸเชฎเชฎเชพเช‚ เช…เชฒเช— เชฐเซ€เชคเซ‡ เชฒเชพเช—เซ เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡. เชฎเซ‡ เชตเชพเชชเชฐเซเชฏเซ blktrace ext4 เช…เชจเซ‡ XFS เชซเชพเชˆเชฒ เชธเชฟเชธเซเชŸเชฎเซ‹เชฎเชพเช‚ เช•เชˆ เชกเชฟเชธเซเช• เช“เชชเชฐเซ‡เชถเชจเซเชธ เชตเชชเชฐเชพเชฏ เช›เซ‡ เชคเซ‡ เชตเชฟเชถเซ‡ เชœเชพเชฃเชตเชพ เชฎเชพเชŸเซ‡. เชฌเช‚เชจเซ‡ เชซเชพเช‡เชฒเซ‹เชจเซ€ เชธเชพเชฎเช—เซเชฐเซ€ เช…เชจเซ‡ เชซเชพเช‡เชฒ เชธเชฟเชธเซเชŸเชฎ เชœเชฐเซเชจเชฒ เชฌเช‚เชจเซ‡ เชฎเชพเชŸเซ‡ เชกเชฟเชธเซเช• เชชเชฐ เชธเชพเชฎเชพเชจเซเชฏ เชฒเช–เชตเชพเชจเชพ เช†เชฆเซ‡เชถเซ‹ เชœเชพเชฐเซ€ เช•เชฐเซ‡ เช›เซ‡, เช•เซ‡เชถ เชซเซเชฒเชถ เช•เชฐเซ‡ เช›เซ‡ เช…เชจเซ‡ FUA (เชซเซ‹เชฐเซเชธ เชฏเซเชจเชฟเชŸ เชเช•เซเชธเซ‡เชธ, เชกเชฟเชธเซเช• เชชเชฐ เชธเซ€เชงเซ‹ เชกเซ‡เชŸเชพ เชฒเช–เชตเชพ, เช•เซ…เชถเชจเซ‡ เชฌเชพเชฏเชชเชพเชธ เช•เชฐเซ€เชจเซ‡) เชœเชฐเซเชจเชฒเชฎเชพเช‚ เชฒเช–เซ€เชจเซ‡ เชฌเชนเชพเชฐ เชจเซ€เช•เชณเซ‹. เชคเซ‡เช“ เช•เชฆเชพเชš เชตเซเชฏเชตเชนเชพเชฐเชจเซ€ เชนเช•เซ€เช•เชคเชจเซ€ เชชเซเชทเซเชŸเชฟ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชคเซ‡ เชœ เช•เชฐเซ‡ เช›เซ‡. FUA เชจเซ‡ เชธเชชเซ‹เชฐเซเชŸ เชจ เช•เชฐเชคเซ€ เชกเซเชฐเชพเช‡เชต เชชเชฐ, เช†เชจเชพเชฅเซ€ เชฌเซ‡ เช•เซ‡เชถ เชซเซเชฒเชถ เชฅเชพเชฏ เช›เซ‡. เชฎเชพเชฐเชพ เชชเซเชฐเชฏเซ‹เช—เซ‹เช เชคเซ‡ เชฌเชคเชพเชตเซเชฏเซเช‚ เช›เซ‡ fdatasync() เชฅเซ‹เชกเซเช‚ เชเชกเชชเซ€ fsync(). เช‰เชชเชฏเซ‹เช—เชฟเชคเชพ blktrace เชคเซ‡ เชฆเชฐเซเชถเชพเชตเซ‡ เช›เซ‡ fdatasync() เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ เชกเชฟเชธเซเช• เชชเชฐ เช“เช›เซ‹ เชกเซ‡เชŸเชพ เชฒเช–เซ‡ เช›เซ‡ (ext4 เชฎเชพเช‚ fsync() 20 KiB เชฒเช–เซ‡ เช›เซ‡, เช…เชจเซ‡ fdatasync() - 16 KiB). เช‰เชชเชฐเชพเช‚เชค, เชฎเชจเซ‡ เชœเชพเชฃเชตเชพ เชฎเชณเซเชฏเซเช‚ เช•เซ‡ XFS เช ext4 เช•เชฐเชคเชพ เชธเชนเซ‡เชœ เชเชกเชชเซ€ เช›เซ‡. เช…เชจเซ‡ เช…เชนเซ€เช‚ เชฎเชฆเชฆ เชธเชพเชฅเซ‡ blktrace เชคเซ‡ เชœเชพเชฃเชตเชพ เชฎเชพเชŸเซ‡ เชธเช•เซเชทเชฎ เชนเชคเชพ fdatasync() เชกเชฟเชธเซเช• เชชเชฐ เช“เช›เซ‹ เชกเซ‡เชŸเชพ เชซเซเชฒเชถ เช•เชฐเซ‡ เช›เซ‡ (XFS เชฎเชพเช‚ 4 KiB).

fsync() เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชคเซ€ เชตเช–เชคเซ‡ เช…เชธเซเชชเชทเซเชŸ เชชเชฐเชฟเชธเซเชฅเชฟเชคเชฟเช“

เชนเซเช‚ เชธเช‚เชฌเช‚เชงเชฟเชค เชคเซเชฐเชฃ เช…เชธเซเชชเชทเซเชŸ เชชเชฐเชฟเชธเซเชฅเชฟเชคเชฟเช“ เชตเชฟเชถเซ‡ เชตเชฟเชšเชพเชฐเซ€ เชถเช•เซเช‚ เช›เซเช‚ fsync()เชœเซ‡ เชฎเชจเซ‡ เชตเซเชฏเชตเชนเชพเชฐเชฎเชพเช‚ เชฎเชณเซ€ เช›เซ‡.

เช† เชชเซเชฐเช•เชพเชฐเชจเซ€ เชชเซเชฐเชฅเชฎ เช˜เชŸเชจเชพ 2008เชฎเชพเช‚ เชฌเชจเซ€ เชนเชคเซ€. เชคเซ‡ เชธเชฎเชฏเซ‡, เชซเชพเชฏเชฐเชซเซ‹เช•เซเชธ 3 เช‡เชจเซเชŸเชฐเชซเซ‡เชธ "เชธเซเชฅเชฟเชฐ" เชœเซ‹ เชกเชฟเชธเซเช• เชชเชฐ เชฎเซ‹เชŸเซ€ เชธเช‚เช–เซเชฏเชพเชฎเชพเช‚ เชซเชพเช‡เชฒเซ‹ เชฒเช–เชตเชพเชฎเชพเช‚ เช†เชตเซ€ เชฐเชนเซ€ เชนเซ‹เชฏ. เชธเชฎเชธเซเชฏเชพ เช เชนเชคเซ€ เช•เซ‡ เช‡เชจเซเชŸเชฐเชซเซ‡เชธเชจเชพ เช…เชฎเชฒเซ€เช•เชฐเชฃเชฎเชพเช‚ เชคเซ‡เชจเซ€ เชธเซเชฅเชฟเชคเชฟ เชตเชฟเชถเซ‡เชจเซ€ เชฎเชพเชนเชฟเชคเซ€ เชธเช‚เช—เซเชฐเชนเชฟเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ SQLite เชกเซ‡เชŸเชพเชฌเซ‡เชเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซ‹ เชนเชคเซ‹. เชˆเชจเซเชŸเชฐเชซเซ‡เชธเชฎเชพเช‚ เช†เชตเซ‡เชฒเชพ เชฆเชฐเซ‡เช• เชซเซ‡เชฐเชซเชพเชฐ เชชเช›เซ€, เชซเช‚เช•เซเชถเชจเชจเซ‡ เชฌเซ‹เชฒเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เชนเชคเซเช‚ fsync(), เชœเซ‡ เชธเซเชฅเชฟเชฐ เชกเซ‡เชŸเชพ เชธเซเชŸเซ‹เชฐเซ‡เชœเชจเซ€ เชธเชพเชฐเซ€ เช—เซ‡เชฐเช‚เชŸเซ€ เช†เชชเซ‡ เช›เซ‡. เชชเช›เซ€ เชตเชชเชฐเชพเชฏเซ‡เชฒ ext3 เชซเชพเช‡เชฒ เชธเชฟเชธเซเชŸเชฎเชฎเชพเช‚, เช•เชพเชฐเซเชฏ fsync() เชธเชฟเชธเซเชŸเชฎเชฎเชพเช‚เชจเชพ เชคเชฎเชพเชฎ "เช—เช‚เชฆเชพ" เชชเซƒเชทเซเช เซ‹เชจเซ‡ เชกเชฟเชธเซเช• เชชเชฐ เชซเซเชฒเชถ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เช…เชจเซ‡ เชฎเชพเชคเซเชฐ เชคเซ‡ เชœ เชจเชนเซ€เช‚ เชœเซ‡ เชธเช‚เชฌเช‚เชงเชฟเชค เชซเชพเช‡เชฒ เชธเชพเชฅเซ‡ เชธเช‚เชฌเช‚เชงเชฟเชค เชนเชคเชพ. เช†เชจเซ‹ เช…เชฐเซเชฅ เช เชฅเชฏเซ‹ เช•เซ‡ เชซเชพเชฏเชฐเชซเซ‹เช•เซเชธเชฎเชพเช‚ เชฌเชŸเชจ เชชเชฐ เช•เซเชฒเชฟเช• เช•เชฐเชตเชพเชฅเซ€ เชฎเซ‡เช—เชพเชฌเชพเชˆเชŸ เชกเซ‡เชŸเชพ เชฎเซ‡เช—เซเชจเซ‡เชŸเชฟเช• เชกเชฟเชธเซเช• เชชเชฐ เชฒเช–เชตเชพเชฎเชพเช‚ เช†เชตเซ€ เชถเช•เซ‡ เช›เซ‡, เชœเซ‡เชฎเชพเช‚ เช˜เชฃเซ€ เชธเซ‡เช•เชจเซเชก เชฒเชพเช—เซ€ เชถเช•เซ‡ เช›เซ‡. เชธเชฎเชธเซเชฏเชพเชจเซ‹ เช‰เช•เซ‡เชฒ, เชœเซเชฏเชพเช‚ เชธเซเชงเซ€ เชนเซเช‚ เชธเชฎเชœเซ€ เชถเช•เซเชฏเซ‹ เช›เซเช‚ เชคเซ‡ เชธเชพเชฎเช—เซเชฐเซ€, เชกเซ‡เชŸเชพเชฌเซ‡เช เชธเชพเชฅเซ‡ เช•เชพเชฎเชจเซ‡ เช…เชธเซเชฎเซ‡เชณ เชชเซƒเชทเซเช เชญเซ‚เชฎเชฟ เช•เชพเชฐเซเชฏเซ‹เชฎเชพเช‚ เช–เชธเซ‡เชกเชตเชพเชจเซเช‚ เชนเชคเซเช‚. เช†เชจเซ‹ เช…เชฐเซเชฅ เช เช›เซ‡ เช•เซ‡ เชซเชพเชฏเชฐเชซเซ‹เช•เซเชธ เช–เชฐเซ‡เช–เชฐ เชœเชฐเซ‚เชฐเซ€ เช•เชฐเชคเชพเช‚ เชตเชงเซ เชธเช–เชค เชธเซเชŸเซ‹เชฐเซ‡เชœ เชชเชฐเซเชธเชฟเชธเซเชŸเชจเซเชธ เชœเชฐเซ‚เชฐเชฟเชฏเชพเชคเซ‹เชจเซ‡ เช…เชฎเชฒเชฎเชพเช‚ เชฎเซ‚เช•เชตเชพ เชฎเชพเชŸเซ‡ เชตเชชเชฐเชพเชฏ เช›เซ‡, เช…เชจเซ‡ ext3 เชซเชพเช‡เชฒเชธเชฟเชธเซเชŸเชฎ เชธเซเชตเชฟเชงเชพเช“เช เช† เชธเชฎเชธเซเชฏเชพเชจเซ‡ เชตเชงเชพเชฐเซ€ เชฆเซ€เชงเซ€ เช›เซ‡.

เชฌเซ€เชœเซ€ เชธเชฎเชธเซเชฏเชพ 2009เชฎเชพเช‚ เชฌเชจเซ€ เชนเชคเซ€. เชชเช›เซ€, เชธเชฟเชธเซเชŸเชฎ เช•เซเชฐเซ‡เชถ เชฅเชฏเชพ เชชเช›เซ€, เชจเชตเซ€ ext4 เชซเชพเชˆเชฒ เชธเชฟเชธเซเชŸเชฎเชจเชพ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“เช เชถเซ‹เชงเซ€ เช•เชพเชขเซเชฏเซเช‚ เช•เซ‡ เช˜เชฃเซ€ เชจเชตเซ€ เชฌเชจเชพเชตเซ‡เชฒเซ€ เชซเชพเชˆเชฒเซ‹ เชถเซ‚เชจเซเชฏ-เชฒเช‚เชฌเชพเชˆเชจเซ€ เชนเชคเซ€, เชชเชฐเช‚เชคเซ เชœเซ‚เชจเซ€ ext3 เชซเชพเชˆเชฒ เชธเชฟเชธเซเชŸเชฎ เชธเชพเชฅเซ‡ เช†เชตเซเช‚ เชฅเชคเซเช‚ เชจเชฅเซ€. เช…เช—เชพเช‰เชจเชพ เชซเช•เชฐเชพเชฎเชพเช‚, เชฎเซ‡เช‚ เชคเซ‡ เชตเชฟเชถเซ‡ เชตเชพเชค เช•เชฐเซ€ เชนเชคเซ€ เช•เซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ ext3 เชกเชฟเชธเซเช• เชชเชฐ เชตเชงเซ เชชเชกเชคเซ‹ เชกเซ‡เชŸเชพ เชกเชฎเซเชช เช•เชฐเซ‡ เช›เซ‡, เชœเซ‡เชจเชพเชฅเซ€ เชตเชธเซเชคเซเช“ เช˜เชฃเซ€ เชงเซ€เชฎเซ€ เชชเชกเซ€ เชœเชพเชฏ เช›เซ‡. fsync(). เชชเชฐเชฟเชธเซเชฅเชฟเชคเชฟเชจเซ‡ เชธเซเชงเชพเชฐเชตเชพ เชฎเชพเชŸเซ‡, ext4 เชซเช•เซเชค เชคเซ‡ "เช—เช‚เชฆเชพ" เชชเซƒเชทเซเช เซ‹เชจเซ‡ เชซเซเชฒเชถ เช•เชฐเซ‡ เช›เซ‡ เชœเซ‡ เชšเซ‹เช•เซเช•เชธ เชซเชพเช‡เชฒ เชธเชพเชฅเซ‡ เชธเช‚เชฌเช‚เชงเชฟเชค เช›เซ‡. เช…เชจเซ‡ เช…เชจเซเชฏ เชซเชพเช‡เชฒเซ‹เชจเซ‹ เชกเซ‡เชŸเชพ ext3 เช•เชฐเชคเชพ เชตเชงเซ เชธเชฎเชฏ เชฎเชพเชŸเซ‡ เชฎเซ‡เชฎเชฐเซ€เชฎเชพเช‚ เชฐเชนเซ‡ เช›เซ‡. เช† เช•เชพเชฎเช—เซ€เชฐเซ€ เชฌเชนเซ‡เชคเชฐ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เชนเชคเซเช‚ (เชกเชฟเชซเซ‰เชฒเซเชŸ เชฐเซ‚เชชเซ‡, เชกเซ‡เชŸเชพ เช† เชธเซเชฅเชฟเชคเชฟเชฎเชพเช‚ 30 เชธเซ‡เช•เชจเซเชก เชธเซเชงเซ€ เชฐเชนเซ‡ เช›เซ‡, เชคเชฎเซ‡ เช†เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชคเซ‡เชจเซ‡ เช—เซ‹เช เชตเซ€ เชถเช•เซ‹ เช›เซ‹ dirty_expire_centisecs; เช…เชนเซ€เช‚ เชคเชฎเซ‡ เช†เชจเชพ เชชเชฐ เชตเชงเซ เชฎเชพเชนเชฟเชคเซ€ เชฎเซ‡เชณเชตเซ€ เชถเช•เซ‹ เช›เซ‹). เช†เชจเซ‹ เช…เชฐเซเชฅ เช เช›เซ‡ เช•เซ‡ เช•เซเชฐเซ‡เชถ เชฅเชฏเชพ เชชเช›เซ€ เชฎเซ‹เชŸเซ€ เชฎเชพเชคเซเชฐเชพเชฎเชพเช‚ เชกเซ‡เชŸเชพ เชชเซเชจเชƒเชชเซเชฐเชพเชชเซเชค เช•เชฐเซ€ เชถเช•เชพเชฏ เชคเซ‡เชฎ เชจเชฅเซ€. เช† เชธเชฎเชธเซเชฏเชพเชจเซ‹ เช‰เช•เซ‡เชฒ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซ‹ เช›เซ‡ fsync() เชเชชเซเชฒเซ€เช•เซ‡เชถเชจเซ‹เชฎเชพเช‚ เช•เซ‡ เชœเซ‡เชจเซ‡ เชธเซเชฅเชฟเชฐ เชกเซ‡เชŸเชพ เชธเซเชŸเซ‹เชฐเซ‡เชœ เชชเซเชฐเชฆเชพเชจ เช•เชฐเชตเชพเชจเซ€ เช…เชจเซ‡ เชจเชฟเชทเซเชซเชณเชคเชพเชจเชพ เชชเชฐเชฟเชฃเชพเชฎเซ‹เชฅเซ€ เชถเช•เซเชฏ เชคเซ‡เชŸเชฒเซเช‚ เชธเซเชฐเช•เซเชทเชฟเชค เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡. เช•เชพเชฐเซเชฏ fsync() ext4 เช•เชฐเชคเชพเช‚ ext3 เชธเชพเชฅเซ‡ เชตเชงเซ เช•เชพเชฐเซเชฏเช•เซเชทเชฎ เชฐเซ€เชคเซ‡ เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡. เช† เช…เชญเชฟเช—เชฎเชจเซ‹ เช—เซ‡เชฐเชฒเชพเชญ เช เช›เซ‡ เช•เซ‡ เชคเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช—, เชชเชนเซ‡เชฒเชพเชจเซ€ เชœเซ‡เชฎ, เช•เซ‡เชŸเชฒเชพเช• เช“เชชเชฐเซ‡เชถเชจเซเชธเชจเซ‡ เชงเซ€เชฎเซเช‚ เช•เชฐเซ‡ เช›เซ‡, เชœเซ‡เชฎ เช•เซ‡ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเซเชธ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเชตเชพ. เช† เช…เช‚เช—เซ‡ เชตเชฟเช—เชคเซ‹ เชœเซเช“ เช…เชนเซ€เช‚ ะธ เช…เชนเซ€เช‚.

เชธเช‚เชฌเช‚เชงเชฟเชค เชคเซเชฐเซ€เชœเซ€ เชธเชฎเชธเซเชฏเชพ fsync(), 2018 เชฎเชพเช‚ เช‰เชฆเซเชฆเชญเชตเซเชฏเซเช‚. เชชเช›เซ€, PostgreSQL เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเชจเชพ เชฎเชพเชณเช–เชพเชฎเชพเช‚, เชคเซ‡ เชœเชพเชฃเชตเชพ เชฎเชณเซเชฏเซเช‚ เช•เซ‡ เชœเซ‹ เช•เชพเชฐเซเชฏ fsync() เชเช• เชญเซ‚เชฒ เช†เชตเซ‡ เช›เซ‡, เชคเซ‡ "เช—เช‚เชฆเชพ" เชชเซƒเชทเซเช เซ‹เชจเซ‡ "เชธเซเชตเชšเซเช›" เชคเชฐเซ€เช•เซ‡ เชšเชฟเชนเซเชจเชฟเชค เช•เชฐเซ‡ เช›เซ‡. เชชเชฐเชฟเชฃเชพเชฎเซ‡, เชจเซ€เชšเซ‡เชจเชพ เช•เซ‹เชฒเซเชธ fsync() เช†เชตเชพ เชชเซƒเชทเซเช เซ‹ เชธเชพเชฅเซ‡ เช•เช‚เชˆ เช•เชฐเชถเซ‹ เชจเชนเซ€เช‚. เช† เช•เชพเชฐเชฃเซ‡, เชธเช‚เชถเซ‹เชงเชฟเชค เชชเซƒเชทเซเช เซ‹ เชฎเซ‡เชฎเชฐเซ€เชฎเชพเช‚ เชธเช‚เช—เซเชฐเชนเชฟเชค เชฅเชพเชฏ เช›เซ‡ เช…เชจเซ‡ เชกเชฟเชธเซเช• เชชเชฐ เช•เซเชฏเชพเชฐเซ‡เชฏ เชฒเช–เชพเชคเชพ เชจเชฅเซ€. เช† เชเช• เชตเชพเชธเซเชคเชตเชฟเช• เช†เชชเชคเซเชคเชฟ เช›เซ‡, เช•เชพเชฐเชฃ เช•เซ‡ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชตเชฟเชšเชพเชฐเชถเซ‡ เช•เซ‡ เช…เชฎเซเช• เชกเซ‡เชŸเชพ เชกเชฟเชธเซเช• เชชเชฐ เชฒเช–เชพเชฏเซ‡เชฒ เช›เซ‡, เชชเชฐเช‚เชคเซ เชนเช•เซ€เช•เชคเชฎเชพเช‚ เชคเซ‡ เชนเชถเซ‡ เชจเชนเซ€เช‚. เช†เชตเซ€ เชจเชฟเชทเซเชซเชณเชคเชพเช“ fsync() เชฆเซเชฐเซเชฒเชญ เช›เซ‡, เช†เชตเซ€ เชชเชฐเชฟเชธเซเชฅเชฟเชคเชฟเช“เชฎเชพเช‚ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชธเชฎเชธเซเชฏเชพเชจเซ‹ เชธเชพเชฎเชจเซ‹ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชฒเช—เชญเช— เช•เช‚เชˆ เช•เชฐเซ€ เชถเช•เชคเซ€ เชจเชฅเซ€. เช† เชฆเชฟเชตเชธเซ‹เชฎเชพเช‚, เชœเซเชฏเชพเชฐเซ‡ เช†เชตเซเช‚ เชฅเชพเชฏ เช›เซ‡, PostgreSQL เช…เชจเซ‡ เช…เชจเซเชฏ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซ‹ เช•เซเชฐเซ‡เชถ เชฅเชพเชฏ เช›เซ‡. เชคเซ‡, "เชถเซเช‚ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซเชธ fsync เชจเชฟเชทเซเชซเชณเชคเชพเช“เชฎเชพเช‚เชฅเซ€ เชชเซเชจเชƒเชชเซเชฐเชพเชชเซเชค เชฅเชˆ เชถเช•เซ‡ เช›เซ‡?" เชฒเซ‡เช–เชฎเชพเช‚, เช† เชธเชฎเชธเซเชฏเชพเชจเซ€ เชตเชฟเช—เชคเชตเชพเชฐ เชถเซ‹เชง เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เช›เซ‡. เชนเชพเชฒเชฎเชพเช‚ เช† เชธเชฎเชธเซเชฏเชพเชจเซ‹ เชถเซเชฐเซ‡เชทเซเช  เช‰เช•เซ‡เชฒ เชซเซเชฒเซ‡เช— เชธเชพเชฅเซ‡ เชกเชพเชฏเชฐเซ‡เช•เซเชŸ I/O เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซ‹ เช›เซ‡ O_SYNC เช…เชฅเชตเชพ เชงเซเชตเชœ เชธเชพเชฅเซ‡ O_DSYNC. เช† เช…เชญเชฟเช—เชฎ เชธเชพเชฅเซ‡, เชธเชฟเชธเซเชŸเชฎ เชเชตเซ€ เชญเซ‚เชฒเซ‹เชจเซ€ เชœเชพเชฃ เช•เชฐเชถเซ‡ เช•เซ‡ เชœเซ‡ เชšเซ‹เช•เซเช•เชธ เชกเซ‡เชŸเชพ เชฒเช–เชตเชพเชจเซ€ เช•เชพเชฎเช—เซ€เชฐเซ€ เช•เชฐเชคเซ€ เชตเช–เชคเซ‡ เชฅเชˆ เชถเช•เซ‡ เช›เซ‡, เชชเชฐเช‚เชคเซ เช† เช…เชญเชฟเช—เชฎ เชฎเชพเชŸเซ‡ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเซ‡ เชฌเชซเชฐเซเชธเชจเซเช‚ เชธเช‚เชšเชพเชฒเชจ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡. เชคเซ‡เชจเชพ เชตเชฟเชถเซ‡ เชตเชงเซ เชตเชพเช‚เชšเซ‹ เช…เชนเซ€เช‚ ะธ เช…เชนเซ€เช‚.

O_SYNC เช…เชจเซ‡ O_DSYNC เชซเซเชฒเซ‡เช—เซเชธเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชซเชพเช‡เชฒเซ‹ เช–เซ‹เชฒเชตเซ€

เชšเชพเชฒเซ‹ เชฒเชฟเชจเช•เซเชธ เชฎเชฟเช•เซ‡เชจเชฟเชเชฎเซเชธเชจเซ€ เชšเชฐเซเชšเชพ เชชเชฐ เชชเชพเช›เชพ เชซเชฐเซ€เช เชœเซ‡ เชธเชคเชค เชกเซ‡เชŸเชพ เชธเซเชŸเซ‹เชฐเซ‡เชœ เชชเซเชฐเชฆเชพเชจ เช•เชฐเซ‡ เช›เซ‡. เชœเซ‡เชฎ เช•เซ‡, เช…เชฎเซ‡ เชงเซเชตเชœเชจเชพ เช‰เชชเชฏเซ‹เช— เชตเชฟเชถเซ‡ เชตเชพเชค เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช O_SYNC เช…เชฅเชตเชพ เชงเซเชตเชœ O_DSYNC เชธเชฟเชธเซเชŸเชฎ เช•เซ‰เชฒเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชซเชพเช‡เชฒเซ‹ เช–เซ‹เชฒเชคเซ€ เชตเช–เชคเซ‡ เช–เซเชฒเซเชฒเชพ(). เช† เช…เชญเชฟเช—เชฎ เชธเชพเชฅเซ‡, เชฆเชฐเซ‡เช• เชกเซ‡เชŸเชพ เชฒเช–เชตเชพเชจเซ€ เช•เชพเชฎเช—เซ€เชฐเซ€ เชฆเชฐเซ‡เช• เช†เชฆเซ‡เชถ เชชเช›เซ€เชจเซ€ เชœเซ‡เชฎ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ write() เชธเชฟเชธเซเชŸเชฎเชจเซ‡ เช…เชจเซเช•เซเชฐเชฎเซ‡ เช†เชฆเซ‡เชถเซ‹ เช†เชชเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ fsync() ะธ fdatasync(). เช† POSIX เชธเซเชชเชทเซเชŸเซ€เช•เชฐเชฃเซ‹ เชคเซ‡เชจเซ‡ "เชธเชฟเช‚เช•เซเชฐเซ‹เชจเชพเช‡เชเซเชก I/O เชซเชพเช‡เชฒ เช‡เชจเซเชŸเชฟเช—เซเชฐเชฟเชŸเซ€ เช•เชฎเซเชชเซเชฒเชฟเชถเชจ" เช…เชจเซ‡ "เชกเซ‡เชŸเชพ เช‡เชจเซเชŸเชฟเช—เซเชฐเชฟเชŸเซ€ เช•เชฎเซเชชเซเชฒเซ€เชถเชจ" เช•เชนเซ‡เชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เช† เช…เชญเชฟเช—เชฎเชจเซ‹ เชฎเซเช–เซเชฏ เชซเชพเชฏเชฆเซ‹ เช เช›เซ‡ เช•เซ‡ เชกเซ‡เชŸเชพเชจเซ€ เช…เช–เช‚เชกเชฟเชคเชคเชพเชจเซ‡ เชธเซเชจเชฟเชถเซเชšเชฟเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชฎเชพเชคเซเชฐ เชเช• เชœ เชธเชฟเชธเซเชŸเชฎ เช•เซ‰เชฒ เชšเชฒเชพเชตเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡, เช…เชจเซ‡ เชฌเซ‡ เชจเชนเซ€เช‚ (เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡ - write() ะธ fdatasync()). เช† เช…เชญเชฟเช—เชฎเชจเซ‹ เชฎเซเช–เซเชฏ เช—เซ‡เชฐเชฒเชพเชญ เช เช›เซ‡ เช•เซ‡ เช…เชจเซเชฐเซ‚เชช เชซเชพเช‡เชฒ เชกเชฟเชธเซเช•เซเชฐเซ€เชชเซเชŸเชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชคเชฎเชพเชฎ เชฒเซ‡เช–เชจ เช•เชพเชฎเช—เซ€เชฐเซ€ เชธเชฟเช‚เช•เซเชฐเชจเชพเช‡เช เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡, เชœเซ‡ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เช•เซ‹เชกเชจเซ‡ เชธเช‚เชฐเชšเชฟเชค เช•เชฐเชตเชพเชจเซ€ เช•เซเชทเชฎเชคเชพเชจเซ‡ เชฎเชฐเซเชฏเชพเชฆเชฟเชค เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡.

O_DIRECT เชซเซเชฒเซ‡เช— เชธเชพเชฅเซ‡ เชกเชพเชฏเชฐเซ‡เช•เซเชŸ I/O เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเซ‹

เชธเชฟเชธเซเชŸเชฎ เช•เซ‰เชฒ open() เชงเซเชตเชœเชจเซ‡ เชธเชฎเชฐเซเชฅเชจ เช†เชชเซ‡ เช›เซ‡ O_DIRECT, เชœเซ‡ เช‘เชชเชฐเซ‡เชŸเชฟเช‚เช— เชธเชฟเชธเซเชŸเชฎ เช•เซ‡เชถเชจเซ‡ เชฌเชพเชฏเชชเชพเชธ เช•เชฐเชตเชพ, I/O เช‘เชชเชฐเซ‡เชถเชจ เช•เชฐเชตเชพ, เชกเชฟเชธเซเช• เชธเชพเชฅเซ‡ เชธเซ€เชงเซ€ เช•เซเชฐเชฟเชฏเชพเชชเซเชฐเชคเชฟเช•เซเชฐเชฟเชฏเชพ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชฐเชšเชพเชฏเซ‡เชฒ เช›เซ‡. เช†, เช˜เชฃเชพ เช•เชฟเชธเซเชธเชพเช“เชฎเชพเช‚, เชคเซ‡เชจเซ‹ เช…เชฐเซเชฅ เช เช›เซ‡ เช•เซ‡ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎ เชฆเซเชตเชพเชฐเชพ เชœเชพเชฐเซ€ เช•เชฐเชพเชฏเซ‡เชฒ เชฒเช–เชพเชฃ เช†เชฆเซ‡เชถเซ‹ เชกเชฟเชธเซเช• เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเชตเชพเชจเชพ เชนเซ‡เชคเซเชฅเซ€ เชธเซ€เชงเชพ เช†เชฆเซ‡เชถเซ‹เชฎเชพเช‚ เช…เชจเซเชตเชพเชฆเชฟเชค เชฅเชถเซ‡. เชชเชฐเช‚เชคเซ, เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡, เช† เชฎเชฟเช•เซ‡เชจเชฟเชเชฎ เช•เชพเชฐเซเชฏเซ‹ เชฎเชพเชŸเซ‡ เชฐเชฟเชชเซเชฒเซ‡เชธเชฎเซ‡เชจเซเชŸ เชจเชฅเซ€ fsync() เช…เชฅเชตเชพ fdatasync(). เชนเช•เซ€เช•เชค เช เช›เซ‡ เช•เซ‡ เชกเชฟเชธเซเช• เชชเซ‹เชคเซ‡ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡ เชตเชฟเชฒเช‚เชฌ เช…เชฅเชตเชพ เช•เซ‡เชถ เชกเซ‡เชŸเชพ เชฒเช–เชตเชพ เชฎเชพเชŸเซ‡ เชฏเซ‹เช—เซเชฏ เช†เชฆเซ‡เชถเซ‹. เช…เชจเซ‡, เชคเซ‡เชจเชพเชฅเซ€ เชชเชฃ เช–เชฐเชพเชฌ, เช•เซ‡เชŸเชฒเชพเช• เช–เชพเชธ เช•เชฟเชธเซเชธเชพเช“เชฎเชพเช‚, เชงเซเชตเชœเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชคเซ€ เชตเช–เชคเซ‡ I/O เช‘เชชเชฐเซ‡เชถเชจ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ O_DIRECT, เชชเซเชฐเชธเชพเชฐเชฃ เชชเชฐเช‚เชชเชฐเชพเช—เชค เชฌเชซเชฐ เช•เชพเชฎเช—เซ€เชฐเซ€เชฎเชพเช‚. เช† เชธเชฎเชธเซเชฏเชพเชจเซ‡ เชนเชฒ เช•เชฐเชตเชพเชจเซ‹ เชธเซŒเชฅเซ€ เชธเชนเซ‡เชฒเซ‹ เชฐเชธเซเชคเซ‹ เช เช›เซ‡ เช•เซ‡ เชซเชพเช‡เชฒเซ‹ เช–เซ‹เชฒเชตเชพ เชฎเชพเชŸเซ‡ เชซเซเชฒเซ‡เช—เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเซ‹ O_DSYNC, เชœเซ‡เชจเซ‹ เช…เชฐเซเชฅ เช เชฅเชถเซ‡ เช•เซ‡ เชฆเชฐเซ‡เช• เชฒเช–เชตเชพเชจเซ€ เช•เซเชฐเชฟเชฏเชพ เช•เซ‹เชฒ เชฆเซเชตเชพเชฐเชพ เช…เชจเซเชธเชฐเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡ fdatasync().

เชคเซ‡ เชฌเชนเชพเชฐ เช†เชตเซเชฏเซเช‚ เช›เซ‡ เช•เซ‡ XFS เชซเชพเช‡เชฒเชธเชฟเชธเซเชŸเชฎเซ‡ เชคเชพเชœเซ‡เชคเชฐเชฎเชพเช‚ เชฎเชพเชŸเซ‡ "เชเชกเชชเซ€ เชชเชพเชฅ" เช‰เชฎเซ‡เชฐเซเชฏเซเช‚ เช›เซ‡ O_DIRECT|O_DSYNC- เชกเซ‡เชŸเชพ เชฐเซ‡เช•เซ‹เชฐเซเชกเซเชธ. เชœเซ‹ เชฌเซเชฒเซ‹เช•เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช“เชตเชฐเชฐเชพเชˆเชŸ เชฅเชพเชฏ เช›เซ‡ O_DIRECT|O_DSYNC, เชชเช›เซ€ XFS, เช•เซ‡เชถเชจเซ‡ เชซเซเชฒเชถ เช•เชฐเชตเชพเชจเซ‡ เชฌเชฆเชฒเซ‡, FUA เชฐเชพเช‡เชŸ เช†เชฆเซ‡เชถ เชšเชฒเชพเชตเชถเซ‡ เชœเซ‹ เช‰เชชเช•เชฐเชฃ เชคเซ‡เชจเซ‡ เชธเชชเซ‹เชฐเซเชŸ เช•เชฐเซ‡ เช›เซ‡. เชฎเซ‡เช‚ เช‰เชชเชฏเซ‹เช—เชฟเชคเชพเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช†เชจเซ€ เชšเช•เชพเชธเชฃเซ€ เช•เชฐเซ€ blktrace Linux 5.4/Ubuntu 20.04 เชธเชฟเชธเซเชŸเชฎ เชชเชฐ. เช† เช…เชญเชฟเช—เชฎ เชตเชงเซ เช•เชพเชฐเซเชฏเช•เซเชทเชฎ เชนเซ‹เชตเซ‹ เชœเซ‹เชˆเช, เช•เชพเชฐเชฃ เช•เซ‡ เชคเซ‡ เชกเชฟเชธเซเช• เชชเชฐ เชจเซเชฏเซ‚เชจเชคเชฎ เชกเซ‡เชŸเชพ เชฒเช–เซ‡ เช›เซ‡ เช…เชจเซ‡ เชเช• เช“เชชเชฐเซ‡เชถเชจเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‡ เช›เซ‡, เชฌเซ‡ เชจเชนเซ€เช‚ (เช•เซ‡เชถเชจเซ‡ เชฒเช–เซ‹ เช…เชจเซ‡ เชซเซเชฒเชถ เช•เชฐเซ‹). เชฎเชจเซ‡ เชเช• เชฒเชฟเช‚เช• เชฎเชณเซ€ เชชเซ‡เชš 2018 เช•เชฐเซเชจเชฒ เช•เซ‡ เชœเซ‡ เช† เชฎเชฟเช•เซ‡เชจเชฟเชเชฎเชจเซ‹ เช…เชฎเชฒ เช•เชฐเซ‡ เช›เซ‡. เช† เช‘เชชเซเชŸเชฟเชฎเชพเช‡เชเซ‡เชถเชจเชจเซ‡ เช…เชจเซเชฏ เชซเชพเช‡เชฒเชธเชฟเชธเซเชŸเชฎ เชชเชฐ เชฒเชพเช—เซ เช•เชฐเชตเชพ เชตเชฟเชถเซ‡ เชฅเซ‹เชกเซ€ เชšเชฐเซเชšเชพ เช›เซ‡, เชชเชฐเช‚เชคเซ เชœเซเชฏเชพเช‚ เชธเซเชงเซ€ เชนเซเช‚ เชœเชพเชฃเซเช‚ เช›เซเช‚, XFS เช เชเช•เชฎเชพเชคเซเชฐ เชซเชพเช‡เชฒเชธเชฟเชธเซเชŸเชฎ เช›เซ‡ เชœเซ‡ เช…เชคเซเชฏเชพเชฐ เชธเซเชงเซ€ เชคเซ‡เชจเซ‡ เชธเชชเซ‹เชฐเซเชŸ เช•เชฐเซ‡ เช›เซ‡.

sync_file_range() เชซเช‚เช•เซเชถเชจ

Linux เชชเชพเชธเซ‡ เชธเชฟเชธเซเชŸเชฎ เช•เซ‰เชฒ เช›เซ‡ sync_file_range(), เชœเซ‡ เชคเชฎเชจเซ‡ เชซเชพเช‡เชฒเชจเชพ เชฎเชพเชคเซเชฐ เชเช• เชญเชพเช—เชจเซ‡ เชกเชฟเชธเซเช• เชชเชฐ เชซเซเชฒเชถ เช•เชฐเชตเชพเชจเซ€ เชชเชฐเชตเชพเชจเช—เซ€ เช†เชชเซ‡ เช›เซ‡, เชธเชฎเช—เซเชฐ เชซเชพเช‡เชฒเชจเซ‡ เชจเชนเซ€เช‚. เช† เช•เซ‰เชฒ เช…เชธเชฟเช‚เช•เซเชฐเซ‹เชจเชธ เชซเซเชฒเชถ เชถเชฐเซ‚ เช•เชฐเซ‡ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡ เชชเซ‚เชฐเซเชฃ เชฅเชตเชพเชจเซ€ เชฐเชพเชน เชœเซ‹เชคเซ‹ เชจเชฅเซ€. เชชเชฐเช‚เชคเซ เชธเช‚เชฆเชฐเซเชญเชฎเชพเช‚ sync_file_range() เช† เช†เชฆเซ‡เชถ "เช–เซ‚เชฌ เชœเซ‹เช–เชฎเซ€" เชนเซ‹เชตเชพเชจเซเช‚ เช•เชนเซ‡เชตเชพเชฏ เช›เซ‡. เชคเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซ€ เชญเชฒเชพเชฎเชฃ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชคเซ€ เชจเชฅเซ€. เชฒเช•เซเชทเชฃเซ‹ เช…เชจเซ‡ เชœเซ‹เช–เชฎเซ‹ sync_file_range() เชฎเชพเช‚ เช–เซ‚เชฌ เชœ เชธเชพเชฐเซ€ เชฐเซ€เชคเซ‡ เชตเชฐเซเชฃเชตเซ‡เชฒ เช† เชธเชพเชฎเช—เซเชฐเซ€ เช–เชพเชธ เช•เชฐเซ€เชจเซ‡, เชœเซเชฏเชพเชฐเซ‡ เช•เชฐเซเชจเชฒ เชกเชฟเชธเซเช• เชชเชฐ "เช—เช‚เชฆเชพ" เชกเซ‡เชŸเชพเชจเซ‡ เชซเซเชฒเชถ เช•เชฐเซ‡ เช›เซ‡ เชคเซเชฏเชพเชฐเซ‡ เชจเชฟเชฏเช‚เชคเซเชฐเชฃ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช† เช•เซ‰เชฒ RocksDB เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‡ เช›เซ‡. เชชเชฐเช‚เชคเซ เชคเซ‡ เชœ เชธเชฎเชฏเซ‡, เชธเซเชฅเชฟเชฐ เชกเซ‡เชŸเชพ เชธเซเชŸเซ‹เชฐเซ‡เชœเชจเซ€ เช–เชพเชคเชฐเซ€ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชคเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เชชเชฃ เชฅเชพเชฏ เช›เซ‡ fdatasync(). เช† เช•เซ‹เชก เช† เชตเชฟเชทเชฏ เชชเชฐ RocksDB เชจเซ€ เช•เซ‡เชŸเชฒเซ€เช• เชฐเชธเชชเซเชฐเชฆ เชŸเชฟเชชเซเชชเชฃเซ€เช“ เช›เซ‡. เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชคเซ‡ เช•เซ‰เชฒ เชœเซ‡เชตเซเช‚ เชฒเชพเช—เซ‡ เช›เซ‡ sync_file_range() ZFS เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชคเซ€ เชตเช–เชคเซ‡ เชกเชฟเชธเซเช• เชชเชฐ เชกเซ‡เชŸเชพ เชซเซเชฒเชถ เชฅเชคเซ‹ เชจเชฅเซ€. เช…เชจเซเชญเชต เชฎเชจเซ‡ เช•เชนเซ‡ เช›เซ‡ เช•เซ‡ เชญเชพเช—เซเชฏเซ‡ เชœ เช‰เชชเชฏเซ‹เช—เชฎเชพเช‚ เชฒเซ‡เชตเชพเชคเชพ เช•เซ‹เชกเชฎเชพเช‚ เชญเซ‚เชฒเซ‹ เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡. เชคเซ‡เชฅเซ€, เชœเซเชฏเชพเช‚ เชธเซเชงเซ€ เชเช•เชฆเชฎ เชœเชฐเซ‚เชฐเซ€ เชจ เชนเซ‹เชฏ เชคเซเชฏเชพเช‚ เชธเซเชงเซ€ เชนเซเช‚ เช† เชธเชฟเชธเซเชŸเชฎ เช•เซ‰เชฒเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพ เชธเชพเชฎเซ‡ เชธเชฒเชพเชน เช†เชชเซ€เชถ.

เชกเซ‡เชŸเชพ เชฆเซเชฐเชขเชคเชพเชจเซ€ เช–เชพเชคเชฐเซ€ เช•เชฐเชตเชพเชฎเชพเช‚ เชฎเชฆเชฆ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชธเชฟเชธเซเชŸเชฎ เช•เซ‰เชฒเซเชธ

เชนเซเช‚ เชจเชฟเชทเซเช•เชฐเซเชท เชชเชฐ เช†เชตเซเชฏเซ‹ เช›เซเช‚ เช•เซ‡ เชคเซเชฏเชพเช‚ เชคเซเชฐเชฃ เช…เชญเชฟเช—เชฎเซ‹ เช›เซ‡ เชœเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เชธเชคเชค I/O เช•เชพเชฎเช—เซ€เชฐเซ€ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชฅเชˆ เชถเช•เซ‡ เช›เซ‡. เชคเซ‡ เชฌเชงเชพเชจเซ‡ เชซเช‚เช•เซเชถเชจ เช•เซ‰เชฒเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ fsync() เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€ เชฎเชพเชŸเซ‡ เชœเซเชฏเชพเช‚ เชซเชพเช‡เชฒ เชฌเชจเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เชนเชคเซ€. เช† เช…เชญเชฟเช—เชฎเซ‹ เช›เซ‡:

  1. เช•เชพเชฐเซเชฏ เช•เซ‰เชฒ fdatasync() เช…เชฅเชตเชพ fsync() เช•เชพเชฐเซเชฏ เชชเช›เซ€ write() (เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเซ‹ เชตเชงเซ เชธเชพเชฐเซเช‚ fdatasync()).
  2. เชงเซเชตเชœ เชธเชพเชฅเซ‡ เช–เซ‹เชฒเซ‡เชฒ เชซเชพเช‡เชฒ เชตเชฐเซเชฃเชจเช•เชฐเซเชคเชพ เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเชตเซเช‚ O_DSYNC เช…เชฅเชตเชพ O_SYNC (เชตเชงเซ เชธเชพเชฐเซเช‚ - เชงเซเชตเชœ เชธเชพเชฅเซ‡ O_DSYNC).
  3. เช†เชฆเซ‡เชถ เชตเชชเชฐเชพเชถ pwritev2() เชงเซเชตเชœ เชธเชพเชฅเซ‡ RWF_DSYNC เช…เชฅเชตเชพ RWF_SYNC (เชชเซเชฐเชพเชงเชพเชจเซเชฏ เชงเซเชตเชœ เชธเชพเชฅเซ‡ RWF_DSYNC).

เชชเซเชฐเชฆเชฐเซเชถเชจ เชจเซ‹เช‚เชงเซ‹

เชฎเซ‡เช‚ เชคเชชเชพเชธ เช•เชฐเซ‡เชฒเซ€ เชตเชฟเชตเชฟเชง เชฎเชฟเช•เซ‡เชจเชฟเชเชฎเซเชธเชจเซ€ เช•เชพเชฎเช—เซ€เชฐเซ€เชจเซ‡ เชฎเซ‡เช‚ เช•เชพเชณเชœเซ€เชชเซ‚เชฐเซเชตเช• เชฎเชพเชชเซ€ เชจเชฅเซ€. เชคเซ‡เชฎเชจเชพ เช•เชพเชฎเชจเซ€ เชเชกเชชเชฎเชพเช‚ เชฎเซ‡เช‚ เชœเซ‡ เชคเชซเชพเชตเชคเซ‹ เชœเซ‹เชฏเชพ เชคเซ‡ เชฌเชนเซ เช“เช›เชพ เช›เซ‡. เช†เชจเซ‹ เช…เชฐเซเชฅ เช เช›เซ‡ เช•เซ‡ เชนเซเช‚ เช–เซ‹เชŸเซ‹ เชนเซ‹เชˆ เชถเช•เซเช‚ เช›เซเช‚, เช…เชจเซ‡ เช…เชจเซเชฏ เชชเชฐเชฟเชธเซเชฅเชฟเชคเชฟเช“เชฎเชพเช‚ เชธเชฎเชพเชจ เชตเชธเซเชคเซ เช…เชฒเช— เชชเชฐเชฟเชฃเชพเชฎเซ‹ เชฌเชคเชพเชตเซ€ เชถเช•เซ‡ เช›เซ‡. เชชเซเชฐเชฅเชฎ, เชนเซเช‚ เชถเซเช‚ เชชเซเชฐเชญเชพเชตเชจเซ‡ เชตเชงเซ เช…เชธเชฐ เช•เชฐเซ‡ เช›เซ‡ เชคเซ‡ เชตเชฟเชถเซ‡ เชตเชพเชค เช•เชฐเซ€เชถ, เช…เชจเซ‡ เชชเช›เซ€, เชชเซเชฐเชฆเชฐเซเชถเชจเชจเซ‡ เช“เช›เซ€ เช…เชธเชฐ เช•เชฐเซ‡ เช›เซ‡ เชคเซ‡ เชตเชฟเชถเซ‡.

  1. เชซเชพเช‡เชฒ เชกเซ‡เชŸเชพเชจเซ‡ เช“เชตเชฐเชฐเชพเช‡เชŸ เช•เชฐเชตเซเช‚ เชซเชพเช‡เชฒเชฎเชพเช‚ เชกเซ‡เชŸเชพ เช‰เชฎเซ‡เชฐเชตเชพ เช•เชฐเชคเชพเช‚ เชตเชงเซ เชเชกเชชเซ€ เช›เซ‡ (เชชเซเชฐเชฆเชฐเซเชถเชจ เชฒเชพเชญ 2-100% เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡). เชซเชพเช‡เชฒ เชธเชพเชฅเซ‡ เชกเซ‡เชŸเชพ เชœเซ‹เชกเชตเชพ เชฎเชพเชŸเซ‡ เชซเชพเช‡เชฒเชจเชพ เชฎเซ‡เชŸเชพเชกเซ‡เชŸเชพเชฎเชพเช‚ เชตเชงเชพเชฐเชพเชจเชพ เชซเซ‡เชฐเชซเชพเชฐเซ‹เชจเซ€ เชœเชฐเซ‚เชฐ เชชเชกเซ‡ เช›เซ‡, เชธเชฟเชธเซเชŸเชฎ เช•เซ‰เชฒ เชชเช›เซ€ เชชเชฃ fallocate(), เชชเชฐเช‚เชคเซ เช† เช…เชธเชฐเชจเซ€ เชคเซ€เชตเซเชฐเชคเชพ เช…เชฒเช— เช…เชฒเช— เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡. เชนเซเช‚ เชถเซเชฐเซ‡เชทเซเช  เชชเซเชฐเชฆเชฐเซเชถเชจ เชฎเชพเชŸเซ‡, เช•เซ‰เชฒ เช•เชฐเชตเชพเชจเซ€ เชญเชฒเชพเชฎเชฃ เช•เชฐเซเช‚ เช›เซเช‚ fallocate() เชœเชฐเซ‚เชฐเซ€ เชœเช—เซเชฏเชพ เช…เช—เชพเช‰เชฅเซ€ เชซเชพเชณเชตเชตเชพ เชฎเชพเชŸเซ‡. เชชเช›เซ€ เช† เชœเช—เซเชฏเชพ เชธเซเชชเชทเซเชŸเชชเชฃเซ‡ เชถเซ‚เชจเซเชฏเชฅเซ€ เชญเชฐเซ‡เชฒเซ€ เชนเซ‹เชตเซ€ เชœเซ‹เชˆเช เช…เชจเซ‡ เชฌเซ‹เชฒเชพเชตเชตเซ€ เชœเซ‹เชˆเช fsync(). เช†เชจเชพเชฅเซ€ เชซเชพเชˆเชฒ เชธเชฟเชธเซเชŸเชฎเชฎเชพเช‚ เชฒเชพเช—เชคเชพเชตเชณเช—เชคเชพ เชฌเซเชฒเซ‹เช•เซเชธเชจเซ‡ "เช…เชจเชฒเซ‰เช•เซ‡เชŸเซ‡เชก" เชจเซ‡ เชฌเชฆเชฒเซ‡ "เชซเชพเชณเชตเซ‡เชฒ" เชคเชฐเซ€เช•เซ‡ เชšเชฟเชนเซเชจเชฟเชค เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡. เช† เชเช• เชจเชพเชจเซ‹ (เชฒเช—เชญเช— 2%) เชชเซเชฐเชฆเชฐเซเชถเชจ เชธเซเชงเชพเชฐเชฃเชพ เช†เชชเซ‡ เช›เซ‡. เช‰เชชเชฐเชพเช‚เชค, เช•เซ‡เชŸเชฒเซ€เช• เชกเชฟเชธเซเช•เชฎเชพเช‚ เช…เชจเซเชฏ เช•เชฐเชคเชพ เชงเซ€เชฎเซ€ เชชเซเชฐเชฅเชฎ เชฌเซเชฒเซ‹เช• เชเช•เซเชธเซ‡เชธ เช•เชพเชฎเช—เซ€เชฐเซ€ เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡. เช†เชจเซ‹ เช…เชฐเซเชฅ เช เช›เซ‡ เช•เซ‡ เชถเซ‚เชจเซเชฏ เชธเชพเชฅเซ‡ เชœเช—เซเชฏเชพ เชญเชฐเชตเชพเชฅเซ€ เชจเซ‹เช‚เชงเชชเชพเชคเซเชฐ (เชฒเช—เชญเช— 100%) เชชเซเชฐเชฆเชฐเซเชถเชจ เชธเซเชงเชพเชฐเชฃเชพ เชฅเชˆ เชถเช•เซ‡ เช›เซ‡. เช–เชพเชธ เช•เชฐเซ€เชจเซ‡, เช† เชกเชฟเชธเซเช• เชธเชพเชฅเซ‡ เชฅเชˆ เชถเช•เซ‡ เช›เซ‡. AWS EBS (เช† เชฌเชฟเชจเชธเชคเซเชคเชพเชตเชพเชฐ เชกเซ‡เชŸเชพ เช›เซ‡, เชนเซเช‚ เชคเซ‡เชจเซ€ เชชเซเชทเซเชŸเชฟ เช•เชฐเซ€ เชถเช•เซเชฏเซ‹ เชจเชฅเซ€). เชคเซ‡ เชœ เชธเช‚เช—เซเชฐเชน เชฎเชพเชŸเซ‡ เชœเชพเชฏ เช›เซ‡. GCP เชชเชฐเซเชธเชฟเชธเซเชŸเชจเซเชŸ เชกเชฟเชธเซเช• (เช…เชจเซ‡ เช† เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชœ เช…เชงเชฟเช•เซƒเชค เชฎเชพเชนเชฟเชคเซ€ เช›เซ‡, เชชเชฐเซ€เช•เซเชทเชฃเซ‹ เชฆเซเชตเชพเชฐเชพ เชชเซเชทเซเชŸเชฟ เชฅเชฏเซ‡เชฒ เช›เซ‡). เช…เชจเซเชฏ เชจเชฟเชทเซเชฃเชพเชคเซ‹เช เชชเชฃ เชเชตเซเช‚ เชœ เช•เชฐเซเชฏเซเช‚ เช›เซ‡ เช…เชตเชฒเซ‹เช•เชจเชตเชฟเชตเชฟเชง เชกเชฟเชธเซเช• เชธเชพเชฅเซ‡ เชธเช‚เชฌเช‚เชงเชฟเชค.
  2. เช“เช›เชพ เชธเชฟเชธเซเชŸเชฎ เช•เซ‰เชฒเซเชธ, เช‰เชšเซเชš เช•เชพเชฐเซเชฏเช•เซเชทเชฎเชคเชพ (เช—เซ‡เช‡เชจ เชฒเช—เชญเช— 5% เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡). เชคเซ‡ เช•เซ‰เชฒ เชœเซ‡เชตเซเช‚ เชฒเชพเช—เซ‡ เช›เซ‡ open() เชงเซเชตเชœ เชธเชพเชฅเซ‡ O_DSYNC เช…เชฅเชตเชพ เช•เซ‰เชฒ เช•เชฐเซ‹ pwritev2() เชงเซเชตเชœ เชธเชพเชฅเซ‡ RWF_SYNC เชเชกเชชเซ€ เช•เซ‰เชฒ fdatasync(). เชฎเชจเซ‡ เชถเช‚เช•เชพ เช›เซ‡ เช•เซ‡ เช…เชนเซ€เช‚เชจเซ‹ เชฎเซเชฆเซเชฆเซ‹ เช เช›เซ‡ เช•เซ‡ เช† เช…เชญเชฟเช—เชฎ เชธเชพเชฅเซ‡, เชนเช•เซ€เช•เชค เช เช›เซ‡ เช•เซ‡ เชธเชฎเชพเชจ เช•เชพเชฐเซเชฏเชจเซ‡ เช‰เช•เซ‡เชฒเชตเชพ เชฎเชพเชŸเซ‡ เช“เช›เชพ เชธเชฟเชธเซเชŸเชฎ เช•เซ‰เชฒเซเชธ เช•เชฐเชตเชพ เชชเชกเซ‡ เช›เซ‡ (เชฌเซ‡เชจเซ‡ เชฌเชฆเชฒเซ‡ เชเช• เช•เซ‰เชฒ) เชญเซ‚เชฎเชฟเช•เชพ เชญเชœเชตเซ‡ เช›เซ‡. เชชเชฐเช‚เชคเซ เชชเซเชฐเชฆเชฐเซเชถเชจ เชคเชซเชพเชตเชค เช–เซ‚เชฌ เชœ เชจเชพเชจเซ‹ เช›เซ‡, เชคเซ‡เชฅเซ€ เชคเชฎเซ‡ เชคเซ‡เชจเซ‡ เชธเชฐเชณเชคเชพเชฅเซ€ เช…เชตเช—เชฃเซ€ เชถเช•เซ‹ เช›เซ‹ เช…เชจเซ‡ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชฎเชพเช‚ เช•เช‚เชˆเช• เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹ เชœเซ‡ เชคเซ‡เชจเชพ เชคเชฐเซเช•เชจเซ€ เช—เซ‚เช‚เชšเชตเชฃ เชคเชฐเชซ เชฆเซ‹เชฐเซ€ เชœเชคเซเช‚ เชจเชฅเซ€.

เชœเซ‹ เชคเชฎเชจเซ‡ เชŸเช•เชพเช‰ เชกเซ‡เชŸเชพ เชธเซเชŸเซ‹เชฐเซ‡เชœเชจเชพ เชตเชฟเชทเชฏเชฎเชพเช‚ เชฐเชธ เชนเซ‹เชฏ, เชคเซ‹ เช…เชนเซ€เช‚ เช•เซ‡เชŸเชฒเซ€เช• เช‰เชชเชฏเซ‹เช—เซ€ เชธเชพเชฎเช—เซเชฐเซ€ เช›เซ‡:

  • I/O เชเช•เซเชธเซ‡เชธ เชชเชฆเซเชงเชคเชฟเช“ เช‡เชจเชชเซเชŸ/เช†เช‰เชŸเชชเซเชŸ เชฎเชฟเช•เซ‡เชจเชฟเชเชฎเซเชธเชจเซ€ เชฎเซ‚เชณเชญเซ‚เชค เชฌเชพเชฌเชคเซ‹เชจเซ€ เชเชพเช‚เช–เซ€.
  • เชกเซ‡เชŸเชพ เชกเชฟเชธเซเช• เชธเซเชงเซ€ เชชเชนเซ‹เช‚เชšเซ‡ เชคเซ‡เชจเซ€ เช–เชพเชคเชฐเซ€ เช•เชฐเชตเซ€ - เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชฅเซ€ เชกเชฟเชธเซเช• เชคเชฐเชซ เชœเชตเชพเชจเชพ เชฎเชพเชฐเซเช—เชฎเชพเช‚ เชกเซ‡เชŸเชพเชจเซเช‚ เชถเซเช‚ เชฅเชพเชฏ เช›เซ‡ เชคเซ‡ เชตเชฟเชถเซ‡เชจเซ€ เชตเชพเชฐเซเชคเชพ.
  • เชคเชฎเชพเชฐเซ‡ เชธเชฎเชพเชตเชฟเชทเซเชŸ เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€ เช•เซเชฏเชพเชฐเซ‡ fsync เช•เชฐเชตเซ€ เชœเซ‹เชˆเช - เช•เซเชฏเชพเชฐเซ‡ เช…เชฐเชœเซ€ เช•เชฐเชตเซ€ เชคเซ‡ เชชเซเชฐเชถเซเชจเชจเซ‹ เชœเชตเชพเชฌ fsync() เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€เช“ เชฎเชพเชŸเซ‡. เชŸเซ‚เช‚เช•เชฎเชพเช‚, เชคเซ‡ เชคเชพเชฐเชฃ เช†เชชเซ‡ เช›เซ‡ เช•เซ‡ เชจเชตเซ€ เชซเชพเช‡เชฒ เชฌเชจเชพเชตเชคเซ€ เชตเช–เชคเซ‡ เชคเชฎเชพเชฐเซ‡ เช† เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡, เช…เชจเซ‡ เช† เชญเชฒเชพเชฎเชฃเชจเซเช‚ เช•เชพเชฐเชฃ เช เช›เซ‡ เช•เซ‡ Linux เชฎเชพเช‚ เชธเชฎเชพเชจ เชซเชพเช‡เชฒเชจเชพ เช˜เชฃเชพ เชธเช‚เชฆเชฐเซเชญเซ‹ เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡.
  • Linux เชชเชฐ SQL เชธเชฐเซเชตเชฐ: FUA เช†เช‚เชคเชฐเชฟเช• - Linux เชชเซเชฒเซ‡เชŸเชซเซ‹เชฐเซเชฎ เชชเชฐ SQL เชธเชฐเซเชตเชฐเชฎเชพเช‚ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชธเชคเชค เชกเซ‡เชŸเชพ เชธเซเชŸเซ‹เชฐเซ‡เชœ เชฒเชพเช—เซ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ เชคเซ‡เชจเซเช‚ เชตเชฐเซเชฃเชจ เช…เชนเซ€เช‚ เช›เซ‡. เช…เชนเซ€เช‚ Windows เช…เชจเซ‡ Linux เชธเชฟเชธเซเชŸเชฎ เช•เซ‰เชฒเซเชธ เชตเชšเซเชšเซ‡ เช•เซ‡เชŸเชฒเซ€เช• เชฐเชธเชชเซเชฐเชฆ เชธเชฐเช–เชพเชฎเชฃเซ€เช“ เช›เซ‡. เชฎเชจเซ‡ เชฒเช—เชญเช— เช–เชพเชคเชฐเซ€ เช›เซ‡ เช•เซ‡ XFS เชจเชพ FUA เช‘เชชเซเชŸเชฟเชฎเชพเช‡เชเซ‡เชถเชจ เชตเชฟเชถเซ‡ เชฎเซ‡เช‚ เชถเซ€เช–เซเชฏเชพ เช•เซ‡ เช† เชธเชพเชฎเช—เซเชฐเซ€เชจเซ‹ เช†เชญเชพเชฐ เชนเชคเซ‹.

เชถเซเช‚ เชคเชฎเซ‡ เช•เซเชฏเชพเชฐเซ‡เชฏ เชเชตเซ‹ เชกเซ‡เชŸเชพ เช—เซเชฎเชพเชตเซเชฏเซ‹ เช›เซ‡ เชœเซ‡ เชคเชฎเซ‡ เชตเชฟเชšเชพเชฐเซเชฏเซเช‚ เชนเชคเซเช‚ เช•เซ‡ เชกเชฟเชธเซเช• เชชเชฐ เชธเซเชฐเช•เซเชทเชฟเชค เชฐเซ€เชคเซ‡ เชธเช‚เช—เซเชฐเชนเชฟเชค เช›เซ‡?

เชŸเช•เชพเช‰ เชกเซ‡เชŸเชพ เชธเซเชŸเซ‹เชฐเซ‡เชœ เช…เชจเซ‡ Linux เชซเชพเช‡เชฒ API

เชŸเช•เชพเช‰ เชกเซ‡เชŸเชพ เชธเซเชŸเซ‹เชฐเซ‡เชœ เช…เชจเซ‡ Linux เชซเชพเช‡เชฒ API

เชธเซ‹เชฐเซเชธ: www.habr.com