การวิเคราะห์ Core Dump พบบั๊กเก่าอายุ 18 ปีในระบบ

โมเดลและเอเจนต์ของ OpenAI อาศัยโครงสร้างพื้นฐานข้อมูลที่ปรับขนาดได้เพื่อค้นหาข้อมูลที่เกี่ยวข้องในขณะที่โมเดลกำลังประมวลผลคำถามของผู้ใช้

เมื่อเกิดการขัดข้อง ระบบจะใช้ fatal signal handler เพื่อบันทึก stack trace และอัปโหลด core dumps ไปยัง Azure blob storage สำหรับการวิเคราะห์ในภายหลัง

แม้ว่างานหลายอย่างจะถูกรวมเข้าด้วยกันใน thread pool เดียวกัน แต่การรวมค่าความแตกต่างทั้งหมดทำให้ได้การประมาณเวลา CPU ที่ไม่เอนเอียงสำหรับแต่ละคิวรี

ทีมงานได้ให้ ChatGPT เขียนสคริปต์เพื่อดาวน์โหลดและวิเคราะห์ไฟล์ core โดยพบรูปแบบที่บ่งชี้ว่าอาจเกิดจากฮาร์ดแวร์ที่ไม่ดีของเครื่องกายภาพเครื่องเดียว แม้ว่าจะมีการใช้งานหลาย Azure VMs ก็ตาม

การที่บั๊ก libunwind ปรากฏขึ้นในตอนนี้ อาจเกี่ยวข้องกับการที่เราเพิ่มการเรียกใช้ timer_getoverrun ใน SIGUSR2 handler เพื่อรองรับสัญญาณที่รวมกัน และการใช้ coarse_thread_cputime_clock ในการส่ง SIGUSR2

ศัพท์ที่ควรรู้

  • Inference time – ช่วงเวลาที่โมเดลกำลังประมวลผลคำถามของผู้ใช้เพื่อสร้างคำตอบ
  • Core dump – ภาพถ่ายสถานะของโปรแกรม ณ ขณะที่เกิดการขัดข้อง ซึ่งใช้ในการวิเคราะห์ปัญหา
  • Azure blob storage – บริการจัดเก็บข้อมูลบนคลาวด์ของ Microsoft ที่ใช้เก็บไฟล์วิเคราะห์
  • Stack trace – บันทึกการเรียกใช้ฟังก์ชันที่เกิดขึ้นจนนำไปสู่จุดที่โปรแกรมขัดข้อง
  • SIGUSR2 – สัญญาณที่ถูกส่งไปยังโปรแกรมเพื่อแจ้งเตือนบางอย่าง โดยในที่นี้ใช้ในการควบคุมการโอเวอร์โหลด

ที่มา: OpenAI

Leave a Comment