Đặt mức độ ưu tiên của quá trình thành Cao: Nguy hiểm?


8

Tôi đã đọc được rằng thiết lập một cái gì đó thành thời gian thực là một điều không nên, vì vậy tôi sẽ không làm điều đó. Nhưng tôi có một ứng dụng mà tôi cần đảm bảo luôn có mức ưu tiên cao nhất trên hệ thống của mình vì nó rất quan trọng đối với các ứng dụng còn lại mà tôi đang chạy. Có bất kỳ nguy hiểm nào trong việc đặt mức độ ưu tiên lên cao, thấp hơn một bậc so với thời gian thực không?

Ngoài ra, làm thế nào tôi có thể làm điều này bằng cách thay đổi mục tiêu phím tắt? Lệnh là gì?


Cài đặt "Trên mức bình thường" (windows 7) an toàn hơn. Một số cuộc thảo luận ở đây ... stackoverflow.com/questions/1663993/ Kẻ
Moab

1
Nó rất nguy hiểm. Vấn đề chính là đảo ngược ưu tiên dẫn đến quá trình ưu tiên cao hơn thực sự có mức độ ưu tiên thấp hơn một cách hiệu quả bởi vì nó có thể bị chặn vô thời hạn bởi quy trình ưu tiên thấp hơn .
David Schwartz

Như đã đề cập "Thời gian thực" không nhất thiết là xấu miễn là quá trình của bạn được xử lý tốt và chỉ chạy khi cần và ngủ khi không, nếu không, nó có thể (và sẽ) ngăn các tác vụ khác chạy hoàn toàn.
Mokubai

2
@David Schwartz, Cutler đã thiết kế bộ lập lịch Windows để tránh bế tắc do đảo ngược ưu tiên. Từ support.microsoft.com/kb/96418 , "Bộ lập lịch Windows NT giải quyết vấn đề này bằng cách tăng ngẫu nhiên mức độ ưu tiên của các luồng đã sẵn sàng để chạy (trong trường hợp này là các khóa giữ ưu tiên thấp). Các luồng ưu tiên thấp chạy đủ lâu buông khóa của họ (thoát khỏi phần quan trọng) và luồng ưu tiên cao sẽ lấy lại khóa. Nếu luồng ưu tiên thấp không có đủ thời gian CPU để giải phóng khóa lần đầu tiên, nó sẽ có cơ hội khác vào vòng lịch trình tiếp theo. "
Nicole Hamilton

@Nicole Hamilton Vậy đó là lý do tại sao đôi khi một chương trình sẽ mở một vài trường hợp nếu nó không mở ở lần nhấp đầu tiên (và bạn đã nhấp một vài lần), vì tải cao?
Simon Verbeke

Câu trả lời:


6

Thời gian thực không nhất thiết là "không-không". Nó chỉ có thể bỏ đói các quá trình khác trong chu kỳ CPU. Một số ứng dụng không thể xử lý điều đó. Đó là một cái gì đó bạn sẽ phải thử nghiệm.

Cao nên ít vấn đề. Tuy nhiên, bạn vẫn cần giám sát hệ thống của mình để xem tất cả các ứng dụng có hoạt động tốt không.

Dưới đây là cách thay đổi quy trình thông qua dòng lệnh mà bạn có thể đặt vào một phím tắt:

http://support.microsoft.com/kb/191771


1
Trên Windows, nó không chết đói quá trình khác rất dễ dàng (bao gồm cả Task Manager chính nó).
user1686

3
Tất cả phụ thuộc vào hệ thống của bạn. Tùy thuộc vào cách CPU tăng cường xử lý nó, mối quan hệ thời gian thực là tốt. Tôi đang chạy một quá trình trong thời gian thực ngay bây giờ mà không có vấn đề. Ngoài ra, nó có thể giúp đặt mối quan hệ với một bộ xử lý trong khi đặt mức độ ưu tiên thành thời gian thực.
Keltari

Nếu một quy trình được đặt thành thời gian thực, nó sẽ được ưu tiên tuyệt đối hơn tất cả các quy trình khác trên lõi mà nó đang chạy? Tôi đã cố gắng tìm cách cống hiến một trong những lõi của mình cho Pháo đài Lùn trong khi nó đang chạy.
SaintWacko

3

Tôi sẽ nói nó phụ thuộc. Nếu bạn chỉ có một lõi / CPU trên máy tính của mình và đó là nhiệm vụ cần nhiều CPU, tôi sẽ không đặt nó thành thời gian thực. Cao có thể ổn, nhưng điều đó cần thử nghiệm.

Nếu bạn có nhiều lõi và quy trình chỉ có một luồng: hãy tiếp tục, đặt nó theo cách bạn muốn. Các lõi khác của bạn sẽ vẫn miễn phí, ngay cả khi một lõi được tải 100% toàn bộ thời gian.

Nếu bạn có nhiều lõi và quá trình là đa luồng: nó sẽ phụ thuộc nếu tất cả các luồng sẽ có tải 100%. Một số chương trình có một luồng 'trình quản lý' gửi công việc đến các luồng khác nhưng không tự xử lý nhiều. Điều đó sẽ để lại một lõi gần như miễn phí và do đó cho phép mức độ ưu tiên cao hoặc theo thời gian thực.

Các chương trình khác sẽ cố gắng thực hiện trong tất cả các lõi. Trong trường hợp này cao có thể tốt, nhưng nó cần thử nghiệm.

Ngay cả những người khác sẽ chỉ lấy một số lõi cụ thể và có thể không sử dụng tất cả các lõi có sẵn. Trong trường hợp này, mức độ ưu tiên cao hoặc thời gian thực sẽ ổn.

Trừ khi bạn ở trên một lõi đơn, hãy tiếp tục, thử nghiệm. Hầu hết thời gian sẽ không đau khi đặt nó ở mức cao hoặc thậm chí là thời gian thực. Bạn cũng có thể đặt mối quan hệ của một quy trình (có thể sử dụng bao nhiêu lõi) trong trình quản lý tác vụ. Bằng cách này bạn có thể cân bằng tải tốt hơn trên CPU của mình. Nó cũng có thể giúp giữ nhiệt độ và tiêu thụ điện năng, vv


+1 Điểm hay là một ứng dụng đơn luồng không có vấn đề gì trên máy đa lõi, bất kể tính toán ràng buộc như thế nào.
Nicole Hamilton

Mặc dù vậy, đừng quên rằng, như đã cảnh báo, [chủ yếu] các quy trình ưu tiên cao đơn luồng - ngay cả khi chúng chỉ ảnh hưởng đến một lõi - có thể giữ các khóa đồng bộ hóa hệ thống toàn cầu trong một khoảng thời gian bất thường.
dyasta

1

Việc này có hiệu quả với bạn hay không phụ thuộc hoàn toàn vào ứng dụng của bạn. Nếu nó được thực hiện thông qua một tính toán dài, dài mà không bao giờ phải đợi i / o, hãy hy vọng rằng việc chạy ở mức ưu tiên cao có thể khiến máy của bạn quỳ xuống. Nhưng nếu vấn đề là độ trễ và ứng dụng của bạn chỉ cần thức dậy thật nhanh để đáp ứng với sự hoàn thành i / o hoặc sự kiện tương tự, hãy xử lý nhanh một chút và sau đó quay lại ngủ ngay, nó sẽ ổn thôi.

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.