[devel] О пропускной способности устройств хранения (Re: Time limit)

Alexey Sheplyakov asheplyakov на basealt.ru
Пт Фев 19 15:29:15 MSK 2021


Добрый день!

On 19.02.2021 14:50, Michael Shigorin wrote:
> On Fri, Feb 19, 2021 at 10:11:01AM +0300, Anton Farygin wrote:
>>> Для нынешней RAM три гига в секунду -- это очень медленно.
>> Расскажи мне пожалуйста про производительность современной
>> памяти. Что значит "очень медленно" ?  Как ты сравнивал ?
> 
> 12 Гб/с я видел на DDR3 в 2009 году (Ломоносов);
> 10 Гб/с тогда для неё было вполне нормальным.
> Сейчас не шибко в курсе, но припоминается от
> двадцати, что ли.

$ cat > hello.c <<EOF
#include <stdio.h>
int main(int argc, char **argv) {
	printf("Hello, world\n");
	return 0;
}
EOF

$ strace -f -o gcc.log gcc -O0 -g0 -c hello.c
$ cat gcc.log | wc -l
1079

$ time gcc -O0 -g0 -c hello.c

real	0m0,046s
user	0m0,022s
sys	0m0,005s

По порядку величины  5 микросекунд на системный вызов.

$ git ls-files '*.c' | wc -l
29574

Нужно примерно 30000 * 1000 = 5 * 10**7 системных вызовов, займут 150 секунд.

$ du -sh .
5.6G	.

(исходники, объекники, история git, вообще все)

При скорости записи 250 МБ/sec (ширпотребный SSD) записать такой объем можно за
22 секунды. 15% времени, необходимого на системные вызовы.
А значит, даже бесконечно быстрый (RAM)диск ускорит сборку не более чем на 15%.


TL;DR: сборка гораздо раньше упрется в скорость выполнения системных вызовов (fork/read/write/access).


Подробная информация о списке рассылки Devel