Hôm qua tôi đã cố gắng biên dịch gói ROOT từ nguồn. Vì tôi đã biên dịch nó trên một cỗ máy quái vật 6 lõi, tôi quyết định tiếp tục và xây dựng bằng nhiều lõi sử dụng make -j 6
. Quá trình biên dịch diễn ra suôn sẻ và thực sự nhanh chóng, nhưng tại một số thời điểm, make
sử dụng CPU 100% chỉ trên một lõi.
Tôi đã làm một số việc và tìm thấy bài đăng này trên bảng tin ROOT. Kể từ khi tôi tự chế tạo máy tính này, tôi đã lo lắng rằng tôi đã không áp dụng đúng cách tản nhiệt và CPU quá nóng hoặc một cái gì đó. Thật không may, tôi không có tủ lạnh ở đây tại nơi làm việc mà tôi có thể dán nó vào. ;-)
Tôi đã cài đặt lm-sensors
gói và chạy make -j 6
lại, lần này theo dõi nhiệt độ CPU. Mặc dù nó đã lên cao (gần 60 C), nhưng nó không bao giờ vượt qua nhiệt độ cao hoặc tới hạn.
Tôi đã thử chạy make -j 4
nhưng make
đôi khi bị treo trong lúc biên dịch, lần này ở một điểm khác.
Cuối cùng, tôi biên dịch chỉ chạy make
và nó hoạt động tốt. Câu hỏi của tôi là: Tại sao nó được treo? Do thực tế là nó dừng lại ở hai điểm khác nhau, tôi đoán nó là do một số điều kiện chủng tộc, nhưng tôi nghĩ make
nên đủ thông minh để có được mọi thứ theo đúng thứ tự vì nó cung cấp -j
tùy chọn.
-j >1
.
$(shell ...)
cuối cùng đã chạy một lệnh đang chờ đầu vào từ đóstdin
. Điều này được gây ra khi một biến trống và không có đối số tệp nào được truyền cho lệnh.
strace -p <pid>
và xem liệu bạn có thể tìm hiểu xem nó đang tìm kiếm cái gì không. strace sẽ chỉ hiển thị cho bạn các tòa nhà chọc trời (không phải các cuộc gọi chức năng), nhưng nó vẫn có thể cung cấp cho bạn thông tin có giá trị nếu nó quay trong khi nhìn hoặc tìm một tệp cụ thể.