Из различных источников ( как этот ) утверждают, что вы можете распараллелить ваши задания по сборке с:
make -j n
, где n
- это количество заданий.В QNX 6.5.0 с GNU Make 3.81 я заметил, что число не работает.Если я позвоню make -j
(без номера), будет запущено огромное количество компиляторов, и процессоры будут полностью использованы:
CPU states: 80.5% user, 5.0% kernel
CPU 0 Idle: 15.2%
CPU 1 Idle: 13.2%
CPU 2 Idle: 14.7%
Memory: 0 total, 281M avail, page size 4K
PID TID PRI STATE HH:MM:SS CPU COMMAND
8200 2 21 Rcv 0:00:17 12.02% devb-eide
43565087 1 10 Rdy 0:00:00 11.38% make
43819103 1 10 Rply 0:00:00 3.01% cmake
43716678 1 10 Rply 0:00:00 2.80% cmake
43671611 1 10 Rply 0:00:00 1.87% make
43589671 1 10 Rply 0:00:00 1.73% make
43569184 1 10 Rply 0:00:00 1.73% make
43573283 1 10 Rply 0:00:00 1.46% make
43667514 1 10 Rply 0:00:00 1.28% make
43839590 1 10 Send 0:00:00 1.10% cmake
К сожалению, когда я использую make -j
, имея огромное количество одновременных сборок означаетчто моя ограниченная виртуальная машина быстро исчерпывает память.
Но если я добавлю число (например, make -j 4
, которое соответствует количеству ядер в моей виртуальной машине), то это только когда-либо запустит 1 процесс.Это также происходит со следующими вариантами:
make -j4
make -j 4
make --jobs=4
make --jobs 4
, а также с некоторыми другими номерами процессоров (2, 3, 4, 5, 6, 7, 8).
Почему make -j
с указанным номером не работает в QNX?