เมื่อวานฉันพยายามรวบรวมแพ็คเกจROOTจากแหล่งที่มา ตั้งแต่ผมได้รับการรวบรวมไว้ในเครื่องมอนสเตอร์ 6 make -j 6
หลักฉันตัดสินใจที่จะไปข้างหน้าและสร้างโดยใช้หลายแกนใช้ การคอมไพล์นั้นราบรื่นและเร็วมากในตอนแรก แต่ในบางจุดmake
ใช้ CPU 100% เพียงแกนเดียว
ฉันทำ Google และพบโพสต์นี้บนกระดานข้อความ ROOT เนื่องจากฉันสร้างคอมพิวเตอร์เครื่องนี้ขึ้นมาเองฉันจึงกังวลว่าฉันไม่ได้ใช้ฮีทซิงค์อย่างถูกต้องและ CPU นั้นร้อนเกินไปหรือมีอะไรบางอย่าง น่าเสียดายที่ฉันไม่มีตู้เย็นในที่ทำงานที่ฉันสามารถติดมันได้ค่ะ ;-)
ฉันติดตั้งlm-sensors
แพคเกจและวิ่งmake -j 6
อีกครั้งคราวนี้ตรวจสอบอุณหภูมิของ CPU แม้ว่าจะสูง (ใกล้ถึง 60 C) แต่ก็ไม่เคยผ่านอุณหภูมิสูงหรือวิกฤต
ฉันพยายามวิ่งmake -j 4
แต่make
บางครั้งก็หยุดทำงานในระหว่างการรวบรวมคราวนี้ในจุดที่ต่างออกไป
ในที่สุดฉันก็รวบรวมทำงานmake
และก็ทำงานได้ดี คำถามของฉันคือทำไมมันแขวนอยู่ เนื่องจากความจริงที่ว่ามันหยุดที่จุดที่แตกต่างกันสองจุดฉันจะเดาว่ามันเป็นเพราะสภาพการแข่งขันบางอย่าง แต่ฉันคิดว่าmake
ควรฉลาดพอที่จะรับทุกอย่างในลำดับที่ถูกต้องเนื่องจากมันมี-j
ตัวเลือก
-j >1
สรุปว่าไม่มีใครสามารถที่จะรวบรวมมันด้วย
$(shell ...)
ถูกเรียกใช้คำสั่งในท้ายที่สุดซึ่งเป็นที่รอสำหรับการป้อนข้อมูลจาก stdin
นี่เป็นสาเหตุเมื่อตัวแปรว่างเปล่าและไม่มีการส่งผ่านอาร์กิวเมนต์ไฟล์ไปยังคำสั่ง
strace -p <pid>
และดูว่าคุณสามารถค้นหาสิ่งที่มันกำลังมองหา / strace จะแสดงเฉพาะ syscalls ให้คุณ (ไม่ใช่การเรียกใช้ฟังก์ชั่น) แต่ก็ยังสามารถให้ข้อมูลที่มีค่าแก่คุณได้ถ้ามันหมุนขณะที่ดูหรือหาไฟล์ใดไฟล์หนึ่ง