From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on sa.local.altlinux.org X-Spam-Level: X-Spam-Status: No, score=-4.3 required=5.0 tests=ALL_TRUSTED,BAYES_00, RP_MATCHES_RCVD autolearn=unavailable autolearn_force=no version=3.4.1 To: ALT Linux Team development discussions , "Anton V. Boyarshinov" References: <20210217225518.k3zlhvofkr5a2rzy@example.org> <20210217232237.GH23794@altlinux.org> <20210218113756.GA32487@altlinux.org> <36b7252b-b1be-b0d0-b91d-7265aa90fd37@basealt.ru> <20210218215202.GB25729@imap.altlinux.org> <53db4ff7-eee6-d2c8-e29f-1a1f5994f27a@basealt.ru> <20210219105057.GA8935@imap.altlinux.org> <7e6f7724-005f-3873-1306-fd92325d8d68@basealt.ru> <20210219135010.0dd7f313@tower> From: Alexey Sheplyakov Message-ID: Date: Mon, 22 Feb 2021 12:54:29 +0400 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.6.1 MIME-Version: 1.0 In-Reply-To: <20210219135010.0dd7f313@tower> Content-Type: text/plain; charset=koi8-r Content-Language: en-US Content-Transfer-Encoding: 8bit Cc: Michael Shigorin Subject: Re: [devel] =?utf-8?b?0J4g0L/RgNC+0L/Rg9GB0LrQvdC+0Lkg0YHQv9C+0YE=?= =?utf-8?b?0L7QsdC90L7RgdGC0Lgg0YPRgdGC0YDQvtC50YHRgtCyINGF0YDQsNC90LU=?= =?utf-8?b?0L3QuNGPIChSZTogVGltZSBsaW1pdCk=?= X-BeenThere: devel@lists.altlinux.org X-Mailman-Version: 2.1.12 Precedence: list Reply-To: ALT Linux Team development discussions List-Id: ALT Linux Team development discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 22 Feb 2021 08:54:34 -0000 Archived-At: List-Archive: List-Post: On 19.02.2021 17:50, Anton V. Boyarshinov wrote: > В Fri, 19 Feb 2021 16:29:15 +0400 > Alexey Sheplyakov пишет: > >> При скорости записи 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