Khi tôi (tái) xây dựng các hệ thống lớn trên máy tính để bàn / máy tính xách tay, tôi bảo make
sử dụng nhiều hơn một luồng để tăng tốc độ biên dịch, như sau:
$ make -j$[ $K * $C ]
Trong trường hợp $C
có nghĩa vụ phải chỉ ra số lượng lõi (mà chúng ta có thể giả định là một số với một chữ số) máy có, trong khi $K
là một cái gì đó tôi thay đổi từ 2
tới 4
, tùy thuộc vào tâm trạng của tôi.
Vì vậy, ví dụ, tôi có thể nói make -j12
nếu tôi có 4 lõi, biểu thị make
sẽ sử dụng tối đa 12 luồng.
Lý do của tôi là, nếu tôi chỉ sử dụng các $C
luồng, các lõi sẽ không hoạt động trong khi các quá trình đang bận tìm nạp dữ liệu từ các ổ đĩa. Nhưng nếu tôi không giới hạn số lượng chủ đề (nghĩa là make -j
) tôi sẽ gặp rủi ro lãng phí thời gian chuyển đổi bối cảnh, hết bộ nhớ hoặc tệ hơn . Giả sử máy có nhiều $M
hợp đồng bộ nhớ ( $M
theo thứ tự 10).
Vì vậy, tôi đã tự hỏi nếu có một chiến lược được thiết lập để chọn số lượng luồng hiệu quả nhất để chạy.