Π’Ρ€Π°Ρ˜Π½ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π΅ΡšΠ΅ ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° ΠΈ АПИ-ји Π·Π° Π›ΠΈΠ½ΡƒΠΊ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ΅

Π˜ΡΡ‚Ρ€Π°ΠΆΡƒΡ˜ΡƒΡ›ΠΈ одрТивост ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π΅ΡšΠ° ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° Ρƒ ΠΊΠ»Π°ΡƒΠ΄ систСмима, ΠΎΠ΄Π»ΡƒΡ‡ΠΈΠΎ сам Π΄Π° сС тСстирам ΠΊΠ°ΠΊΠΎ Π±ΠΈΡ… сС ΡƒΠ²Π΅Ρ€ΠΈΠΎ Π΄Π° Ρ€Π°Π·ΡƒΠΌΠ΅ΠΌ основнС ствари. И Π·Π°ΠΏΠΎΡ‡Π΅Ρ‚ΠΎ Ρ‡ΠΈΡ‚Π°ΡšΠ΅ΠΌ ΠΠ’ΠœΠ΅ ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅ Π΄Π° бисмо Ρ€Π°Π·ΡƒΠΌΠ΅Π»ΠΈ којС Π³Π°Ρ€Π°Π½Ρ†ΠΈΡ˜Π΅ Ρƒ Π²Π΅Π·ΠΈ са ΠΎΠ΄Ρ€ΠΆΠΈΠ²ΠΈΠΌ ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π΅ΡšΠ΅ΠΌ ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° (Ρ‚Ρ˜. Π³Π°Ρ€Π°Π½Ρ†ΠΈΡ˜Π΅ Π΄Π° Ρ›Π΅ ΠΏΠΎΠ΄Π°Ρ†ΠΈ Π±ΠΈΡ‚ΠΈ доступни Π½Π°ΠΊΠΎΠ½ ΠΊΠ²Π°Ρ€Π° систСма) Π½Π°ΠΌ Π΄Π°Ρ˜Ρƒ ΠΠœΠ’Π΅ дисковС. Π”ΠΎΠ½Π΅ΠΎ сам слСдСћС Π³Π»Π°Π²Π½Π΅ Π·Π°ΠΊΡ™ΡƒΡ‡ΠΊΠ΅: ΠΏΠΎΠ΄Π°Ρ†ΠΈ сС ΠΌΠΎΡ€Π°Ρ˜Ρƒ сматрати ΠΎΡˆΡ‚Π΅Ρ›Π΅Π½ΠΈΠΌ ΠΎΠ΄ Ρ‚Ρ€Π΅Π½ΡƒΡ‚ΠΊΠ° ΠΊΠ°Π΄Π° јС Π΄Π°Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° Π·Π° упис ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° Π΄ΠΎ Ρ‚Ρ€Π΅Π½ΡƒΡ‚ΠΊΠ° ΠΊΠ°Π΄Π° су уписани Π½Π° мСдиј Π·Π° ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π΅ΡšΠ΅. ΠœΠ΅Ρ’ΡƒΡ‚ΠΈΠΌ, Π²Π΅Ρ›ΠΈΠ½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° ΠΏΡ€ΠΈΠ»ΠΈΡ‡Π½ΠΎ срСћно користи систСмскС ΠΏΠΎΠ·ΠΈΠ²Π΅ Π·Π° снимањС ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ°.

Π£ ΠΎΠ²ΠΎΠΌ посту ΠΈΡΡ‚Ρ€Π°ΠΆΡƒΡ˜Π΅ΠΌ Ρ‚Ρ€Π°Ρ˜Π½Π΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ΅ ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π΅ΡšΠ° којС ΠΏΡ€ΡƒΠΆΠ°Ρ˜Ρƒ АПИ-ји Π·Π° Π›ΠΈΠ½ΡƒΠΊ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ΅. Π§ΠΈΠ½ΠΈ сС Π΄Π° Π±ΠΈ ΠΎΠ²Π΄Π΅ свС Ρ‚Ρ€Π΅Π±Π°Π»ΠΎ Π΄Π° Π±ΡƒΠ΄Π΅ Ρ˜Π΅Π΄Π½ΠΎΡΡ‚Π°Π²Π½ΠΎ: ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌ ΠΏΠΎΠ·ΠΈΠ²Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ write(), Π° Π½Π°ΠΊΠΎΠ½ ΡˆΡ‚ΠΎ сС ΠΎΠ²Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° Π·Π°Π²Ρ€ΡˆΠΈ, ΠΏΠΎΠ΄Π°Ρ†ΠΈ Ρ›Π΅ Π±ΠΈΡ‚ΠΈ Π±Π΅Π·Π±Π΅Π΄Π½ΠΎ сачувани Π½Π° диску. Али write() ΠΊΠΎΠΏΠΈΡ€Π° само ΠΏΠΎΠ΄Π°Ρ‚ΠΊΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅ Ρƒ кСш ΠΊΠ΅Ρ€Π½Π΅Π» који сС Π½Π°Π»Π°Π·ΠΈ Ρƒ РАМ-Ρƒ. Π”Π° бистС Π½Π°Ρ‚Π΅Ρ€Π°Π»ΠΈ систСм Π΄Π° запишС ΠΏΠΎΠ΄Π°Ρ‚ΠΊΠ΅ Π½Π° диск, ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎ јС Π΄Π° користитС Π½Π΅ΠΊΠ΅ Π΄ΠΎΠ΄Π°Ρ‚Π½Π΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ΅.

Π’Ρ€Π°Ρ˜Π½ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π΅ΡšΠ΅ ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° ΠΈ АПИ-ји Π·Π° Π›ΠΈΠ½ΡƒΠΊ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ΅

Π‘Π²Π΅ Ρƒ свСму, овај ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΡ˜Π°Π» јС Π·Π±ΠΈΡ€ΠΊΠ° бСлСшки којС сС односС Π½Π° ΠΎΠ½ΠΎ ΡˆΡ‚ΠΎ сам Π½Π°ΡƒΡ‡ΠΈΠΎ ΠΎ Ρ‚Π΅ΠΌΠΈ која ΠΌΠ΅ Π·Π°Π½ΠΈΠΌΠ°. Ако Π²Ρ€Π»ΠΎ ΠΊΡ€Π°Ρ‚ΠΊΠΎ Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌΠΎ ΠΎ најваТнијСм, испада Π΄Π° јС Π·Π° ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°ΡšΠ΅ ΠΎΠ΄Ρ€ΠΆΠΈΠ²ΠΎΠ³ ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π΅ΡšΠ° ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎ користити ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ fdatasync() ΠΈΠ»ΠΈ ΠΎΡ‚Π²ΠΎΡ€ΠΈΡ‚Π΅ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ΅ са заставицом O_DSYNC. Ако стС заинтСрСсовани Π΄Π° сазнатС вишС ΠΎ Ρ‚ΠΎΠΌΠ΅ ΡˆΡ‚Π° сС дСшава са ΠΏΠΎΠ΄Π°Ρ†ΠΈΠΌΠ° Π½Π° ΡšΠΈΡ…ΠΎΠ²ΠΎΠΌ ΠΏΡƒΡ‚Ρƒ ΠΎΠ΄ ΠΊΠΎΠ΄Π° Π΄ΠΎ диска, ΠΏΠΎΠ³Π»Π΅Π΄Π°Ρ˜Ρ‚Π΅ ΠΎΠ²ΠΎ Ρ‡Π»Π°Π½Π°ΠΊ.

ΠšΠ°Ρ€Π°ΠΊΡ‚Π΅Ρ€ΠΈΡΡ‚ΠΈΠΊΠ΅ ΠΊΠΎΡ€ΠΈΡˆΡ›Π΅ΡšΠ° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π΅ Π²Ρ€ΠΈΡ‚Π΅().

БистСмски ΠΏΠΎΠ·ΠΈΠ² write() дСфинисано Ρƒ стандарду Π˜Π•Π•Π• ПОБИКБ ΠΊΠ°ΠΎ ΠΏΠΎΠΊΡƒΡˆΠ°Ρ˜ ΡƒΠΏΠΈΡΠΈΠ²Π°ΡšΠ° ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° Ρƒ дСскриптор Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ΅. Након ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ Π·Π°Π²Ρ€ΡˆΠ΅Ρ‚ΠΊΠ° write() ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ˜Π΅ Ρ‡ΠΈΡ‚Π°ΡšΠ° ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° ΠΌΠΎΡ€Π°Ρ˜Ρƒ Π΄Π° Π²Ρ€Π°Ρ‚Π΅ Ρ‚Π°Ρ‡Π½ΠΎ Π±Π°Ρ˜Ρ‚ΠΎΠ²Π΅ који су ΠΏΡ€Π΅Ρ‚Ρ…ΠΎΠ΄Π½ΠΎ написани, Ρ‡ΠΈΠ½Π΅Ρ›ΠΈ Ρ‚ΠΎ Ρ‡Π°ΠΊ ΠΈ Π°ΠΊΠΎ сС ΠΏΠΎΠ΄Π°Ρ†ΠΈΠΌΠ° приступа ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΈΡ… процСса ΠΈΠ»ΠΈ Π½ΠΈΡ‚ΠΈ (ΠΎΠ²Π΄Π΅ Ρ€Π΅Π»Π΅Π²Π°Π½Ρ‚Π½ΠΈ Π΄Π΅ΠΎ стандарда ПОБИКБ). ОвдС, Ρƒ ΠΎΠ΄Π΅Ρ™ΠΊΡƒ ΠΎ Ρ‚ΠΎΠΌΠ΅ ΠΊΠ°ΠΊΠΎ Π½ΠΈΡ‚ΠΈ ΠΊΠΎΠΌΡƒΠ½ΠΈΡ†ΠΈΡ€Π°Ρ˜Ρƒ са Π½ΠΎΡ€ΠΌΠ°Π»Π½ΠΈΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ˜Π°ΠΌΠ° Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ°, ΠΏΠΎΡΡ‚ΠΎΡ˜ΠΈ Π½Π°ΠΏΠΎΠΌΠ΅Π½Π° која ΠΊΠ°ΠΆΠ΅ Π΄Π° Π°ΠΊΠΎ Π΄Π²Π΅ Π½ΠΈΡ‚ΠΈ ΠΏΠΎΠ·ΠΈΠ²Π°Ρ˜Ρƒ ΠΎΠ²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π΅, ΠΎΠ½Π΄Π° сваки ΠΏΠΎΠ·ΠΈΠ² ΠΌΠΎΡ€Π° Π΄Π° Π²ΠΈΠ΄ΠΈ ΠΈΠ»ΠΈ свС Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π΅ послСдицС Π΄Ρ€ΡƒΠ³ΠΎΠ³ ΠΏΠΎΠ·ΠΈΠ²Π°, ΠΈΠ»ΠΈ Π½ΠΈΡ˜Π΅Π΄Π½Ρƒ. послСдицС. Ово Π΄ΠΎΠ²ΠΎΠ΄ΠΈ Π΄ΠΎ Π·Π°ΠΊΡ™ΡƒΡ‡ΠΊΠ° Π΄Π° свС И/О ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ˜Π΅ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ΅ ΠΌΠΎΡ€Π°Ρ˜Ρƒ Π΄Ρ€ΠΆΠ°Ρ‚ΠΈ Π·Π°ΠΊΡ™ΡƒΡ‡Π°Π²Π°ΡšΠ΅ Π½Π° рСсурсу Π½Π° којСм Ρ€Π°Π΄Π΅.

Π”Π° Π»ΠΈ Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈ Π΄Π° јС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ˜Π° write() Π΄Π° Π»ΠΈ јС атомски? Π‘Π° Ρ‚Π΅Ρ…Π½ΠΈΡ‡ΠΊΠ΅ Ρ‚Π°Ρ‡ΠΊΠ΅ Π³Π»Π΅Π΄ΠΈΡˆΡ‚Π°, Π΄Π°. ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ˜Π΅ Ρ‡ΠΈΡ‚Π°ΡšΠ° ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° ΠΌΠΎΡ€Π°Ρ˜Ρƒ Π²Ρ€Π°Ρ‚ΠΈΡ‚ΠΈ ΠΈΠ»ΠΈ свС ΠΈΠ»ΠΈ Π½ΠΈΡˆΡ‚Π° ΠΎΠ΄ ΠΎΠ½ΠΎΠ³Π° ΡˆΡ‚ΠΎ јС написано write(). Али ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ˜Π° write(), ΠΏΡ€Π΅ΠΌΠ° стандарду, Π½Π΅ ΠΌΠΎΡ€Π° Π½ΡƒΠΆΠ½ΠΎ Π΄Π° сС Π·Π°Π²Ρ€ΡˆΠΈ Ρ‚Π°ΠΊΠΎ ΡˆΡ‚ΠΎ Ρ›Π΅ записати свС ΡˆΡ‚ΠΎ јС Π·Π°Ρ‚Ρ€Π°ΠΆΠ΅Π½ΠΎ. Π”ΠΎΠ·Π²ΠΎΡ™Π΅Π½ΠΎ јој јС Π΄Π° ΡƒΠΏΠΈΡˆΠ΅ само Π΄Π΅ΠΎ ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ°. На ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΌΠΎΠ³Π»ΠΈ бисмо Π΄Π° ΠΈΠΌΠ°ΠΌΠΎ Π΄Π²Π΅ Π½ΠΈΡ‚ΠΈ ΠΎΠ΄ ΠΊΠΎΡ˜ΠΈΡ… свака додајС 1024 Π±Π°Ρ˜Ρ‚Π° Π΄Π°Ρ‚ΠΎΡ‚Π΅Ρ†ΠΈ ΠΊΠΎΡ˜Ρƒ ΠΎΠΏΠΈΡΡƒΡ˜Π΅ исти дСскриптор Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ΅. Π‘Π° ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡˆΡ‚Π° стандарда, ΠΏΡ€ΠΈΡ…Π²Π°Ρ‚Ρ™ΠΈΠ² Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ Ρ›Π΅ Π±ΠΈΡ‚ΠΈ ΠΊΠ°Π΄Π° свака ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ˜Π° писања ΠΌΠΎΠΆΠ΅ Π΄ΠΎΠ΄Π°Ρ‚ΠΈ само јСдан Π±Π°Ρ˜Ρ‚ Π΄Π°Ρ‚ΠΎΡ‚Π΅Ρ†ΠΈ. ОвС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ˜Π΅ Ρ›Π΅ остати атомскС, Π°Π»ΠΈ Π½Π°ΠΊΠΎΠ½ ΡˆΡ‚ΠΎ сС Π·Π°Π²Ρ€ΡˆΠ΅, ΠΏΠΎΠ΄Π°Ρ†ΠΈ којС су уписали Ρƒ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΡƒ Ρ›Π΅ Π±ΠΈΡ‚ΠΈ помСшани. ovde јС Π²Π΅ΠΎΠΌΠ° интСрСсантна Π΄ΠΈΡΠΊΡƒΡΠΈΡ˜Π° Π½Π° ΠΎΠ²Ρƒ Ρ‚Π΅ΠΌΡƒ Π½Π° Π‘Ρ‚Π°Ρ†ΠΊ ΠžΠ²Π΅Ρ€Ρ„Π»ΠΎΠ²-Ρƒ.

Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π΅ фсинц() ΠΈ фдатасинц().

Најлакши Π½Π°Ρ‡ΠΈΠ½ Π·Π° ΠΈΠ·Π±Π°Ρ†ΠΈΠ²Π°ΡšΠ΅ ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° Π½Π° диск јС Π΄Π° ΠΏΠΎΠ·ΠΎΠ²Π΅Ρ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Ρƒ фсинц(). Ова Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π° Ρ‚Ρ€Π°ΠΆΠΈ ΠΎΠ΄ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ систСма Π΄Π° прСнСсС свС ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠΎΠ²Π°Π½Π΅ Π±Π»ΠΎΠΊΠΎΠ²Π΅ ΠΈΠ· кСша Π½Π° диск. Ово ΡƒΠΊΡ™ΡƒΡ‡ΡƒΡ˜Π΅ свС ΠΌΠ΅Ρ‚Π°ΠΏΠΎΠ΄Π°Ρ‚ΠΊΠ΅ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ΅ (Π²Ρ€Π΅ΠΌΠ΅ приступа, Π²Ρ€Π΅ΠΌΠ΅ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ΅ ΠΈΡ‚Π΄.). Π’Π΅Ρ€ΡƒΡ˜Π΅ΠΌ Π΄Π° су ΠΎΠ²ΠΈ ΠΌΠ΅Ρ‚Π°ΠΏΠΎΠ΄Π°Ρ†ΠΈ Ρ€Π΅Ρ‚ΠΊΠΎ ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΈ, ΠΏΠ° Π°ΠΊΠΎ Π·Π½Π°Ρ‚Π΅ Π΄Π° Π²Π°ΠΌ нису Π²Π°ΠΆΠ½ΠΈ, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ користити Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Ρƒ fdatasync(). Π£ ΠΏΠΎΠΌΠΎΡ› Π½Π° fdatasync() ΠΊΠ°ΠΆΠ΅ сС Π΄Π° сС Ρ‚ΠΎΠΊΠΎΠΌ Ρ€Π°Π΄Π° ΠΎΠ²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π΅ Π½Π° диск Ρ‡ΡƒΠ²Π° Ρ‚ΠΎΠ»ΠΈΠΊΠ° ΠΊΠΎΠ»ΠΈΡ‡ΠΈΠ½Π° ΠΌΠ΅Ρ‚Π°ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° која јС β€žΠ½Π΅ΠΎΠΏΡ…ΠΎΠ΄Π½Π° Π·Π° исправно ΠΈΠ·Π²Ρ€ΡˆΠ΅ΡšΠ΅ слСдСћих ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ˜Π° Ρ‡ΠΈΡ‚Π°ΡšΠ° ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ°β€œ. А Ρ‚ΠΎ јС ΡƒΠΏΡ€Π°Π²ΠΎ ΠΎΠ½ΠΎ ΠΎ Ρ‡Π΅ΠΌΡƒ Π²Π΅Ρ›ΠΈΠ½Π° Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° Π±Ρ€ΠΈΠ½Π΅.

ЈСдан ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ који сС ΠΎΠ²Π΄Π΅ ΠΌΠΎΠΆΠ΅ ΠΏΠΎΡ˜Π°Π²ΠΈΡ‚ΠΈ јС Ρ‚Π°Ρ˜ ΡˆΡ‚ΠΎ ΠΎΠ²ΠΈ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΈ Π½Π΅ Π³Π°Ρ€Π°Π½Ρ‚ΡƒΡ˜Ρƒ Π΄Π° Ρ›Π΅ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ° Π±ΠΈΡ‚ΠΈ ΠΎΡ‚ΠΊΡ€ΠΈΠ²Π΅Π½Π° Π½Π°ΠΊΠΎΠ½ ΠΌΠΎΠ³ΡƒΡ›Π΅Π³ ΠΊΠ²Π°Ρ€Π°. ΠšΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ, ΠΊΠ°Π΄Π° ΠΊΡ€Π΅ΠΈΡ€Π°Ρ‚Π΅ Π½ΠΎΠ²Ρƒ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΡƒ, ΠΌΠΎΡ€Π°Ρ‚Π΅ ΠΏΠΎΠ·Π²Π°Ρ‚ΠΈ fsync() Π·Π° Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡ˜ΡƒΠΌ који Π³Π° садрТи. Π£ супротном, Π½Π°ΠΊΠΎΠ½ Π³Ρ€Π΅ΡˆΠΊΠ΅, ΠΌΠΎΠΆΠ΅ сС испоставити Π΄Π° ΠΎΠ²Π° Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ° Π½Π΅ ΠΏΠΎΡΡ‚ΠΎΡ˜ΠΈ. Π Π°Π·Π»ΠΎΠ³ Π·Π° Ρ‚ΠΎ јС ΡˆΡ‚ΠΎ Ρƒ УНИКБ-Ρƒ, Π·Π±ΠΎΠ³ ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π΅ чврстих Π²Π΅Π·Π°, Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ° ΠΌΠΎΠΆΠ΅ ΠΏΠΎΡΡ‚ΠΎΡ˜Π°Ρ‚ΠΈ Ρƒ вишС Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡ˜ΡƒΠΌΠ°. Π‘Ρ‚ΠΎΠ³Π°, ΠΏΡ€ΠΈΠ»ΠΈΠΊΠΎΠΌ позивања fsync() Π½Π΅ ΠΏΠΎΡΡ‚ΠΎΡ˜ΠΈ Π½Π°Ρ‡ΠΈΠ½ Π΄Π° Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ° Π·Π½Π° којС ΠΏΠΎΠ΄Π°Ρ‚ΠΊΠ΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡ˜ΡƒΠΌΠ° Ρ‚Π°ΠΊΠΎΡ’Π΅ Ρ‚Ρ€Π΅Π±Π° ΠΈΠ·Π±Π°Ρ†ΠΈΡ‚ΠΈ Π½Π° диск (ΠΎΠ²Π΄Π΅ ΠœΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΠΈ вишС ΠΎ ΠΎΠ²ΠΎΠΌΠ΅). ИзглСда Π΄Π° јС Π΅ΠΊΡ‚4 систСм Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ° способан аутоматски Π΄Π° сС ΠΏΡ€ΠΈΡ˜Π°Π²Π΅ fsync() Ρƒ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡ˜ΡƒΠΌΠ΅ који садрТС ΠΎΠ΄Π³ΠΎΠ²Π°Ρ€Π°Ρ˜ΡƒΡ›Π΅ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ΅, Π°Π»ΠΈ Ρ‚ΠΎ ΠΌΠΎΠΆΠ΄Π° нијС ΡΠ»ΡƒΡ‡Π°Ρ˜ са Π΄Ρ€ΡƒΠ³ΠΈΠΌ систСмима Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ°.

Овај ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·Π°ΠΌ ΠΌΠΎΠΆΠ΅ Π±ΠΈΡ‚ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΡ‚ΠΎ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π°Π½ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΡ‚ΠΈΠΌ систСмима Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ°. користио сам Π±Π»ΠΊΡ‚Ρ€Π°Ρ†Π΅ Π΄Π° сазнатС којС сС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ˜Π΅ диска користС Ρƒ Π΅ΠΊΡ‚4 ΠΈ КБЀБ систСмима Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ°. И јСдан ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ ΠΈΠ·Π΄Π°Ρ˜Ρƒ Ρ€Π΅Π΄ΠΎΠ²Π½Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Π·Π° писањС Π½Π° диск ΠΈ Π·Π° ΡΠ°Π΄Ρ€ΠΆΠ°Ρ˜ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ΅ ΠΈ Π·Π° Π΄Π½Π΅Π²Π½ΠΈΠΊ систСма Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ°, испразнС кСш ΠΈ ΠΈΠ·Π°Ρ’Ρƒ ΠΈΠ·Π²ΠΎΡ’Π΅ΡšΠ΅ΠΌ ЀУА (присилног приступа Ρ˜Π΅Π΄ΠΈΠ½ΠΈΡ†ΠΈ, ΡƒΠΏΠΈΡΠΈΠ²Π°ΡšΠ΅ ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ Π½Π° диск, Π·Π°ΠΎΠ±ΠΈΠ»Π°Π·Π΅Ρ›ΠΈ кСш) ΡƒΠΏΠΈΡΠΈΠ²Π°ΡšΠ΅ Ρƒ Π΄Π½Π΅Π²Π½ΠΈΠΊ. Они Ρ‚ΠΎ Π²Π΅Ρ€ΠΎΠ²Π°Ρ‚Π½ΠΎ Ρ€Π°Π΄Π΅ ΠΊΠ°ΠΊΠΎ Π±ΠΈ ΠΏΠΎΡ‚Π²Ρ€Π΄ΠΈΠ»ΠΈ Π΄Π° јС Ρ‚Ρ€Π°Π½ΡΠ°ΠΊΡ†ΠΈΡ˜Π° ΠΈΠ·Π²Ρ€ΡˆΠ΅Π½Π°. На диск Ρ˜Π΅Π΄ΠΈΠ½ΠΈΡ†Π°ΠΌΠ° којС Π½Π΅ ΠΏΠΎΠ΄Ρ€ΠΆΠ°Π²Π°Ρ˜Ρƒ ЀУА, ΠΎΠ²ΠΎ ΡƒΠ·Ρ€ΠΎΠΊΡƒΡ˜Π΅ Π΄Π²Π° ΠΈΡΠΏΠΈΡ€Π°ΡšΠ° кСша. Моји СкспСримСнти су Ρ‚ΠΎ ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΈ fdatasync() ΠΌΠ°Π»ΠΎ Π±Ρ€ΠΆΠ΅ fsync(). ΠšΠΎΡ€ΠΈΡΠ½ΠΎΡΡ‚ blktrace ΡƒΠΊΠ°Π·ΡƒΡ˜Π΅ Π½Π° Ρ‚ΠΎ fdatasync() ΠΎΠ±ΠΈΡ‡Π½ΠΎ Π·Π°ΠΏΠΈΡΡƒΡ˜Π΅ мањС ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° Π½Π° диск (Ρƒ Π΅ΠΊΡ‚4 fsync() пишС 20 ΠšΠΈΠ‘, ΠΈ fdatasync() - 16 ΠšΠΈΠ‘). Π’Π°ΠΊΠΎΡ’Π΅, сазнао сам Π΄Π° јС КБЀБ Π½Π΅ΡˆΡ‚ΠΎ Π±Ρ€ΠΆΠΈ ΠΎΠ΄ Π΅ΠΊΡ‚4. И ΠΎΠ²Π΄Π΅ ΡƒΠ· ΠΏΠΎΠΌΠΎΡ› blktrace успСо Π΄Π° Ρ‚ΠΎ сазна fdatasync() ΠΈΡΠΏΡƒΡˆΡ‚Π° мањС ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° Π½Π° диск (4 ΠšΠΈΠ‘ Ρƒ КБЀБ).

ДвосмислСнС ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡ˜Π΅ којС Π½Π°ΡΡ‚Π°Ρ˜Ρƒ ΠΊΠ°Π΄Π° сС користи фсинц()

ΠœΠΎΠ³Ρƒ Π΄Π° сС сСтим Ρ‚Ρ€ΠΈ двосмислСнС ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡ˜Π΅ Ρƒ Π²Π΅Π·ΠΈ fsync()са којима сам сС сусрСо Ρƒ пракси.

ΠŸΡ€Π²ΠΈ Ρ‚Π°ΠΊΠ°Π² ΡΠ»ΡƒΡ‡Π°Ρ˜ Π΄ΠΎΠ³ΠΎΠ΄ΠΈΠΎ сС 2008. Π’Π°Π΄Π° сС ΠΈΠ½Ρ‚Π΅Ρ€Ρ„Π΅Ρ˜Ρ Π€ΠΈΡ€Π΅Ρ„ΠΎΠΊ 3 Π·Π°ΠΌΡ€Π·Π½ΡƒΠΎ Π°ΠΊΠΎ јС Π²Π΅Π»ΠΈΠΊΠΈ Π±Ρ€ΠΎΡ˜ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ° уписан Π½Π° диск. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌ јС Π±ΠΈΠΎ Ρƒ Ρ‚ΠΎΠΌΠ΅ ΡˆΡ‚ΠΎ јС ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π° ΠΈΠ½Ρ‚Π΅Ρ€Ρ„Π΅Ρ˜ΡΠ° користила Π‘ΠšΠ›ΠΈΡ‚Π΅ Π±Π°Π·Ρƒ ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° Π·Π° Ρ‡ΡƒΠ²Π°ΡšΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ˜Π° ΠΎ свом ΡΡ‚Π°ΡšΡƒ. Након свакС ΠΏΡ€ΠΎΠΌΠ΅Π½Π΅ која сС Π΄ΠΎΠ³ΠΎΠ΄ΠΈΠ»Π° Ρƒ ΠΈΠ½Ρ‚Π΅Ρ€Ρ„Π΅Ρ˜ΡΡƒ, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π° јС Π±ΠΈΠ»Π° ΠΏΠΎΠ·Π²Π°Π½Π° fsync(), ΡˆΡ‚ΠΎ јС Π΄Π°Π»ΠΎ Π΄ΠΎΠ±Ρ€Π΅ Π³Π°Ρ€Π°Π½Ρ†ΠΈΡ˜Π΅ Π·Π° стабилно ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π΅ΡšΠ΅ ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ°. Π£ Π΅ΠΊΡ‚3 систСму Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ° који сС Ρ‚Π°Π΄Π° користи, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π° fsync() ΠΈΠ·Π±Π°Ρ†ΠΈΠΎ свС β€žΠΏΡ€Ρ™Π°Π²Π΅β€œ страницС Ρƒ систСму Π½Π° диск, Π° Π½Π΅ само ΠΎΠ½Π΅ којС су Π±ΠΈΠ»Π΅ ΠΏΠΎΠ²Π΅Π·Π°Π½Π΅ са ΠΎΠ΄Π³ΠΎΠ²Π°Ρ€Π°Ρ˜ΡƒΡ›ΠΎΠΌ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠΎΠΌ. Π’ΠΎ јС Π·Π½Π°Ρ‡ΠΈΠ»ΠΎ Π΄Π° Π±ΠΈ ΠΊΠ»ΠΈΠΊ Π½Π° Π΄ΡƒΠ³ΠΌΠ΅ Ρƒ Π€ΠΈΡ€Π΅Ρ„ΠΎΠΊ-Ρƒ ΠΌΠΎΠ³Π°ΠΎ Π΄Π° ΠΏΠΎΠΊΡ€Π΅Π½Π΅ запис ΠΌΠ΅Π³Π°Π±Π°Ρ˜Ρ‚Π° ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° Π½Π° ΠΌΠ°Π³Π½Π΅Ρ‚Π½ΠΈ диск, ΡˆΡ‚ΠΎ Π±ΠΈ ΠΌΠΎΠ³Π»ΠΎ Π΄Π° ΠΏΠΎΡ‚Ρ€Π°Ρ˜Π΅ ΠΌΠ½ΠΎΠ³ΠΎ сСкунди. РСшСњС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, ΠΊΠΎΠ»ΠΈΠΊΠΎ сам Ρ€Π°Π·ΡƒΠΌΠ΅ΠΎ ΠΈΠ· Ρ‚ΠΎ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΡ˜Π°Π» јС Π±ΠΈΠΎ Π΄Π° сС Ρ€Π°Π΄ са Π±Π°Π·ΠΎΠΌ ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° прСнСсС Π½Π° асинхронС позадинскС Π·Π°Π΄Π°Ρ‚ΠΊΠ΅. Π’ΠΎ Π·Π½Π°Ρ‡ΠΈ Π΄Π° јС Π€ΠΈΡ€Π΅Ρ„ΠΎΠΊ Ρ€Π°Π½ΠΈΡ˜Π΅ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π°ΠΎ строТС Π·Π°Ρ…Ρ‚Π΅Π²Π΅ Π·Π° ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π΅ΡšΠ΅ Π½Π΅Π³ΠΎ ΡˆΡ‚ΠΎ јС заиста Π±ΠΈΠ»ΠΎ ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎ, Π° карактСристикС Π΅ΠΊΡ‚3 систСма Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ° само су ΠΏΠΎΠ³ΠΎΡ€ΡˆΠ°Π»Π΅ овај ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ.

Π”Ρ€ΡƒΠ³ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ сС Π΄ΠΎΠ³ΠΎΠ΄ΠΈΠΎ 2009. Π—Π°Ρ‚ΠΈΠΌ, Π½Π°ΠΊΠΎΠ½ ΠΏΠ°Π΄Π° систСма, корисници Π½ΠΎΠ²ΠΎΠ³ Π΅ΠΊΡ‚4 систСма Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ° су сС суочили са Ρ‡ΠΈΡšΠ΅Π½ΠΈΡ†ΠΎΠΌ Π΄Π° ΠΌΠ½ΠΎΠ³Π΅ новонасталС Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ΅ ΠΈΠΌΠ°Ρ˜Ρƒ Π½ΡƒΠ»Ρ‚Ρƒ Π΄ΡƒΠΆΠΈΠ½Ρƒ, Π°Π»ΠΈ сС Ρ‚ΠΎ нијС дСсило са ΡΡ‚Π°Ρ€ΠΈΡ˜ΠΈΠΌ Π΅ΠΊΡ‚3 систСмом Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ°. Π£ ΠΏΡ€Π΅Ρ‚Ρ…ΠΎΠ΄Π½ΠΎΠΌ пасусу сам Π³ΠΎΠ²ΠΎΡ€ΠΈΠΎ ΠΎ Ρ‚ΠΎΠΌΠ΅ ΠΊΠ°ΠΊΠΎ јС Π΅ΠΊΡ‚3 ΠΈΠ·Π±Π°Ρ†ΠΈΠΎ ΠΏΡ€Π΅Π²ΠΈΡˆΠ΅ ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° Π½Π° диск, ΡˆΡ‚ΠΎ јС доста успорило ствари. fsync(). Π”Π° Π±ΠΈ сС ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡ˜Π° ΠΏΠΎΠ±ΠΎΡ™ΡˆΠ°Π»Π°, Ρƒ Π΅ΠΊΡ‚4 само ΠΎΠ½Π΅ ΠΏΡ€Ρ™Π°Π²Π΅ страницС којС су Ρ€Π΅Π»Π΅Π²Π°Π½Ρ‚Π½Π΅ Π·Π° ΠΎΠ΄Ρ€Π΅Ρ’Π΅Π½Ρƒ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΡƒ сС ΠΈΡΠΏΡƒΡˆΡ‚Π°Ρ˜Ρƒ Π½Π° диск. А ΠΏΠΎΠ΄Π°Ρ†ΠΈ ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΈΡ… Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ° ΠΎΡΡ‚Π°Ρ˜Ρƒ Ρƒ ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΡƒΠΆΠ΅ Π½Π΅Π³ΠΎ ΠΊΠΎΠ΄ Π΅ΠΊΡ‚3. Ово јС ΡƒΡ€Π°Ρ’Π΅Π½ΠΎ Π΄Π° Π±ΠΈ сС ΠΏΠΎΠ±ΠΎΡ™ΡˆΠ°Π»Π΅ пСрформансС (ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π½ΠΎ, ΠΏΠΎΠ΄Π°Ρ†ΠΈ ΠΎΡΡ‚Π°Ρ˜Ρƒ Ρƒ ΠΎΠ²ΠΎΠΌ ΡΡ‚Π°ΡšΡƒ 30 сСкунди, ΠΎΠ²ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡˆΠ΅Ρ‚Π΅ ΠΏΠΎΠΌΠΎΡ›Ρƒ Π΄ΠΈΡ€Ρ‚ΠΈ_Π΅ΠΊΠΏΠΈΡ€Π΅_цСнтисСцс; ΠΎΠ²Π΄Π΅ ΠœΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ½Π°Ρ›ΠΈ Π΄ΠΎΠ΄Π°Ρ‚Π½Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΡ˜Π°Π»Π΅ ΠΎ Ρ‚ΠΎΠΌΠ΅). Π’ΠΎ Π·Π½Π°Ρ‡ΠΈ Π΄Π° Π²Π΅Π»ΠΈΠΊΠ° ΠΊΠΎΠ»ΠΈΡ‡ΠΈΠ½Π° ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° ΠΌΠΎΠΆΠ΅ Π±ΠΈΡ‚ΠΈ Π½Π΅ΠΏΠΎΠ²Ρ€Π°Ρ‚Π½ΠΎ ΠΈΠ·Π³ΡƒΠ±Ρ™Π΅Π½Π° Π½Π°ΠΊΠΎΠ½ ΠΊΠ²Π°Ρ€Π°. РСшСњС ΠΎΠ²ΠΎΠ³ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° јС ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π° fsync() Ρƒ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°ΠΌΠ° којС Ρ‚Ρ€Π΅Π±Π° Π΄Π° ΠΎΠ±Π΅Π·Π±Π΅Π΄Π΅ стабилно ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π΅ΡšΠ΅ ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° ΠΈ Π·Π°ΡˆΡ‚ΠΈΡ‚Π΅ ΠΈΡ… ΡˆΡ‚ΠΎ јС вишС ΠΌΠΎΠ³ΡƒΡ›Π΅ ΠΎΠ΄ послСдица ΠΊΠ²Π°Ρ€ΠΎΠ²Π°. Π€ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π° fsync() Ρ€Π°Π΄ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π΅Ρ„ΠΈΠΊΠ°ΡΠ½ΠΈΡ˜Π΅ ΠΊΠ°Π΄Π° користитС Π΅ΠΊΡ‚4 Π½Π΅Π³ΠΎ ΠΊΠ°Π΄Π° користитС Π΅ΠΊΡ‚3. НСдостатак ΠΎΠ²ΠΎΠ³ приступа јС ΡˆΡ‚ΠΎ њСгова ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π°, ΠΊΠ°ΠΎ ΠΈ Π΄ΠΎ сада, успорава ΠΈΠ·Π²Ρ€ΡˆΠ°Π²Π°ΡšΠ΅ Π½Π΅ΠΊΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ˜Π°, ΠΊΠ°ΠΎ ΡˆΡ‚ΠΎ јС ΠΈΠ½ΡΡ‚Π°Π»ΠΈΡ€Π°ΡšΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°. ΠŸΠΎΠ³Π»Π΅Π΄Π°Ρ˜Ρ‚Π΅ Π΄Π΅Ρ‚Π°Ρ™Π΅ ΠΎ ΠΎΠ²ΠΎΠΌΠ΅ ΠΎΠ²Π΄Π΅ ΠΈ ΠΎΠ²Π΄Π΅.

Π’Ρ€Π΅Ρ›ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Ρƒ Π²Π΅Π·ΠΈ fsync(), настао 2018. Π³ΠΎΠ΄ΠΈΠ½Π΅. Π—Π°Ρ‚ΠΈΠΌ јС Ρƒ ΠΎΠΊΠ²ΠΈΡ€Ρƒ ΠŸΠΎΡΡ‚Π³Ρ€Π΅Π‘ΠšΠ› ΠΏΡ€ΠΎΡ˜Π΅ΠΊΡ‚Π° ΡƒΡ‚Π²Ρ€Ρ’Π΅Π½ΠΎ Π΄Π° Π°ΠΊΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π° fsync() Π½Π°ΠΈΡ’Π΅ Π½Π° Π³Ρ€Π΅ΡˆΠΊΡƒ, "ΠΏΡ€Ρ™Π°Π²Π΅" страницС ΠΎΠ·Π½Π°Ρ‡Π°Π²Π° ΠΊΠ°ΠΎ "чистС". Као Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚, слСдСћи ΠΏΠΎΠ·ΠΈΠ²ΠΈ fsync() Они Π½Π΅ Ρ€Π°Π΄Π΅ Π½ΠΈΡˆΡ‚Π° са Ρ‚Π°ΠΊΠ²ΠΈΠΌ страницама. Π—Π±ΠΎΠ³ Ρ‚ΠΎΠ³Π° сС измСњСнС страницС Ρ‡ΡƒΠ²Π°Ρ˜Ρƒ Ρƒ ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜ΠΈ ΠΈ Π½ΠΈΠΊΠ°Π΄Π° сС Π½Π΅ ΡƒΠΏΠΈΡΡƒΡ˜Ρƒ Π½Π° диск. Ово јС ΠΏΡ€Π°Π²Π° катастрофа, ΠΏΠΎΡˆΡ‚ΠΎ Ρ›Π΅ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° мислити Π΄Π° су Π½Π΅ΠΊΠΈ ΠΏΠΎΠ΄Π°Ρ†ΠΈ уписани Π½Π° диск, Π°Π»ΠΈ Ρƒ ствари Ρ‚ΠΎ Π½Π΅Ρ›Π΅ Π±ΠΈΡ‚ΠΈ. Π’Π°ΠΊΠ²ΠΈ нСуспСси fsync() су Ρ€Π΅Ρ‚ΠΊΠ΅, ΠΏΡ€ΠΈΠΌΠ΅Π½Π° Ρƒ Ρ‚Π°ΠΊΠ²ΠΈΠΌ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡ˜Π°ΠΌΠ° Π½Π΅ ΠΌΠΎΠΆΠ΅ ΡƒΡ‡ΠΈΠ½ΠΈΡ‚ΠΈ скоро Π½ΠΈΡˆΡ‚Π° Ρƒ Π±ΠΎΡ€Π±ΠΈ ΠΏΡ€ΠΎΡ‚ΠΈΠ² ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°. ΠžΠ²ΠΈΡ… Π΄Π°Π½Π°, ΠΊΠ°Π΄Π° сС Ρ‚ΠΎ Π΄ΠΎΠ³ΠΎΠ΄ΠΈ, ΠŸΠΎΡΡ‚Π³Ρ€Π΅Π‘ΠšΠ› ΠΈ Π΄Ρ€ΡƒΠ³Π΅ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅ ΠΏΠ°Π΄Π°Ρ˜Ρƒ. ОвдС, Ρƒ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΡ˜Π°Π»Ρƒ β€žΠœΠΎΠ³Ρƒ Π»ΠΈ сС Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅ ΠΎΠΏΠΎΡ€Π°Π²ΠΈΡ‚ΠΈ ΠΎΠ΄ фсинц Π³Ρ€Π΅ΡˆΠ°ΠΊΠ°?β€œ, овај ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ јС Π΄Π΅Ρ‚Π°Ρ™Π½ΠΎ истраТСн. Π’Ρ€Π΅Π½ΡƒΡ‚Π½ΠΎ Π½Π°Ρ˜Π±ΠΎΡ™Π΅ Ρ€Π΅ΡˆΠ΅ΡšΠ΅ Π·Π° овај ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ јС ΠΊΠΎΡ€ΠΈΡˆΡ›Π΅ΡšΠ΅ Π”ΠΈΡ€Π΅Ρ†Ρ‚ И/О са заставицом O_SYNC ΠΈΠ»ΠΈ са заставом O_DSYNC. Π‘Π° ΠΎΠ²ΠΈΠΌ приступом, систСм Ρ›Π΅ ΠΏΡ€ΠΈΡ˜Π°Π²ΠΈΡ‚ΠΈ Π³Ρ€Π΅ΡˆΠΊΠ΅ којС сС ΠΌΠΎΠ³Ρƒ ΠΏΠΎΡ˜Π°Π²ΠΈΡ‚ΠΈ Ρ‚ΠΎΠΊΠΎΠΌ ΠΎΠ΄Ρ€Π΅Ρ’Π΅Π½ΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ˜Π° писања, Π°Π»ΠΈ овај приступ Π·Π°Ρ…Ρ‚Π΅Π²Π° Π΄Π° Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° сама ΡƒΠΏΡ€Π°Π²Ρ™Π° Π±Π°Ρ„Π΅Ρ€ΠΈΠΌΠ°. ΠŸΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ˜Ρ‚Π΅ вишС ΠΎ ΠΎΠ²ΠΎΠΌΠ΅ ΠΎΠ²Π΄Π΅ ΠΈ ΠΎΠ²Π΄Π΅.

ΠžΡ‚Π²Π°Ρ€Π°ΡšΠ΅ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ° ΠΏΠΎΠΌΠΎΡ›Ρƒ ΠΎΠ·Π½Π°ΠΊΠ° О_БИНЦ ΠΈ О_Π”Π‘Π˜ΠΠ¦

Π’Ρ€Π°Ρ‚ΠΈΠΌΠΎ сС Π΄ΠΈΡΠΊΡƒΡΠΈΡ˜ΠΈ ΠΎ Π›ΠΈΠ½ΡƒΠΊ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΈΠΌΠ° који ΠΎΠ±Π΅Π·Π±Π΅Ρ’ΡƒΡ˜Ρƒ стабилно ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π΅ΡšΠ΅ ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ°. НаимС, Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌΠΎ ΠΎ ΠΊΠΎΡ€ΠΈΡˆΡ›Π΅ΡšΡƒ заставС O_SYNC ΠΈΠ»ΠΈ застава O_DSYNC ΠΏΡ€ΠΈΠ»ΠΈΠΊΠΎΠΌ ΠΎΡ‚Π²Π°Ρ€Π°ΡšΠ° Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ° ΠΏΠΎΠΌΠΎΡ›Ρƒ систСмског ΠΏΠΎΠ·ΠΈΠ²Π° ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ (). Π‘Π° ΠΎΠ²ΠΈΠΌ приступом, свака ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ˜Π° писања ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° сС ΠΈΠ·Π²ΠΎΠ΄ΠΈ ΠΊΠ°ΠΎ послС свакС ΠΊΠΎΠΌΠ°Π½Π΄Π΅ write() систСму сС Π΄Π°Ρ˜Ρƒ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Ρƒ складу са Ρ‚ΠΈΠΌ fsync() ΠΈ fdatasync(). Π£ ПОБИКБ ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅ ΠΎΠ²ΠΎ сС Π·ΠΎΠ²Π΅ β€žΠ”ΠΎΠ²Ρ€ΡˆΠ΅ΡšΠ΅ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ‚Π΅Ρ‚Π° синхронизованС И/О Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ΅β€œ ΠΈ β€žΠ”ΠΎΠ²Ρ€ΡˆΠ΅ΡšΠ΅ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ‚Π΅Ρ‚Π° ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ°β€œ. Π“Π»Π°Π²Π½Π° прСдност ΠΎΠ²ΠΎΠ³ приступа јС Π΄Π° Π΄Π° бистС осигурали ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ‚Π΅Ρ‚ ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ°, ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎ јС само јСдан систСмски ΠΏΠΎΠ·ΠΈΠ², Π° Π½Π΅ Π΄Π²Π° (Π½ΠΏΡ€. write() ΠΈ fdatasync()). Π“Π»Π°Π²Π½ΠΈ нСдостатак ΠΎΠ²ΠΎΠ³ приступа јС ΡˆΡ‚ΠΎ Ρ›Π΅ сви записи који користС ΠΎΠ΄Π³ΠΎΠ²Π°Ρ€Π°Ρ˜ΡƒΡ›ΠΈ дСскриптор Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ΅ Π±ΠΈΡ‚ΠΈ синхронизовани, ΡˆΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΠΈ могућност ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€ΠΈΡ€Π°ΡšΠ° ΠΊΠΎΠ΄Π° Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅.

ΠšΠΎΡ€ΠΈΡˆΡ›Π΅ΡšΠ΅ Π”ΠΈΡ€Π΅Ρ†Ρ‚ И/О са О_Π”Π˜Π Π•Π¦Π’ заставицом

БистСмски ΠΏΠΎΠ·ΠΈΠ² open() ΠΏΠΎΠ΄Ρ€ΠΆΠ°Π²Π° заставу O_DIRECT, који јС Π΄ΠΈΠ·Π°Ρ˜Π½ΠΈΡ€Π°Π½ Π΄Π° Π·Π°ΠΎΠ±ΠΈΡ’Π΅ кСш ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ систСма Π·Π° ΠΎΠ±Π°Π²Ρ™Π°ΡšΠ΅ И/О ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ˜Π° Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎΠΌ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ†ΠΈΡ˜ΠΎΠΌ са диском. Π’ΠΎ Ρƒ ΠΌΠ½ΠΎΠ³ΠΈΠΌ ΡΠ»ΡƒΡ‡Π°Ρ˜Π΅Π²ΠΈΠΌΠ° Π·Π½Π°Ρ‡ΠΈ Π΄Π° Ρ›Π΅ Π½Π°Ρ€Π΅Π΄Π±Π΅ Π·Π° писањС којС издајС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌ Π±ΠΈΡ‚ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ ΠΏΡ€Π΅Π²Π΅Π΄Π΅Π½Π΅ Ρƒ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ којС ΠΈΠΌΠ°Ρ˜Ρƒ Π·Π° Ρ†ΠΈΡ™ Ρ€Π°Π΄ ​​са диском. Али, Π³Π΅Π½Π΅Ρ€Π°Π»Π½ΠΎ, овај ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·Π°ΠΌ нијС Π·Π°ΠΌΠ΅Π½Π° Π·Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π΅ fsync() ΠΈΠ»ΠΈ fdatasync(). Π§ΠΈΡšΠ΅Π½ΠΈΡ†Π° јС Π΄Π° сам диск ΠΌΠΎΠΆΠ΅ ΠΎΠ΄Π»ΠΎΠΆΠΈΡ‚ΠΈ ΠΈΠ»ΠΈ ΠΊΠ΅ΡˆΠΈΡ€Π°Ρ‚ΠΈ ΠΎΠ΄Π³ΠΎΠ²Π°Ρ€Π°Ρ˜ΡƒΡ›Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Π·Π° писањС ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ°. И, Π΄Π° ствар Π±ΡƒΠ΄Π΅ још Π³ΠΎΡ€Π°, Ρƒ Π½Π΅ΠΊΠΈΠΌ посСбним ΡΠ»ΡƒΡ‡Π°Ρ˜Π΅Π²ΠΈΠΌΠ° И/О ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ˜Π΅ сС ΠΎΠ±Π°Π²Ρ™Π°Ρ˜Ρƒ ΠΊΠ°Π΄Π° сС користи заставица O_DIRECT, Π΅ΠΌΠΈΡ‚ΠΎΠ²Π°ΡšΠ΅ Ρƒ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π°Π»Π½Π΅ Π±Π°Ρ„Π΅Ρ€ΠΎΠ²Π°Π½Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ˜Π΅. Најлакши Π½Π°Ρ‡ΠΈΠ½ Π΄Π° Ρ€Π΅ΡˆΠΈΡ‚Π΅ овај ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ јС Π΄Π° користитС заставицу Π·Π° ΠΎΡ‚Π²Π°Ρ€Π°ΡšΠ΅ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ° O_DSYNC, ΡˆΡ‚ΠΎ Ρ›Π΅ Π·Π½Π°Ρ‡ΠΈΡ‚ΠΈ Π΄Π° Ρ›Π΅ свака ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ˜Π° писања Π±ΠΈΡ‚ΠΈ ΠΏΡ€Π°Ρ›Π΅Π½Π° ΠΏΠΎΠ·ΠΈΠ²ΠΎΠΌ fdatasync().

Π˜ΡΠΏΠΎΡΡ‚Π°Π²ΠΈΠ»ΠΎ сС Π΄Π° јС КБЀБ систСм Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ° Π½Π΅Π΄Π°Π²Π½ΠΎ Π΄ΠΎΠ΄Π°ΠΎ "Π±Ρ€Π·Ρƒ ΠΏΡƒΡ‚Π°ΡšΡƒ" Π·Π° O_DIRECT|O_DSYNC- снимањС ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ°. Ако сС Π±Π»ΠΎΠΊ ΠΏΠΎΠ½ΠΎΠ²ΠΎ пишС ΠΏΠΎΠΌΠΎΡ›Ρƒ O_DIRECT|O_DSYNC, ΠΎΠ½Π΄Π° Ρ›Π΅ КБЀБ, умСсто ΠΈΡΠΏΠΈΡ€Π°ΡšΠ° кСша, ΠΈΠ·Π²Ρ€ΡˆΠΈΡ‚ΠΈ ЀУА ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π·Π° писањС Π°ΠΊΠΎ јС ΡƒΡ€Π΅Ρ’Π°Ρ˜ ΠΏΠΎΠ΄Ρ€ΠΆΠ°Π²Π°. Ово сам ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΎ користСћи услуТни ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌ blktrace Π½Π° систСму Π›ΠΈΠ½ΡƒΠΊ 5.4/Π£Π±ΡƒΠ½Ρ‚Ρƒ 20.04. Овај приступ Π±ΠΈ Ρ‚Ρ€Π΅Π±Π°Π»ΠΎ Π΄Π° Π±ΡƒΠ΄Π΅ Π΅Ρ„ΠΈΠΊΠ°ΡΠ½ΠΈΡ˜ΠΈ, Ρ˜Π΅Ρ€ ΠΊΠ°Π΄Π° сС користи, ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½Π° ΠΊΠΎΠ»ΠΈΡ‡ΠΈΠ½Π° ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° сС ΡƒΠΏΠΈΡΡƒΡ˜Π΅ Π½Π° диск ΠΈ користи сС јСдна ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ˜Π°, Π° Π½Π΅ Π΄Π²Π΅ (писањС ΠΈ ΠΈΡΠΏΠΈΡ€Π°ΡšΠ΅ кСша). Нашао сам Π²Π΅Π·Ρƒ Π΄ΠΎ Π·Π°ΠΊΡ€ΠΏΠ° 2018 ΠΊΠ΅Ρ€Π½Π΅Π», који ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π° овај ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·Π°ΠΌ. ΠŸΠΎΡΡ‚ΠΎΡ˜ΠΈ Π½Π΅ΠΊΠ° Π΄ΠΈΡΠΊΡƒΡΠΈΡ˜Π° ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈ ΠΎΠ²Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ˜Π΅ Π½Π° Π΄Ρ€ΡƒΠ³Π΅ систСмС Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ°, Π°Π»ΠΈ ΠΊΠΎΠ»ΠΈΠΊΠΎ ја Π·Π½Π°ΠΌ, КБЀБ јС јСдини систСм Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ° који ΠΎΠ²ΠΎ ΠΏΠΎΠ΄Ρ€ΠΆΠ°Π²Π°.

синц_Ρ„ΠΈΠ»Π΅_Ρ€Π°Π½Π³Π΅() Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π°

Π›ΠΈΠ½ΡƒΠΊ ΠΈΠΌΠ° систСмски ΠΏΠΎΠ·ΠΈΠ² синц_Ρ„ΠΈΠ»Π΅_Ρ€Π°Π½Π³Π΅(), ΡˆΡ‚ΠΎ Π²Π°ΠΌ ΠΎΠΌΠΎΠ³ΡƒΡ›Π°Π²Π° Π΄Π° испразнитС само Π΄Π΅ΠΎ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ΅ Π½Π° диск, Π° Π½Π΅ Ρ†Π΅Π»Ρƒ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΡƒ. Овај ΠΏΠΎΠ·ΠΈΠ² ΠΏΠΎΠΊΡ€Π΅Ρ›Π΅ асинхроно ΠΈΡΠΏΠΈΡ€Π°ΡšΠ΅ ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° ΠΈ Π½Π΅ Ρ‡Π΅ΠΊΠ° Π΄Π° сС Π·Π°Π²Ρ€ΡˆΠΈ. Али Ρƒ сСртификату sync_file_range() Π·Π° Ρ‚ΠΈΠΌ сС ΠΊΠ°ΠΆΠ΅ Π΄Π° јС β€žΠ²Π΅ΠΎΠΌΠ° ΠΎΠΏΠ°ΡΠ°Π½β€œ. НијС ΠΏΡ€Π΅ΠΏΠΎΡ€ΡƒΡ‡Ρ™ΠΈΠ²ΠΎ користити Π³Π°. ΠšΠ°Ρ€Π°ΠΊΡ‚Π΅Ρ€ΠΈΡΡ‚ΠΈΠΊΠ΅ ΠΈ опасности sync_file_range() Π²Π΅ΠΎΠΌΠ° Π΄ΠΎΠ±Ρ€ΠΎ описано Ρƒ ΠΎΠ²ΠΎ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΡ˜Π°Π». ΠšΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ, Ρ‡ΠΈΠ½ΠΈ сС Π΄Π° овај ΠΏΠΎΠ·ΠΈΠ² користи РоцксДБ Π·Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Ρƒ ΠΊΠ°Π΄Π° ΠΊΠ΅Ρ€Π½Π΅Π» ΠΈΠ·Π±Π°Ρ†ΠΈ ΠΏΡ€Ρ™Π°Π²Π΅ ΠΏΠΎΠ΄Π°Ρ‚ΠΊΠ΅ Π½Π° диск. Али Ρƒ исто Π²Ρ€Π΅ΠΌΠ΅, Π΄Π° Π±ΠΈ сС ΠΎΠ±Π΅Π·Π±Π΅Π΄ΠΈΠ»ΠΎ стабилно ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π΅ΡšΠ΅ ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ°, Ρ‚Π°ΠΊΠΎΡ’Π΅ сС користи fdatasync(). Π£ ΠΊΠΎΠ΄ РоцксДБ ΠΈΠΌΠ° Π½Π΅ΠΊΠΎΠ»ΠΈΠΊΠΎ Π·Π°Π½ΠΈΠΌΡ™ΠΈΠ²ΠΈΡ… ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€Π° Π½Π° ΠΎΠ²Ρƒ Ρ‚Π΅ΠΌΡƒ. На ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‡ΠΈΠ½ΠΈ сС Π΄Π° ΠΏΠΎΠ·ΠΈΠ² sync_file_range() Када користитС Π—Π€Π‘, ΠΎΠ½ Π½Π΅ ΠΈΡΠΏΡƒΡˆΡ‚Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΊΠ΅ Π½Π° диск. Π˜ΡΠΊΡƒΡΡ‚Π²ΠΎ ΠΌΠΈ Π³ΠΎΠ²ΠΎΡ€ΠΈ Π΄Π° ΠΊΠΎΠ΄ који сС Ρ€Π΅Ρ‚ΠΊΠΎ користи Π²Π΅Ρ€ΠΎΠ²Π°Ρ‚Π½ΠΎ садрТи Π³Ρ€Π΅ΡˆΠΊΠ΅. Π—Π±ΠΎΠ³ Ρ‚ΠΎΠ³Π° Π±ΠΈΡ… савСтовао Π΄Π° Π½Π΅ користитС овај систСмски ΠΏΠΎΠ·ΠΈΠ² осим Π°ΠΊΠΎ нијС апсолутно Π½Π΅ΠΎΠΏΡ…ΠΎΠ΄Π½ΠΎ.

БистСмски ΠΏΠΎΠ·ΠΈΠ²ΠΈ који ΠΏΠΎΠΌΠ°ΠΆΡƒ Π΄Π° сС ΠΎΠ±Π΅Π·Π±Π΅Π΄ΠΈ ΠΏΠΎΡΡ‚ΠΎΡ˜Π°Π½ΠΎΡΡ‚ ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ°

Π”ΠΎΡˆΠ°ΠΎ сам Π΄ΠΎ Π·Π°ΠΊΡ™ΡƒΡ‡ΠΊΠ° Π΄Π° ΠΏΠΎΡΡ‚ΠΎΡ˜Π΅ Ρ‚Ρ€ΠΈ приступа која сС ΠΌΠΎΠ³Ρƒ користити Π·Π° ΠΈΠ·Π²ΠΎΡ’Π΅ΡšΠ΅ И/О ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ˜Π° којС ΠΎΡΠΈΠ³ΡƒΡ€Π°Π²Π°Ρ˜Ρƒ ΠΏΠΎΡΡ‚ΠΎΡ˜Π°Π½ΠΎΡΡ‚ ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ°. Π‘Π²ΠΈ ΠΎΠ½ΠΈ Π·Π°Ρ…Ρ‚Π΅Π²Π°Ρ˜Ρƒ ΠΏΠΎΠ·ΠΈΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π΅ 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%) ΠΏΠΎΠ±ΠΎΡ™ΡˆΠ°ΡšΠ° пСрформанси. ΠšΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ, Ρ‚ΠΎ сС ΠΌΠΎΠΆΠ΅ Π΄ΠΎΠ³ΠΎΠ΄ΠΈΡ‚ΠΈ са дисковима АВБ Π•Π‘Π‘ (ΠΎΠ²ΠΎ су Π½Π΅Π·Π²Π°Π½ΠΈΡ‡Π½ΠΈ ΠΏΠΎΠ΄Π°Ρ†ΠΈ, нисам ΠΌΠΎΠ³Π°ΠΎ Π΄Π° ΠΏΠΎΡ‚Π²Ρ€Π΄ΠΈΠΌ). Π˜ΡΡ‚ΠΎ Π²Π°ΠΆΠΈ ΠΈ Π·Π° ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π΅ΡšΠ΅ Π“Π¦ΠŸ Ρ‚Ρ€Π°Ρ˜Π½ΠΈ диск (Π° ΠΎΠ²ΠΎ јС Π²Π΅Ρ› Π·Π²Π°Π½ΠΈΡ‡Π½Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ˜Π°, ΠΏΠΎΡ‚Π²Ρ€Ρ’Π΅Π½Π° тСстовима). И Π΄Ρ€ΡƒΠ³ΠΈ ΡΡ‚Ρ€ΡƒΡ‡ΡšΠ°Ρ†ΠΈ су ΡƒΡ€Π°Π΄ΠΈΠ»ΠΈ исто posmatranje, Π²Π΅Π·Π°Π½ΠΎ Π·Π° Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΡ‚Π΅ дисковС.
  2. Π¨Ρ‚ΠΎ јС мањС систСмских ΠΏΠΎΠ·ΠΈΠ²Π°, Ρ‚ΠΎ су пСрформансС Π²Π΅Ρ›Π΅ (Π΄ΠΎΠ±ΠΈΡ‚Π°ΠΊ ΠΌΠΎΠΆΠ΅ Π±ΠΈΡ‚ΠΈ ΠΎΠΊΠΎ 5%). ИзглСда ΠΊΠ°ΠΎ ΠΈΠ·Π°Π·ΠΎΠ² open() са заставом O_DSYNC ΠΈΠ»ΠΈ ΠΏΠΎΠ·ΠΎΠ²ΠΈΡ‚Π΅ pwritev2() са заставом RWF_SYNC Π±Ρ€ΠΆΠ΅ ΠΎΠ΄ ΠΏΠΎΠ·ΠΈΠ²Π° fdatasync(). ΠŸΡ€Π΅Ρ‚ΠΏΠΎΡΡ‚Π°Π²Ρ™Π°ΠΌ Π΄Π° јС ΠΏΠΎΠ΅Π½Ρ‚Π° ΠΎΠ²Π΄Π΅ Ρƒ Ρ‚ΠΎΠΌΠ΅ ΡˆΡ‚ΠΎ овај приступ ΠΈΠ³Ρ€Π° ΡƒΠ»ΠΎΠ³Ρƒ Ρƒ Ρ‡ΠΈΡšΠ΅Π½ΠΈΡ†ΠΈ Π΄Π° сС ΠΌΠΎΡ€Π° ΠΈΠ·Π²Ρ€ΡˆΠΈΡ‚ΠΈ мањС систСмских ΠΏΠΎΠ·ΠΈΠ²Π° Π΄Π° Π±ΠΈ сС Ρ€Π΅ΡˆΠΈΠΎ исти ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ (јСдан ΠΏΠΎΠ·ΠΈΠ² умСсто Π΄Π²Π°). Али Ρ€Π°Π·Π»ΠΈΠΊΠ° Ρƒ пСрформансама јС Π²Π΅ΠΎΠΌΠ° ΠΌΠ°Π»Π°, Ρ‚Π°ΠΊΠΎ Π΄Π° јС ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΡ‚ΠΏΡƒΠ½ΠΎ игнорисати ΠΈ користити Π½Π΅ΡˆΡ‚ΠΎ Ρƒ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜ΠΈ ΡˆΡ‚ΠΎ Π½Π΅Ρ›Π΅ ΠΊΠΎΠΌΠΏΠ»ΠΈΠΊΠΎΠ²Π°Ρ‚ΠΈ ΡšΠ΅Π½Ρƒ Π»ΠΎΠ³ΠΈΠΊΡƒ.

Ако стС заинтСрСсовани Π·Π° Ρ‚Π΅ΠΌΡƒ ΠΎΠ΄Ρ€ΠΆΠΈΠ²ΠΎΠ³ ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π΅ΡšΠ° ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ°, Π΅Π²ΠΎ Π½Π΅ΠΊΠΎΠ»ΠΈΠΊΠΎ корисних ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΡ˜Π°Π»Π°:

  • И/О ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ приступа β€” ΠΏΡ€Π΅Π³Π»Π΅Π΄ основа ΡƒΠ»Π°Π·Π½ΠΎ/ΠΈΠ·Π»Π°Π·Π½ΠΈΡ… ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·Π°ΠΌΠ°.
  • ΠžΠ±Π΅Π·Π±Π΅Ρ’ΠΈΠ²Π°ΡšΠ΅ Π΄Π° ΠΏΠΎΠ΄Π°Ρ†ΠΈ стигну Π΄ΠΎ диска β€” ΠΏΡ€ΠΈΡ‡Π° ΠΎ Ρ‚ΠΎΠΌΠ΅ ΡˆΡ‚Π° сС дСшава са ΠΏΠΎΠ΄Π°Ρ†ΠΈΠΌΠ° Π½Π° ΠΏΡƒΡ‚Ρƒ ΠΎΠ΄ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅ Π΄ΠΎ диска.
  • Када Ρ‚Ρ€Π΅Π±Π° фсинц Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡ˜ΡƒΠΌ који садрТи - ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ€ Π½Π° ΠΏΠΈΡ‚Π°ΡšΠ΅ ΠΊΠΎΠ³Π° користити fsync() Π·Π° ΠΈΠΌΠ΅Π½ΠΈΠΊΠ΅. Π£ΠΊΡ€Π°Ρ‚ΠΊΠΎ, испоставило сС Π΄Π° Ρ‚ΠΎ Ρ‚Ρ€Π΅Π±Π° Π΄Π° ΡƒΡ€Π°Π΄ΠΈΡ‚Π΅ ΠΊΠ°Π΄Π° ΠΊΡ€Π΅ΠΈΡ€Π°Ρ‚Π΅ Π½ΠΎΠ²Ρƒ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΡƒ, Π° Ρ€Π°Π·Π»ΠΎΠ³ Π·Π° ΠΎΠ²Ρƒ ΠΏΡ€Π΅ΠΏΠΎΡ€ΡƒΠΊΡƒ јС Ρ‚Π°Ρ˜ ΡˆΡ‚ΠΎ Ρƒ Π›ΠΈΠ½ΡƒΠΊΡƒ ΠΌΠΎΠΆΠ΅ Π±ΠΈΡ‚ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π΅Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈ Π½Π° исту Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΡƒ.
  • Π‘ΠšΠ› Π‘Π΅Ρ€Π²Π΅Ρ€ Π½Π° Π›ΠΈΠ½ΡƒΠΊ-Ρƒ: ЀУА Π˜Π½Ρ‚Π΅Ρ€Π½Π°Π»Ρ β€” Π΅Π²ΠΎ описа ΠΊΠ°ΠΊΠΎ јС Ρ‚Ρ€Π°Ρ˜Π½ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π΅ΡšΠ΅ ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π°Π½ΠΎ Ρƒ Π‘ΠšΠ› Π‘Π΅Ρ€Π²Π΅Ρ€ Π½Π° Π›ΠΈΠ½ΡƒΠΊ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΈ. ОвдС ΠΏΠΎΡΡ‚ΠΎΡ˜Π΅ Π½Π΅ΠΊΠ° Π·Π°Π½ΠΈΠΌΡ™ΠΈΠ²Π° ΠΏΠΎΡ€Π΅Ρ’Π΅ΡšΠ° ΠΈΠ·ΠΌΠ΅Ρ’Ρƒ Виндовс ΠΈ Π›ΠΈΠ½ΡƒΠΊ систСмских ΠΏΠΎΠ·ΠΈΠ²Π°. Π“ΠΎΡ‚ΠΎΠ²ΠΎ сам сигуран Π΄Π° сам Π·Π°Ρ…Π²Π°Ρ™ΡƒΡ˜ΡƒΡ›ΠΈ ΠΎΠ²ΠΎΠΌ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΡ˜Π°Π»Ρƒ Π½Π°ΡƒΡ‡ΠΈΠΎ ΠΎ ЀУА ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ˜ΠΈ КБЀБ-Π°.

Π”Π° Π»ΠΈ стС ΠΈΠ·Π³ΡƒΠ±ΠΈΠ»ΠΈ ΠΏΠΎΠ΄Π°Ρ‚ΠΊΠ΅ Π·Π° којС стС мислили Π΄Π° су Π±Π΅Π·Π±Π΅Π΄Π½ΠΎ ΡƒΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π΅Π½ΠΈ Π½Π° диску?

Π’Ρ€Π°Ρ˜Π½ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π΅ΡšΠ΅ ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° ΠΈ АПИ-ји Π·Π° Π›ΠΈΠ½ΡƒΠΊ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ΅

Π’Ρ€Π°Ρ˜Π½ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π΅ΡšΠ΅ ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° ΠΈ АПИ-ји Π·Π° Π›ΠΈΠ½ΡƒΠΊ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ΅

Π˜Π·Π²ΠΎΡ€: Π²Π²Π².Ρ…Π°Π±Ρ€.Ρ†ΠΎΠΌ