[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