บริบทจะเปลี่ยนช้าลงมากในเมล็ดลินุกซ์ใหม่
เรากำลังต้องการอัพเกรดระบบปฏิบัติการบนเซิร์ฟเวอร์ของเราจาก Ubuntu 10.04 LTS เป็น Ubuntu 12.04 LTS น่าเสียดายที่ดูเหมือนว่าเวลาในการตอบสนองในการรันเธรดที่รันได้นั้นเพิ่มขึ้นอย่างมีนัยสำคัญจาก 2.6 เคอร์เนลเป็น 3.2 เคอร์เนล ในความเป็นจริงตัวเลขเวลาแฝงที่เราได้รับนั้นยากที่จะเชื่อ ให้ฉันเจาะจงมากขึ้นเกี่ยวกับการทดสอบ เรามีโปรแกรมที่ทำงานสองเธรด เธรดแรกได้รับเวลาปัจจุบัน (ในเห็บโดยใช้ RDTSC) แล้วส่งสัญญาณตัวแปรเงื่อนไขวินาทีละครั้ง เธรดที่สองรอตัวแปรเงื่อนไขและตื่นขึ้นมาเมื่อมีการส่งสัญญาณ จากนั้นจะได้รับเวลาปัจจุบัน (ในเห็บโดยใช้ RDTSC) ความแตกต่างระหว่างเวลาในเธรดที่สองและเวลาในเธรดแรกจะถูกคำนวณและแสดงบนคอนโซล หลังจากนี้เธรดที่สองจะรอตัวแปรเงื่อนไขอีกครั้ง เธรดแรกจะส่งสัญญาณอีกครั้งหลังจากผ่านไปประมาณหนึ่งวินาที ดังนั้นโดยสรุปเราจะได้รับการสื่อสารแบบเธรดต่อเธรดผ่านการวัดเวลาแฝงตัวแปรเงื่อนไขหนึ่งวินาทีเป็นผล ในเคอร์เนล 2.6.32 เวลาแฝงนี้อยู่ที่ใดที่หนึ่งตามลำดับของ 2.8-3.5 us ซึ่งสมเหตุสมผล ในเคอร์เนล 3.2.0 เวลาแฝงนี้เพิ่มขึ้นเป็นที่ใดที่หนึ่งตามลำดับ 40-100 เรา ฉันได้ยกเว้นความแตกต่างใด ๆ ในฮาร์ดแวร์ระหว่างโฮสต์ทั้งสอง พวกเขาทำงานบนฮาร์ดแวร์ที่เหมือนกัน (โปรเซสเซอร์ซ็อกเก็ตคู่ X5687 {Westmere-EP} ที่ทำงานที่ 3.6 GHz พร้อมกับไฮเปอร์เธรดความเร็วขั้นตอนและสถานะ …