[devel] О пропускной способности устройств хранения (Re: Time limit)
Alexey Sheplyakov
asheplyakov на basealt.ru
Пн Фев 22 11:54:29 MSK 2021
On 19.02.2021 17:50, Anton V. Boyarshinov wrote:
> В Fri, 19 Feb 2021 16:29:15 +0400
> Alexey Sheplyakov <asheplyakov на basealt.ru> пишет:
>
>> При скорости записи 250 МБ/sec (ширпотребный SSD) записать такой объем можно за
>> 22 секунды. 15% времени, необходимого на системные вызовы.
>> А значит, даже бесконечно быстрый (RAM)диск ускорит сборку не более чем на 15%.
>>
>>
>> TL;DR: сборка гораздо раньше упрется в скорость выполнения системных вызовов (fork/read/write/access).
>
> Интересная мысль, но, с другой стороны, у нас много ядер и на всех
> выполняются процессы. А читать/писать хотят один и тот же диск, так что
> системные вызовы выполняются (во многом) параллельно,
> а пропускную способность диска приходится делить на всех...
Во-первых, диски тоже выполняют запросы параллельно. Более того,
только в таком параллельном режиме из них и можно выжать заявленную
скорость записи [1]
Во-вторых, далеко не каждый stat/access/read доходит до диска.
А самое главное - системные вызовы выполняются параллельно до тех пор,
пока vfs не начнет брать два ведра блокировок. А дальше с параллельностью
начинаются проблемы.
> а пропускную способность диска приходится делить на всех...
Точнее говоря, пропускную способность vfs приходится делить на всех.
Вот и выходит, что для того, чтобы загрузить SSD более чем на 10%
от его пропускной способности, приходится отказываться от POSIX
(и любой иерархической) файловой системы (см. ceph и прочие block
storage), и стирать границу ядро/пользователь (см. https://spdk.io)
[1] Измерял скорость синхронной записи блоками по 4 KB. Диск Intel 730k.
В один поток: 34000 KB/sec, в 4: 64000 KB/sec (суммарно). Графики и данные
можно поглядеть тут:
https://raw.githubusercontent.com/asheplyakov/ceph-jemalloc-bench/master/desktop_ssd/desktop_ssd_syncwrite_bw.png
https://raw.githubusercontent.com/asheplyakov/ceph-jemalloc-bench/master/desktop_ssd_4x/desktop_ssd_4x_bw.png
Подробная информация о списке рассылки Devel