Sử dụng renice
trên một chương trình Linux sẽ không làm hỏng CPU của bạn, nhưng nó không nhất thiết phải làm những gì bạn muốn nó làm.
Các ưu tiên không liên quan gì đến việc CPU thực thi mã nhanh như thế nào. Nó thực thi mã từ các chương trình ở các mức độ ưu tiên khác nhau nhanh như nhau. Những ưu tiên nào làm thay đổi là chương trình mà hệ điều hành chọn để chạy khi được lựa chọn. CPU chỉ có thể chạy một "luồng" thực thi tại một thời điểm (về mặt kỹ thuật là 1 trên mỗi lõi đối với CPU đa lõi). Nếu nó cần phải làm nhiều hơn thế, nó phụ thuộc vào đa nhiệm - nó chuyển đổi qua lại giữa việc thực hiện các chương trình khác nhau để tạo ảo giác chạy nhiều luồng hơn so với CPU. Khi chọn bao nhiêu thời gian để cung cấp cho mỗi nhiệm vụ này, nó sẽ sử dụng mức độ ưu tiên như một gợi ý.
"Thời gian thực" nghĩa là gì đối với máy tính thì ít "chạy nhanh hơn" và nhiều hơn "không ưu tiên quá trình này". Lập trình thời gian thực là rất quan trọng trong nhiều lĩnh vực. Ví dụ, nếu tôi đang viết phần mềm quản lý hệ thống chống bó cứng trong xe hơi, tôi thực sự không muốn nhiệm vụ của mình chạy trễ vài mili giây vì HĐH quyết định cần chạy chẩn đoán trên cần gạt nước. Theo đó, phần mềm quản lý chống bó cứng phanh trong ô tô được chạy ở mức ưu tiên "thời gian thực".
Thật ra, trong Linux, mức độ ưu tiên "thời gian thực" là một chút sai lầm. Điều này là do cách Linux lên lịch các quy trình của nó. Trong các cửa sổ, nếu bạn có một quy trình đang chạy ở mức ưu tiên cao hơn, các quy trình chạy ở mức ưu tiên thấp hơn sẽ không có thời gian CPU trừ khi nhiệm vụ ưu tiên cao hơn đang chờ đợi một điều gì đó - không có gì cả. Chỉ các tiến trình kernel mới được phép chạy trên đỉnh của tác vụ Windows "thời gian thực". Windows có một tấn của bloatware chạy trong nền bất cứ lúc nào, vì vậy nâng cao ưu tiên để ngăn chặn "thời gian thực" tất cả rác mà chạy.
Tuy nhiên, có một vấn đề với điều này. Đôi khi nhiệm vụ ưu tiên cao hơn của bạn phụ thuộc vào một trong những nhiệm vụ ưu tiên thấp hơn đó. Điều này được gọi là "đảo ngược ưu tiên" và nó là một chủ đề lớn trong thế giới lập trình đa luồng. Khi điều này xảy ra, nhiệm vụ ưu tiên cao hơn có thể bỏ đói nhiệm vụ ưu tiên thấp hơn, không nhận ra rằng nó đang tự dừng lại! Trong Linux, điều này không xảy ra vì trong Linux, các ưu tiên được xem như một cách để xác định phần nào của CPU được cung cấp cho mỗi chương trình, thay vì cách tiếp cận toàn bộ hoặc không có gì. Một quá trình chạy ở -20 được đáng kể thời gian CPU nhiều hơn một chạy từ 0, nhưng ngay cả trong sự hiện diện của một chương trình -20, chương trình 0 được một sốThời gian CPU. Nếu bộ nhớ phục vụ, bộ lập lịch Linux hiện tại cung cấp cho chương trình với công suất CPU gấp đôi so với 0 và chương trình ở mức gấp 2 lần so với -1, v.v. Điều này có nghĩa là 0,9999046% thời gian CPU của bạn sẽ chuyển đến chương trình ở mức -20, nhưng một phần nhỏ sẽ chuyển sang chương trình ở mức 0. Chương trình ở 0 sẽ có cảm giác như nó chạy trên bộ xử lý 200kHz!
Nếu bạn muốn có thời gian thực, nơi bạn có thể ngăn chặn bất cứ điều gì khác ngăn cản bạn, bạn phải viết trình điều khiển hạt nhân hoặc bạn phải sử dụng tiện ích mở rộng thời gian thực cho Linux. Redhat có một cái gọi là MRG, cho phép xử lý thời gian thực với Linux. Trong trường hợp đó "thời gian thực" có nghĩa là một cái gì đó đặc biệt. Theo MRG, người dùng trong nhóm "thời gian thực" được phép sử dụng các tiện ích mở rộng thời gian thực này (có thể khiến bộ xử lý bận rộn mãi mãi, vì họ cố tình không sử dụng bộ lập lịch Linux thân thiện tốt đẹp).