Для ядра Linux ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Ρ‹ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΏΠΎΠ²Ρ‹ΡˆΠ°ΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΠΎΠ² Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π°

ЙСнс Эксбо (Jens Axboe), ΡΠΎΠ·Π΄Π°Ρ‚Π΅Π»ΡŒ io_uring ΠΈ ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΠΎΠ² Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π° CFQ, Deadline ΠΈ Noop, ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΠ» свои экспСримСнты с ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π° Π² ядрС Linux. На этот Ρ€Π°Π· ΠΏΠΎΠ΄ Π΅Π³ΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΏΠΎΠΏΠ°Π»ΠΈ ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΠΈ Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π° BFQ ΠΈ mq-deadline, оказавшиСся ΡƒΠ·ΠΊΠΈΠΌ мСстом ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ Π² случаС скоростных Π½Π°ΠΊΠΎΠΏΠΈΡ‚Π΅Π»Π΅ΠΉ NVMe.

Как ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΎ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ ситуации, ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… ΠΏΡ€ΠΈΡ‡ΠΈΠ½ Π½Π΅ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ подсистСм ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΠΎΠ² Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π° стали ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с ΠΊΠΎΠ½ΠΊΡƒΡ€ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΌΠΈ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°ΠΌΠΈ («lock contention», ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΡƒ, ΡƒΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡƒΡŽ Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠΌ). Благодаря ΠΌΠ΅Ρ€Π°ΠΌ, Π½Π°Ρ†Π΅Π»Π΅Π½Π½Ρ‹ΠΌ Π½Π° сниТСниС сопСрничСства ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ, Ρ‚Π°ΠΊΠΈΠΌ ΠΊΠ°ΠΊ сСриализация диспСтчСризации ΠΈ вставки запросов, ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΠΎΠ² выросла Π² рядС ситуаций Π² Ρ€Π°Π·Ρ‹ (Π² IOPS).

ΠŸΡ€ΠΈ тСстировании ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΠ° BFQ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ΠΎΠΉ fio ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ выросла с 567К Π΄ΠΎ 1551К ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π° Π² сСкунду, Π° конкурСнция Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ снизилась с 96% Π΄ΠΎ 30%. Π’ случаС с mq-deadline ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ послС примСнСния ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… ΠΏΠ°Ρ‚Ρ‡Π΅ΠΉ ΠΏΡ€ΠΈ использовании NVMe-накопитСля ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ»Π°ΡΡŒ с 1070К Π΄ΠΎ 2560K ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π° Π² сСкунду (IOPS), Π° конкурСнция Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ снизилась с 94% Π΄ΠΎ 23%.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ