ΠΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π° ΡΠ΅ΡΠΈΡ ΠΏΠ°ΡΡΠ΅ΠΉ Π΄Π»Ρ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π² ΡΠ΄ΡΠΎ Linux 5.20, Π΄ΠΎΠ±Π°Π²Π»ΡΡΡΠ°Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎΠΉ Π±ΡΡΠ΅ΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ Π² ΡΠ°ΠΉΠ»ΠΎΠ²ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ XFS ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° io_uring. ΠΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ΅ΡΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ, ΠΏΡΠΎΠ²Π΅Π΄ΡΠ½Π½ΡΠ΅ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ fio (1 ΠΏΠΎΡΠΎΠΊ, ΡΠ°Π·ΠΌΠ΅Ρ Π±Π»ΠΎΠΊΠ° 4ΠΊΠ±, 600 ΡΠ΅ΠΊΡΠ½Π΄, ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½Π°Ρ Π·Π°ΠΏΠΈΡΡ), ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅ ΡΠΈΡΠ»Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π²Π²ΠΎΠ΄Π°/Π²ΡΠ²ΠΎΠ΄Π° Π² ΡΠ΅ΠΊΡΠ½Π΄Ρ (IOPS) ΠΎΡ 77k Π΄ΠΎ 209k, ΡΠΊΠΎΡΠΎΡΡΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π΄Π°Π½Π½ΡΡ ΠΎΡ 314MB/s Π΄ΠΎ 854MB/s ΠΈ ΠΏΠ°Π΄Π΅Π½ΠΈΡ Π·Π°Π΄Π΅ΡΠΆΠ΅ΠΊ ΠΎΡ 9600ns Π΄ΠΎ 120ns (80 ΡΠ°Π·). sequential writes: without patch with patch libaio psync iops: 77k 209k 195K 233K bw: 314MB/s 854MB/s 790MB/s 953MB/s clat: 9600ns 120ns 540ns 3000ns
ΠΠ»Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΡΡΠΈΡ ΡΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ΠΌ io_uring Π½Π° ΡΠ΅ΡΠ΅Π΄ΠΈΠ½Ρ 2022 Π³ΠΎΠ΄Π°, ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡΡ ΡΠΎ ΡΠ»Π°ΠΉΠ΄Π°ΠΌΠΈ ΠΈ Π²ΠΈΠ΄Π΅ΠΎΠ·Π°ΠΏΠΈΡΡΡ Π΄ΠΎΠΊΠ»Π°Π΄Π° Ρ Kernel Recipes 2022. ΠΠ±Π·ΠΎΡΠ½ΠΎ ΡΠΏΠΎΠΌΠΈΠ½Π°ΡΡΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠΆΠ΅ Π²ΠΎΡΠ΅Π΄ΡΠΈΠ΅ Π² ΡΠ΄ΡΠΎ ΠΈ ΠΏΠ»Π°Π½ΠΈΡΡΠ΅ΠΌΡΠ΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠΌΠ΅ΡΠΈΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ:
- ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ (multi-shot) accept().
- ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ (multi-shot) recv() — ΠΏΠΎ ΡΠ΅ΡΡΠ°ΠΌ ΠΏΡΠΈΡΠΎΡΡ 6-8% — ΠΎΡ 1150000 Π΄ΠΎ 1200000 RPS.
- ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΈ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ liburing, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΈ ΡΠ΅ΡΡΠΎΠ².
Π ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΠΌΠΎΡΡΠΈ io_uring Π½Π° ΡΠ»Π°ΠΉΠ΄Π°Ρ ΡΠΏΠΎΠΌΠΈΠ½Π°Π΅ΡΡΡ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΡΡ ΠΎΠΆΠ΅ΡΡΡ Ρ «I/O Rings», ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠΉ Π² ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΠ΅ Direct Storage Π² Windows 11, Π° ΡΠ°ΠΊΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΡΠΎΡΡΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅Π½Π½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ, Π½ΠΎ ΠΈΠ· Π΄ΡΡΠ³ΠΈΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌ Π½Π° ΡΠ»Π°ΠΉΠ΄Π΅ Π°Π²ΡΠΎΡΠ° ΡΠΏΠΎΠΌΡΠ½ΡΡΠ° ΡΠΎΠ»ΡΠΊΠΎ FreeBSD ΡΠΎ Π·Π½Π°ΠΊΠΎΠΌ Π²ΠΎΠΏΡΠΎΡΠ°.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: opennet.ru