Для Btrfs прСдставлСны ΠΏΠ°Ρ‚Ρ‡ΠΈ с балансировкой чтСния RAID1 ΠΏΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡƒ Round-robin

Π’ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ, Ρ€Π°Π·Π²ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ измСнСния Π² Btrfs для Π±ΡƒΠ΄ΡƒΡ‰ΠΈΡ… Π²Π΅Ρ‚ΠΎΠΊ ядра Linux, принят Π½Π°Π±ΠΎΡ€ ΠΏΠ°Ρ‚Ρ‡Π΅ΠΉ с Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Ρ†ΠΈΠΊΠ»ΠΈΡ‡Π½ΠΎΠΉ балансировки ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ чтСния Π² RAID1, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π΅ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Β«Round-robinΒ». Для Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ распрСдСлСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ чтСния ΠΏΠΎ ΠΊΡ€ΡƒΠ³ΠΎΠ²ΠΎΠΌΡƒ Ρ†ΠΈΠΊΠ»Ρƒ Π² Β«/sys/fs/btrfs/<uuid>/read_policyΒ» Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Β«round-robin:[min_contiguous_read]Β», Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Β«min_contiguous_readΒ» опрСдСляСт ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ запросов, ΠΏΠΎΠ΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΡ… балансировкС ΠΌΠ΅ΠΆΠ΄Ρƒ Π·Π΅Ρ€ΠΊΠ°Π»Π°ΠΌΠΈ (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 256 KiB).

Π˜Π·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ балансировка Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ RAID1 Π² Btrfs ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠ»Π°ΡΡŒ Π½Π° основании PID процСсса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ запросил Π²Π²ΠΎΠ΄/Π²Ρ‹Π²ΠΎΠ΄. Подобная схСма Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π»Π° Π² систСмах Π³Π΄Π΅ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ создаёт мноТСство Ρ€Π°Π·Π½Ρ‹Ρ… процСссов, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΏΡ€ΠΈ ΠΎΠ΄Π½ΠΎΠ·Π°Π΄Π°Ρ‡Π½ΠΎΠΉ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ Π½Π΅ позволяла Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ максимальной ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. НапримСр, Π² ΠΏΡ€ΠΎΠ²Π΅Π΄Ρ‘Π½Π½Ρ‹Ρ… тСстах Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Β«round-robinΒ» снизило врСмя выполнСния процСсса Π΄Π΅Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ с 18 Π΄ΠΎ 8.8 сСкунд.

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰Π΅Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Β«devid:<devid>Β» Π² Β«/sys/fs/btrfs//read_policyΒ». Π”Π°Π½Π½Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ балансировку ΠΈ прСдписываСт Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ чтСния Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ диска.

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

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