เมื่อการคอมไพล์ไม่ใช่แค่รันคำสั่ง: เครื่องมือใหม่ที่ช่วยให้เห็น “เบื้องหลัง” การ build โปรแกรมแบบเรียลไทม์
Daniel Hooper นักพัฒนาผู้หลงใหลในการทำงานของระบบปฏิบัติการ ได้สร้างเครื่องมือชื่อว่า “What the Fork” เพื่อช่วยให้เห็นภาพการ build โปรแกรมแบบเรียลไทม์ โดยเฉพาะในโปรเจกต์ขนาดใหญ่ที่ใช้ build system อย่าง make, cargo, gradle, หรือ xcodebuild
แนวคิดคือ การ build โปรแกรมคือการรันคำสั่งจำนวนมากที่เชื่อมโยงกัน ซึ่งบางครั้งก็มีขั้นตอนที่ไม่จำเป็นหรือซ้ำซ้อน เช่น การเรียก cmake หลายรอบ หรือการไม่ใช้ parallelism ทั้งที่มี CPU หลายคอร์ว่างอยู่
“What the Fork” จะแสดงผลเป็นกล่อง ๆ บน timeline โดยแต่ละกล่องแทน process ที่ถูกเรียกขึ้นมา พร้อมข้อมูลว่าใช้เวลานานแค่ไหน, รันคำสั่งอะไร, และอยู่ใน directory ไหน ซึ่งช่วยให้เห็นว่า build ใช้ทรัพยากรอย่างไร และตรงไหนที่ควรปรับปรุง
ที่น่าสนใจคือ เครื่องมือนี้ไม่ได้จำกัดแค่การ build โปรแกรมเท่านั้น เพราะมันใช้การดักฟัง system call อย่าง fork, exec, และ exit ซึ่งหมายความว่าเราสามารถใช้มันวิเคราะห์โปรแกรมใด ๆ ที่เรียก subprocess ได้เช่นกัน
จุดเด่นของเครื่องมือ What the Fork
แสดงภาพการ build โปรแกรมแบบเรียลไทม์ด้วย UI ที่เข้าใจง่าย
รองรับทุกภาษาและ build system เช่น make, cargo, gradle, npm, zig, xcodebuild
ใช้ system call (fork, exec, exit) ในการติดตาม process ที่ถูกเรียก
วิธีใช้งานเบื้องต้น
พิมพ์คำสั่ง wtf นำหน้าคำสั่ง build เช่น wtf make หรือ wtf cargo build
UI จะแสดงกล่องของแต่ละ process ตามลำดับเวลา พร้อมข้อมูลประกอบ
ตัวอย่างปัญหาที่พบจากการใช้งานจริง
cargo ไม่ใช้ parallelism แม้มี CPU หลายคอร์ ทำให้ build ช้ากว่าที่ควร
cmake เรียกคำสั่งซ้ำซ้อน เช่น ตรวจสอบ path และ OS version หลายสิบครั้ง
xcodebuild มีช่วง idle หลายนาที ทั้งที่ยังมีงานให้ทำ
zig build สุ่มลำดับการ build dependency ทำให้บางครั้ง parallelism หายไป
ประโยชน์ที่เกินกว่าแค่การ build
สามารถใช้วิเคราะห์โปรแกรมอื่นที่เรียก subprocess ได้ เช่น CI/CD pipeline หรือ server startup
ช่วยให้ทีม dev เห็นภาพรวมของการทำงาน และปรับปรุงประสิทธิภาพได้ตรงจุด
https://danielchasehooper.com/posts/syscall-build-snooping/
Daniel Hooper นักพัฒนาผู้หลงใหลในการทำงานของระบบปฏิบัติการ ได้สร้างเครื่องมือชื่อว่า “What the Fork” เพื่อช่วยให้เห็นภาพการ build โปรแกรมแบบเรียลไทม์ โดยเฉพาะในโปรเจกต์ขนาดใหญ่ที่ใช้ build system อย่าง make, cargo, gradle, หรือ xcodebuild
แนวคิดคือ การ build โปรแกรมคือการรันคำสั่งจำนวนมากที่เชื่อมโยงกัน ซึ่งบางครั้งก็มีขั้นตอนที่ไม่จำเป็นหรือซ้ำซ้อน เช่น การเรียก cmake หลายรอบ หรือการไม่ใช้ parallelism ทั้งที่มี CPU หลายคอร์ว่างอยู่
“What the Fork” จะแสดงผลเป็นกล่อง ๆ บน timeline โดยแต่ละกล่องแทน process ที่ถูกเรียกขึ้นมา พร้อมข้อมูลว่าใช้เวลานานแค่ไหน, รันคำสั่งอะไร, และอยู่ใน directory ไหน ซึ่งช่วยให้เห็นว่า build ใช้ทรัพยากรอย่างไร และตรงไหนที่ควรปรับปรุง
ที่น่าสนใจคือ เครื่องมือนี้ไม่ได้จำกัดแค่การ build โปรแกรมเท่านั้น เพราะมันใช้การดักฟัง system call อย่าง fork, exec, และ exit ซึ่งหมายความว่าเราสามารถใช้มันวิเคราะห์โปรแกรมใด ๆ ที่เรียก subprocess ได้เช่นกัน
จุดเด่นของเครื่องมือ What the Fork
แสดงภาพการ build โปรแกรมแบบเรียลไทม์ด้วย UI ที่เข้าใจง่าย
รองรับทุกภาษาและ build system เช่น make, cargo, gradle, npm, zig, xcodebuild
ใช้ system call (fork, exec, exit) ในการติดตาม process ที่ถูกเรียก
วิธีใช้งานเบื้องต้น
พิมพ์คำสั่ง wtf นำหน้าคำสั่ง build เช่น wtf make หรือ wtf cargo build
UI จะแสดงกล่องของแต่ละ process ตามลำดับเวลา พร้อมข้อมูลประกอบ
ตัวอย่างปัญหาที่พบจากการใช้งานจริง
cargo ไม่ใช้ parallelism แม้มี CPU หลายคอร์ ทำให้ build ช้ากว่าที่ควร
cmake เรียกคำสั่งซ้ำซ้อน เช่น ตรวจสอบ path และ OS version หลายสิบครั้ง
xcodebuild มีช่วง idle หลายนาที ทั้งที่ยังมีงานให้ทำ
zig build สุ่มลำดับการ build dependency ทำให้บางครั้ง parallelism หายไป
ประโยชน์ที่เกินกว่าแค่การ build
สามารถใช้วิเคราะห์โปรแกรมอื่นที่เรียก subprocess ได้ เช่น CI/CD pipeline หรือ server startup
ช่วยให้ทีม dev เห็นภาพรวมของการทำงาน และปรับปรุงประสิทธิภาพได้ตรงจุด
https://danielchasehooper.com/posts/syscall-build-snooping/
🧠 เมื่อการคอมไพล์ไม่ใช่แค่รันคำสั่ง: เครื่องมือใหม่ที่ช่วยให้เห็น “เบื้องหลัง” การ build โปรแกรมแบบเรียลไทม์
Daniel Hooper นักพัฒนาผู้หลงใหลในการทำงานของระบบปฏิบัติการ ได้สร้างเครื่องมือชื่อว่า “What the Fork” เพื่อช่วยให้เห็นภาพการ build โปรแกรมแบบเรียลไทม์ โดยเฉพาะในโปรเจกต์ขนาดใหญ่ที่ใช้ build system อย่าง make, cargo, gradle, หรือ xcodebuild
แนวคิดคือ การ build โปรแกรมคือการรันคำสั่งจำนวนมากที่เชื่อมโยงกัน ซึ่งบางครั้งก็มีขั้นตอนที่ไม่จำเป็นหรือซ้ำซ้อน เช่น การเรียก cmake หลายรอบ หรือการไม่ใช้ parallelism ทั้งที่มี CPU หลายคอร์ว่างอยู่
“What the Fork” จะแสดงผลเป็นกล่อง ๆ บน timeline โดยแต่ละกล่องแทน process ที่ถูกเรียกขึ้นมา พร้อมข้อมูลว่าใช้เวลานานแค่ไหน, รันคำสั่งอะไร, และอยู่ใน directory ไหน ซึ่งช่วยให้เห็นว่า build ใช้ทรัพยากรอย่างไร และตรงไหนที่ควรปรับปรุง
ที่น่าสนใจคือ เครื่องมือนี้ไม่ได้จำกัดแค่การ build โปรแกรมเท่านั้น เพราะมันใช้การดักฟัง system call อย่าง fork, exec, และ exit ซึ่งหมายความว่าเราสามารถใช้มันวิเคราะห์โปรแกรมใด ๆ ที่เรียก subprocess ได้เช่นกัน
✅ จุดเด่นของเครื่องมือ What the Fork
➡️ แสดงภาพการ build โปรแกรมแบบเรียลไทม์ด้วย UI ที่เข้าใจง่าย
➡️ รองรับทุกภาษาและ build system เช่น make, cargo, gradle, npm, zig, xcodebuild
➡️ ใช้ system call (fork, exec, exit) ในการติดตาม process ที่ถูกเรียก
✅ วิธีใช้งานเบื้องต้น
➡️ พิมพ์คำสั่ง wtf นำหน้าคำสั่ง build เช่น wtf make หรือ wtf cargo build
➡️ UI จะแสดงกล่องของแต่ละ process ตามลำดับเวลา พร้อมข้อมูลประกอบ
✅ ตัวอย่างปัญหาที่พบจากการใช้งานจริง
➡️ cargo ไม่ใช้ parallelism แม้มี CPU หลายคอร์ ทำให้ build ช้ากว่าที่ควร
➡️ cmake เรียกคำสั่งซ้ำซ้อน เช่น ตรวจสอบ path และ OS version หลายสิบครั้ง
➡️ xcodebuild มีช่วง idle หลายนาที ทั้งที่ยังมีงานให้ทำ
➡️ zig build สุ่มลำดับการ build dependency ทำให้บางครั้ง parallelism หายไป
✅ ประโยชน์ที่เกินกว่าแค่การ build
➡️ สามารถใช้วิเคราะห์โปรแกรมอื่นที่เรียก subprocess ได้ เช่น CI/CD pipeline หรือ server startup
➡️ ช่วยให้ทีม dev เห็นภาพรวมของการทำงาน และปรับปรุงประสิทธิภาพได้ตรงจุด
https://danielchasehooper.com/posts/syscall-build-snooping/
0 Comments
0 Shares
39 Views
0 Reviews