Meta เขียนบล็อกถึงความยากลำบากในการจัดการ "อธิกวินาที" (leap second) กระบวนการเติมวินาทีเข้าไปในวันที่มีมาตั้งแต่ปี 1972 เพื่อปรับให้เวลา UTC มีเวลาตรงกับการหมุนของโลก พร้อมกับสนับสนุนให้ไปใช้เขตเวลา TAI (temps atomique international เป็นภาษาฝรั่งเศสของ International Atomic Time) ที่ไม่มี leap second มาตั้งแต่ปี 2017
ความลำบากในการจัดการ leap second นั้นเกิดจากตัวเทียบเวลาที่แท้จริงเป็นนาฬิกาอะตอมในดาวเทียม Stratum 0 แต่การปรับเวลาชดเชยนั้นมักจะจัดการในเซิร์ฟเวอร์ NTP ที่ Stratum 2 ช่วงเวลาที่ชดเชย แต่การเติมเวลาหนึ่งวินาทีเข้าไปในหนึ่งวันนั้นทำไม่ได้เพราะระบบปฎิบัติการแบบ POSIX เช่น ลินุกซ์หรือแมคนั้นต้องการให้หนึ่งวันมี 86,400 วินาทีพอดี จึงต้องค่อยๆ "หยอด" (smear) เวลาเติมเข้าไปให้ครบหนึ่งวินาที กระบวนการนี้สร้างความซับซ้อนเพิ่มเติม เพราะเซิร์ฟเวอร์ NTP อาจจะคอนฟิกให้หยอดเวลาไว้หรือไม่ได้คอนฟิกไว้ก็ได้ ทำให้วันที่มี leap second จะเกิดความผิดปกติเวลาที่ได้แต่ละเซิร์ฟเวอร์ไม่ตรงกัน
ฝั่ง Meta เองนั้นพยายามสร้างโปรโตคอลเทียบเวลาที่แม่นระดับนาโนวินาที กระบวนการ smear จึงอาศัยการแอบเติมวินาทีในตัวเอง (self-smearing) โดยไลบรารี fbclock จะแอบเติมเวลา 1 นาโนวินาทีเข้าไปทุกๆ 62.5 ไมโครวินาที แต่ปัญหาก็ยังอยู่ คือเซิร์ฟเวอร์ที่ใช้เทคนิคต่างกันอาจจะพบว่ามีเวลาต่างกันถึง 100 ไมโครวินาทีในช่วงเวลาที่ต้องเติมเวลานี้
Meta เองเป็นผู้ผลักดันหนึ่งที่ทำให้หน่วยงานมาตรฐานชั่งตวงนานาชาติประกาศเลิกใช้ leap second ในปี 2035 อย่างไรก็ดีทาง Meta สนับสนุนให้เลิกใช้งานตั้งแต่วันนี้โดยเปลี่ยนเขตเวลาเป็น TAI แทน ซึ่งก็ทำให้จะไม่มี leap second ตั้งแต่วันนี้เลย
ที่มา - Meta
![No Description No Description](https://www.bbimg.me/data/attachments/1/1128-d42dfe566098f30e6af73c25e298a0bc.jpg?hash=PXTspIXuZj)
Topics:
Meta
Timestamp
Continue reading...
ความลำบากในการจัดการ leap second นั้นเกิดจากตัวเทียบเวลาที่แท้จริงเป็นนาฬิกาอะตอมในดาวเทียม Stratum 0 แต่การปรับเวลาชดเชยนั้นมักจะจัดการในเซิร์ฟเวอร์ NTP ที่ Stratum 2 ช่วงเวลาที่ชดเชย แต่การเติมเวลาหนึ่งวินาทีเข้าไปในหนึ่งวันนั้นทำไม่ได้เพราะระบบปฎิบัติการแบบ POSIX เช่น ลินุกซ์หรือแมคนั้นต้องการให้หนึ่งวันมี 86,400 วินาทีพอดี จึงต้องค่อยๆ "หยอด" (smear) เวลาเติมเข้าไปให้ครบหนึ่งวินาที กระบวนการนี้สร้างความซับซ้อนเพิ่มเติม เพราะเซิร์ฟเวอร์ NTP อาจจะคอนฟิกให้หยอดเวลาไว้หรือไม่ได้คอนฟิกไว้ก็ได้ ทำให้วันที่มี leap second จะเกิดความผิดปกติเวลาที่ได้แต่ละเซิร์ฟเวอร์ไม่ตรงกัน
ฝั่ง Meta เองนั้นพยายามสร้างโปรโตคอลเทียบเวลาที่แม่นระดับนาโนวินาที กระบวนการ smear จึงอาศัยการแอบเติมวินาทีในตัวเอง (self-smearing) โดยไลบรารี fbclock จะแอบเติมเวลา 1 นาโนวินาทีเข้าไปทุกๆ 62.5 ไมโครวินาที แต่ปัญหาก็ยังอยู่ คือเซิร์ฟเวอร์ที่ใช้เทคนิคต่างกันอาจจะพบว่ามีเวลาต่างกันถึง 100 ไมโครวินาทีในช่วงเวลาที่ต้องเติมเวลานี้
Meta เองเป็นผู้ผลักดันหนึ่งที่ทำให้หน่วยงานมาตรฐานชั่งตวงนานาชาติประกาศเลิกใช้ leap second ในปี 2035 อย่างไรก็ดีทาง Meta สนับสนุนให้เลิกใช้งานตั้งแต่วันนี้โดยเปลี่ยนเขตเวลาเป็น TAI แทน ซึ่งก็ทำให้จะไม่มี leap second ตั้งแต่วันนี้เลย
ที่มา - Meta
![No Description No Description](https://www.bbimg.me/data/attachments/1/1128-d42dfe566098f30e6af73c25e298a0bc.jpg?hash=PXTspIXuZj)
Topics:
Meta
Timestamp
Continue reading...