Việc thay đổi mức độ ưu tiên của quy trình trò chơi thành thời gian thực có hại cho CPU không?


7

Trên Windows, tôi thường xuyên thay đổi mức độ ưu tiên của quy trình trò chơi thành 'cao' hoặc 'thời gian thực' để tăng hiệu suất. Điều này chưa bao giờ dẫn đến bất kỳ vấn đề với phần cứng của tôi. Tôi đã nghĩ rằng có lẽ tôi có thể làm điều này trên Linux bằng cách sử dụng chrtlệnh để thay đổi mức ưu tiên thời gian thực của quy trình trò chơi, vì reniceing, thậm chí đến -20 (mức ưu tiên cao nhất) dường như không cung cấp bất kỳ sự gia tăng đáng chú ý nào. Tuy nhiên, tôi cảnh giác khi làm điều này mà không biết liệu nó có thể xấu cho CPU của tôi không. Bất cứ ai có thể thông báo cho tôi về những rủi ro?


2
Tôi tin rằng nếu bất kỳ quy trình thời gian thực nào quyết định sử dụng tất cả CPU có sẵn (ví dụ, do các lỗi dẫn nhiều luồng vào các vòng chờ bận vô hạn), thì nó sẽ vẫn được lên lịch trên tất cả các CPU để loại trừ hầu hết mọi thứ khác . Bạn thậm chí sẽ không thể mở một cửa sổ đầu cuối hoặc SSH từ nơi khác để giết quá trình chạy trốn.
Celada

Bất kỳ hệ điều hành hiện đại nào cũng thực hiện một hình thức chia sẻ thời gian, vì vậy, 'ưu tiên' chỉ đơn giản là chúng có nhiều lát cắt thời gian hơn những thứ có mức độ ưu tiên thấp hơn. Bất cứ điều gì liên quan đến hệ thống phải luôn được ưu tiên cao nhất (nghĩ I / O đĩa và như vậy), vì vậy không có cách nào để làm tổn thương CPU. Trong khi đó, nếu trò chơi là quá trình người dùng duy nhất của bạn thì việc thay đổi mức độ ưu tiên sẽ không tạo ra nhiều khác biệt.
SDsolar

Câu trả lời:


23

Thay đổi mức độ ưu tiên của một quy trình chỉ xác định mức độ thường xuyên của quy trình này khi các quy trình khác đang cạnh tranh về thời gian của CPU. Nó không có tác động khi quá trình là người duy nhất sử dụng thời gian CPU. Một quy trình ưu tiên tối thiểu trên một hệ thống nhàn rỗi khác nhận được 100% thời gian CPU, giống như quy trình ưu tiên tối đa.

Vì vậy, bạn có thể chạy trò chơi của mình với mức độ ưu tiên cao hơn, nhưng điều đó sẽ không làm cho trò chơi chạy nhanh hơn trừ khi có thứ gì khác trên hệ thống đang sử dụng một lượng thời gian CPU đáng kể.

Tôi khuyên bạn nên giữ mức độ ưu tiên thấp hơn máy chủ X, bởi vì nếu máy chủ X muốn có thời gian CPU, thì có thể là do trò chơi đang yêu cầu nó hiển thị thứ gì đó phức tạp và hiển thị thường là một nhiệm vụ đòi hỏi CPU (nhưng nó phụ thuộc vào mức độ công việc được thực hiện trong GPU - các ưu tiên của CPU không ảnh hưởng đến GPU).

CPU được thiết kế để thực thi mã. Thay đổi các ưu tiên của quy trình sẽ không ảnh hưởng đến mức độ hoạt động của CPU, nhưng ngay cả khi điều đó xảy ra, điều đó sẽ không làm hỏng CPU, nó sẽ chỉ làm cho nó chạy nóng hơn và do đó làm cho quạt trong máy tính thổi mạnh hơn.


10
Có rất nhiều điều trong danh pháp máy tính, nhưng nó vẫn thực sự gây khó khăn cho tôi rằng mọi người mới biết khái niệm này có nghĩa là "ưu tiên" có nghĩa là một loại "điều tiết" hoặc "giới hạn". Là định nghĩa tiếng Anh đơn giản mơ hồ nào đó? Nếu tôi ưu tiên bạn hơn khi làm X và bạn không cần làm X, thì có vẻ như bạn không tồn tại, phải không? Tại sao mọi người nhầm lẫn về điều này, bạn có biết?
dùng541686

2
"nó sẽ chỉ làm cho nó chạy nóng hơn và do đó làm cho các quạt trong máy tính thổi mạnh hơn." Không, không nhất thiết. Tôi có thể có một quy trình ưu tiên cao nằm trong một vòng lặp chặt chẽ, với các truy cập bộ nhớ được phục vụ từ bộ đệm L1, do đó rất ít bị đình trệ. Khi trò chơi được ưu tiên cao hơn, nó có thể gây ra ít nhiệt hơn vì nó làm cho CPU bị trì hoãn truy cập bộ nhớ nhiều hơn. Ưu tiên không tương quan với nhiệt độ CPU hoặc việc sử dụng - đó không phải là giới hạn như các trạng thái @Mehrdad.
nanofarad

2
@hexafraction, " nhưng ngay cả khi nó đã làm "; không ai tuyên bố rằng nó sẽ chạy nóng hơn
Akiiino

1
@hexafraction CPU intel có tiêu thụ ít năng lượng hơn khi nó bị đình trệ khi truy cập bộ nhớ? Dù sao thì điều này cũng không ảnh hưởng đến câu trả lời của tôi (CPU sẽ nóng hơn nếu quá trình sử dụng nhiều thời gian CPU hơn), nhưng AFAIK đó là một khoảng thời gian quá ngắn để có tác động có thể đo được đối với mức tiêu thụ điện.
Gilles 'SO- ngừng trở nên xấu xa'

5
@Mehrdad Tôi đoán rằng đôi khi mọi người sử dụng "ưu tiên hàng đầu" để có nghĩa là "bỏ mọi thứ bạn đang làm và hoàn thành công việc ngay bây giờ ngay cả khi nó giết bạn" thay vì "làm điều này trước bất kỳ nhiệm vụ ưu tiên hàng đầu nào". Chỉ cần nhân hóa máy tính một chút và cái trước bắt đầu có ý nghĩa, mặc dù cái sau là ý nghĩa thực sự của nó đối với máy tính.
Ixrec

2

Bạn đang nói về việc thay đổi lượng nhu cầu CPU trong khi nó đang chạy luồng?

CPU hiện đại thực sự sử dụng tốc độ cực nhanh. Ví dụ: nếu bạn đã phân tích xung nhịp của Intel Core i5 / i7, bạn có thể thấy tốc độ xung nhịp nhấp nháy lên xuống thực sự rất nhanh. Đó là một phần trong cách Intel có thể điều chỉnh hiệu suất tương ứng với lượng điện năng rút ra. Bạn có thể có rất nhiều năng lượng có sẵn trong một máy tính để bàn nhưng công cụ đang được chuyển đổi thành nhiệt khi CPU hoạt động mạnh hơn, vì vậy điều quan trọng là phải tận dụng tối đa mỗi watt.

Tôi chỉ biết điều này từ những gì tôi đã đọc trên các diễn đàn chơi game khác. Tôi không phải là nhà khoa học CPU.

Tôi không nghĩ rằng bạn sẽ làm bất kỳ thiệt hại nào từ việc điều chỉnh một chủ đề đến mức độ "khó chịu" tối đa của nó. Điều duy nhất bạn nên chú ý là CPU của bạn đang nóng đến mức nào, nhưng trừ khi bạn đã sử dụng quá mức trong BIOS thì không thể nấu CPU trước khi tắt.

CPU hiện đại được thiết kế để nhanh chóng thay đổi tốc độ. Thực hiện tìm kiếm Bước tốc độ Intel và 'trạng thái CPU C' và bạn sẽ thấy ý tôi là gì.


2

Sử dụng renicetrê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 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).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.