3
แก้ไขการใช้ xargs แบบขนาน
ฉันใช้xargsโทรสคริปต์ไพ ธ อนเพื่อประมวลผลไฟล์ขนาดเล็กประมาณ 30 ล้านไฟล์ ฉันหวังว่าจะใช้xargsเพื่อขนานกระบวนการ คำสั่งที่ฉันใช้คือ: find ./data -name "*.json" -print0 | xargs -0 -I{} -P 40 python Convert.py {} > log.txt โดยทั่วไปConvert.pyจะอ่านในไฟล์jsonขนาดเล็ก(4kb) ทำการประมวลผลและเขียนไปยังไฟล์ 4kb อื่น ฉันกำลังทำงานบนเซิร์ฟเวอร์ที่มี 40 คอร์ CPU และไม่มีกระบวนการอื่นที่ใช้งาน CPU สูงบนเซิร์ฟเวอร์นี้ จากการตรวจสอบ htop (btw มีวิธีอื่นที่ดีในการตรวจสอบประสิทธิภาพของ CPU หรือไม่) ฉันพบว่า-P 40ไม่เร็วเท่าที่ควร บางครั้งแกนทั้งหมดจะหยุดและลดลงจนเกือบเป็นศูนย์ประมาณ 3-4 วินาทีจากนั้นจะฟื้นตัวเป็น 60-70% จากนั้นฉันพยายามลดจำนวนกระบวนการแบบขนานเป็น-P 20-30แต่ก็ยังไม่เร็วมาก พฤติกรรมในอุดมคติควรเป็นแบบความเร็วเชิงเส้น มีข้อเสนอแนะใด …