Bất cứ khi nào tôi thấy Linux khởi động, tôi thấy thông báo này:
clockource tsc không ổn định (delta = NNNNNNNN ns)
Trong đó NNNNNNNN là một số rất lớn có thể dương hoặc âm.
Thông điệp này có ý nghĩa gì? Tôi có nên lo lắng về điều này?
Bất cứ khi nào tôi thấy Linux khởi động, tôi thấy thông báo này:
clockource tsc không ổn định (delta = NNNNNNNN ns)
Trong đó NNNNNNNN là một số rất lớn có thể dương hoặc âm.
Thông điệp này có ý nghĩa gì? Tôi có nên lo lắng về điều này?
Câu trả lời:
Tôi thành thật nhìn thấy tin nhắn này lần đầu tiên ngày hôm nay và không biết nó thực sự có nghĩa là gì.
Điều đó đang được nói, tôi đã đọc bài viết Wikipedia trên Time Stamp Counter (đó là những gì tsc
trong thông báo lỗi là viết tắt). Bài viết đề cập đến một vấn đề với TSC trong đoạn thứ hai:
Bộ đếm thời gian, cho đến gần đây, là một cách tuyệt vời để có được thông tin về thời gian của CPU. Với sự ra đời của CPU đa lõi / siêu phân luồng, các hệ thống có nhiều CPU và hệ điều hành "ngủ đông", TSC không thể dựa vào để cung cấp kết quả chính xác- trừ khi được chăm sóc cẩn thận để sửa các lỗi có thể xảy ra: tốc độ đánh dấu và liệu tất cả các lõi (bộ xử lý) có giá trị giống hệt nhau trong các thanh ghi giữ thời gian của chúng hay không. Không có gì hứa hẹn rằng bộ đếm dấu thời gian của nhiều CPU trên một bo mạch chủ sẽ được đồng bộ hóa. Trong những trường hợp như vậy, lập trình viên chỉ có thể nhận được kết quả đáng tin cậy bằng cách khóa mã của họ vào một CPU. Ngay cả khi đó, tốc độ CPU có thể thay đổi do các biện pháp tiết kiệm năng lượng được thực hiện bởi HĐH hoặc BIOS, hoặc hệ thống có thể được ngủ đông và sau đó được nối lại (đặt lại bộ đếm thời gian). Trong những trường hợp sau, để duy trì liên quan, bộ đếm phải được kiểm tra lại định kỳ (theo độ phân giải thời gian mà ứng dụng của bạn yêu cầu).
Nói tóm lại, trên các hệ thống hiện đại, TSC hút để đo thời gian chính xác . Và đó là những gì tin nhắn đang nói với bạn. Trên hệ thống của bạn, TSC không phải là nguồn thời gian ổn định.
Các delta
ghi chú khác, tôi sẽ giả định, là vùng đồng bằng thời gian báo cáo giữa hai ve của TSC. Có nghĩa là, mỗi khi TSC đếm ngược 1
, NNNNNNNNN
nano giây sẽ trôi qua. Vì vậy, đó là cách bạn thường có thể giữ thời gian rất chính xác.
Hạt nhân linux sẽ kiểm tra tần số này nhiều lần (để xác định xem nguồn có ổn định không) và nó có kết quả khác nhau. Như vậy, tin nhắn.
Vì vậy, bạn cần phải quan tâm?
Tôi thực sự không biết. Theo hiểu biết của tôi, vấn đề này phát sinh từ các quá trình được "di chuyển" giữa các lõi (mỗi lõi có thể có tần số TSC khác nhau) hoặc lõi thay đổi tần số lõi của nó (như tiết kiệm năng lượng).
Nhiều khả năng, thông báo chỉ được in vì kernel đã tự phát hiện vấn đề này và bây giờ sẽ điều chỉnh cho phù hợp.
Và, từ những gì tôi đọc được trong các nguồn kernel ( arch/x86/kernel/tsc.c
), tôi không nghĩ mình quá xa vời với những giả định của mình.
Tôi nghi ngờ tin nhắn có nghĩa là một điều kiện quan trọng. Và tôi dựa trên giả định rằng bây giờ bạn sẽ biết nếu nó quan trọng.
tsc
đề cập đến Bộ đếm thời gian . Nếu điều đó giúp.