เคอร์เนล Linux ตรวจพบความถี่ตัวประมวลผลที่ไม่ถูกต้อง


15

หลังจากการบู๊ตเย็นของเซิร์ฟเวอร์ Debian 6.0.8 (HP ProLiant) ntpdเล่นความเสียหายด้วยเวลาของระบบ: ชดเชยและกระวนกระวายใจเกี่ยวกับเซิร์ฟเวอร์เวลาอ้างอิงปกติและเชื่อถือได้ซึ่งกำลังเติบโตโดยไม่มีขีด จำกัด (โปรดทราบว่าเซิร์ฟเวอร์ที่เหมือนกันคู่ไม่มีปัญหาเลย) หลังจากความพยายามแก้ไขปัญหาntpdด้านข้างไม่สำเร็จฉันตัดสินใจลองรีบูตและทุกอย่างก็โอเค

เพื่อตรวจสอบปัญหาฉันพบความคลาดเคลื่อนนี้ซึ่งสามารถอธิบายปัญหานาฬิกาของฉัน:

root@n1:~# zgrep Detected /var/log/dmesg*
/var/log/dmesg:[    0.004000] Detected 2400.110 MHz processor.
/var/log/dmesg.0:[    0.004000] Detected 2383.579 MHz processor.
/var/log/dmesg.1.gz:[    0.004000] Detected 2400.036 MHz processor.
/var/log/dmesg.2.gz:[    0.004000] Detected 2400.298 MHz processor.
/var/log/dmesg.3.gz:[    0.004000] Detected 2400.165 MHz processor.
/var/log/dmesg.4.gz:[    0.004000] Detected 2400.410 MHz processor.

โปรดทราบว่าในการบูตครั้งที่สอง (ครั้งที่มีปัญหา) CPU freq ที่ตรวจพบเป็นค่าผิดปกติ ข้อผิดพลาดและส่วนเบี่ยงเบนมาตรฐานของความถี่ที่ตรวจพบโดยไม่เกี่ยวข้องกับค่าที่ระบุคือ +0.15 MHz ± 0.25 MHz สำหรับการบู๊ตที่มีปัญหาฉันมีข้อผิดพลาด -16.4 Mhz ซึ่งสูงกว่าที่คาดไว้ประมาณ 100 เท่า

คำถามของฉัน:

  1. ข้อผิดพลาดประเภทนี้ทำให้ntpเวลามีระเบียบวินัยไม่แน่นอน / ใช้ไม่ได้หรือไม่? นี่คือเหตุผลสำหรับปัญหานาฬิกาของฉันหรือไม่

  2. พฤติกรรมประเภทนี้เป็นอาการที่เกิดจากฮาร์ดแวร์ที่ไม่สมบูรณ์หรือไม่? เซิร์ฟเวอร์ควรเข้าสู่การบำรุงรักษา hw หรือไม่

ปรับปรุง

ข้อมูลที่เป็นประโยชน์บางอย่าง:

  • เคอร์เนลคือ 2.6.32-5-amd64 (Debian 2.6.32-48squeeze4)
  • current_clocksource คือ tsc
  • ข้อผิดพลาดสำหรับlpjคือ (แน่นอน) สอดคล้องกับข้อผิดพลาดใน CPU freq

เส้นบริบทบางอย่างสำหรับข้างต้น grep

[    0.000000] hpet clockevent registered
[    0.000000] Fast TSC calibration using PIT
[    0.004000] Detected 2400.110 MHz processor.
[    0.000008] Calibrating delay loop (skipped), value calculated using timer frequency.. 4800.22 BogoMIPS (lpj=9600440)

คำตอบ:


5

ฉันเชื่อว่าปัญหาคือความถี่ของตัวนับเวลา (TSC) ที่ระบุไม่ถูกต้อง

เห็นได้ชัดว่าเคอร์เนลกำลังปรับเทียบ TSC กับตัวจับเวลาช่วงเวลาที่ตั้งโปรแกรมได้ (PIT) โดยทั่วไปความถี่ของ CPU ที่ระบุคือ 2400.204 ± 0.134 MHz ซึ่งสอดคล้องกับความแม่นยำประมาณ 56 ppm หลังจากการบู๊ตที่มีปัญหา CPU freq ประมาณว่า 2383.579 MHz ซึ่งสอดคล้องกับข้อผิดพลาดประมาณ 6900 ppm ซึ่งntpdไม่สามารถชดเชยได้ ในความเป็นจริงในช่วง 10h30m แรกของการทำงานนาฬิการะบบจะได้รับประมาณ 4m30s ซึ่งประมาณ 7000 ppm

เนื่องจากข้อผิดพลาดในความถี่ TSC สอดคล้องกับการดริฟท์ในนาฬิการะบบฉันจะสรุปได้ว่าพฤติกรรมนาฬิกาผิดปกติเกิดจากการปรับเทียบ TSC ผิด

อย่างไรก็ตามฉันไม่เคยเห็นปัญหาใหญ่เช่นนี้: ฉันยังสงสัยเกี่ยวกับสาเหตุที่เป็นไปได้ (hw, sw?) ของการสอบเทียบที่ผิดพลาดนี้


3

พฤติกรรมประเภทนี้ผิดปกติ การตรวจสอบที่ดีคือการตรวจสอบค่าของntp.driftไฟล์เพื่อดูว่ามีการเปลี่ยนแปลงที่สำคัญเกิดขึ้นเมื่อมีการแสดงพฤติกรรมหรือไม่ หากมันยังคงเปลี่ยนแปลงอย่างมีนัยสำคัญ NTP พยายามที่จะเบี่ยงเบนปัญหา หากเป็นเช่นนั้นมันเป็นสัญญาณว่าเคอร์เนลระบุความถี่สัญญาณนาฬิกาจริงเมื่อเริ่มทำงานไม่ถูกต้องหรือตัวนาฬิกาเองช้าสำหรับส่วนที่ไม่ถูกต้องในการบูต น่าเสียดายที่เหตุการณ์นี้ไม่ใช่สัญญาณที่ชัดเจนของปัญหาฮาร์ดแวร์

หากเกิดขึ้นอีกครั้งให้ดูไฟล์ ntp.drift


หลังจากการบู๊ตที่มีปัญหา ntpd ไม่เคยมาถึง PLL ที่มีเสถียรภาพดังนั้นntpdc -c loopinfoอย่าให้ค่าความถี่ดริฟท์แก่ฉัน ตอนนี้หลังจากรีบูตทุกอย่างดูเหมือนจะเป็นไปตามลำดับด้วยค่าดริฟท์ที่มีเสถียรภาพ ... BTW คำแนะนำของคุณถูกต้องฉันกำลังตรวจสอบlog/loopstatsพฤติกรรมที่ผิดปกติ
Stefano M
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.