Когда я (пере) собираю большие системы на настольном компьютере / ноутбуке, я советую makeиспользовать более одного потока для увеличения скорости компиляции, например:
$ make -j$[ $K * $C ]
Где $Cдолжен указать число ядер (которые мы можем предположить , чтобы быть числом с одной цифрой) машина имеет, а $Kто , что я меняться от 2до 4, в зависимости от настроения.
Так, например, я мог бы сказать, make -j12если у меня есть 4 ядра, указывая makeна использование до 12 потоков.
Мое объяснение состоит в том, что если я использую только $Cпотоки, ядра будут простаивать, пока процессы заняты извлечением данных с дисков. Но если я не ограничу количество потоков (то есть make -j), я рискую тратить время на переключение контекста, нехватку памяти или что-то еще хуже . Предположим, у машины есть $Mгигабайты памяти (где $Mпорядка 10).
Поэтому мне было интересно, существует ли установленная стратегия выбора наиболее эффективного числа потоков для запуска.
