5 điểm bởi GN⁺ 2023-07-23 | 1 bình luận | Chia sẻ qua WhatsApp
  • Trong các hệ thống hiện đại, va chạm dấu thời gian ở mức nano giây xảy ra khá thường xuyên; khi đọc đồng hồ đồng thời trên 4 lõi vật lý, hiện tượng này xuất hiện trong khoảng 5% mẫu.
  • Không an toàn nếu giả định rằng dấu thời gian nano giây thô là một định danh duy nhất.
  • Tác giả đã dùng một chương trình kiểm thử viết bằng Go để so sánh chênh lệch tương đối giữa các dấu thời gian liên tiếp và dấu thời gian tuyệt đối.
  • Hành vi của va chạm dấu thời gian khác nhau tùy theo hệ thống, và đã quan sát thấy các kết quả khác nhau giữa Mac OS X và Linux.
  • Trên Linux, trong một luồng đơn, thời gian tuyệt đối và thời gian đơn điệu luôn tăng, với bước tăng tối thiểu là 32 ns. Giữa các luồng, khoảng 5% giá trị thời gian tuyệt đối trùng với luồng khác, và ngay cả khi chạy với 2 luồng trên hệ thống 4 lõi thì vẫn xảy ra khoảng 2% va chạm dấu thời gian.
  • Trên Mac OS X, thời gian tuyệt đối có độ phân giải micro giây nên xảy ra rất nhiều va chạm khi lặp lại cùng bài kiểm thử. Thậm chí ngay trong cùng một luồng, đồng hồ đơn điệu đôi khi cũng có thể không tăng.
  • Có thể tìm thấy chương trình kiểm thử trên Github để tiếp tục khám phá thêm.

1 bình luận

 
GN⁺ 2023-07-23
Ý kiến trên Hacker News
  • Có thể tránh xung đột bằng cách dùng ID kết hợp thành phần thời gian và số thứ tự.
  • UUIDv7 là một ví dụ về ID kết hợp thành phần thời gian và số thứ tự.
  • Việc lập lịch luồng có thể ảnh hưởng đến độ chính xác của dấu thời gian trong các hệ thống đa lõi.
  • UUID phiên bản 4 (ngẫu nhiên) có thể được dùng để bảo đảm mã định danh duy nhất.
  • Một số người giải quyết vấn đề xung đột bằng cách kiểm tra thời gian và kiểm tra-thiết lập nguyên tử trên biến toàn cục.
  • Erlang/Elixir phân biệt thời gian đơn điệu và thời gian đơn điệu nghiêm ngặt.
  • Đồng hồ máy tính có thể không có độ chính xác tới nano giây.
  • Có một giai thoại rằng Lotus Notes dùng dấu thời gian với độ phân giải 1 giây làm ID duy nhất.
  • Chu kỳ xung nhịp CPU và tối ưu hóa của trình biên dịch có thể ảnh hưởng đến độ chính xác của dấu thời gian.
  • Thời gian chính xác có thể là một vấn đề bảo mật, nên các nhà thiết kế CPU cố ý đưa vào một chút jitter xung nhịp.