Impostare la priorità del processo su Alta: pericolosa?


8

Ho letto che impostare qualcosa in tempo reale è un grande no-no, quindi non lo farò. Ma ho un'applicazione che devo assicurarmi che abbia sempre la massima priorità sul mio sistema in quanto è fondamentale per il resto delle applicazioni che sto eseguendo. C'è qualche pericolo nell'impostare la priorità su alta, che è un livello inferiore in tempo reale?

Inoltre, come sarei in grado di farlo modificando l'obiettivo di scelta rapida? Qual è il comando?


L'impostazione "Above normal" (windows 7) è più sicura. Qualche discussione qui ... stackoverflow.com/questions/1663993/…
Moab,

1
È molto pericoloso Il problema principale è l'inversione di priorità che si traduce in un processo a priorità più elevata che in realtà ottiene una priorità effettivamente più bassa perché può essere indefinitamente bloccato da un processo a priorità inferiore .
David Schwartz,

Come accennato, "Realtime" non è necessariamente negativo purché il tuo processo sia ben educato e funzioni solo quando è necessario e dorme quando non lo fa, altrimenti può (e impedirà) di eseguire completamente altre attività.
Mokubai

2
@David Schwartz, Cutler ha progettato lo scheduler di Windows per evitare deadlock dovuti all'inversione di priorità. Da support.microsoft.com/kb/96418 , "L'utilità di pianificazione di Windows NT risolve questo problema aumentando in modo casuale la priorità dei thread pronti per l'esecuzione (in questo caso i detentori di blocchi a bassa priorità). I thread a bassa priorità vengono eseguiti abbastanza a lungo per rilasciare il blocco (uscire dalla sezione critica) e il thread con priorità alta ripristina il blocco. Se il thread con priorità bassa non ottiene abbastanza tempo CPU per liberare il blocco la prima volta, avrà un'altra possibilità al prossimo giro di programmazione ".
Nicole Hamilton,

@NicoleHamilton Quindi è per questo che a volte un programma aprirà alcune istanze contemporaneamente se non si apriva al primo clic (e hai fatto clic alcune volte), a causa del carico elevato?
Simon Verbeke,

Risposte:


6

Il tempo reale non è necessariamente un "no-no". Potrebbe far morire di fame altri processi dai cicli della CPU. Alcune applicazioni non possono gestirlo. È qualcosa che dovresti sperimentare.

L'alto dovrebbe essere un problema minore. Tuttavia, è ancora necessario monitorare il sistema per vedere se tutte le applicazioni si comportano bene.

Ecco come modificare il processo tramite riga di comando, che puoi inserire in un collegamento:

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


1
Su Windows, fa morire di fame altri processi molto facilmente (incluso Task Manager stesso).
user1686

3
Tutto dipende dal tuo sistema. A seconda dell'intensità di elaborazione della CPU, un'affinità in tempo reale va bene. Sto eseguendo un processo in tempo reale in questo momento senza problemi. Inoltre, può aiutare a impostare un'affinità con un processore impostando la priorità in tempo reale.
Keltari,

Se un processo è impostato in tempo reale, avrà la priorità assoluta su tutti gli altri processi sul core su cui è in esecuzione? Ho cercato di trovare il modo di dedicare uno dei miei core alla fortezza nana mentre è in esecuzione.
SaintWacko,

3

Direi che dipende. Se hai solo un core / CPU sul tuo computer, ed è un compito ad alta intensità di CPU, non lo imposterei in tempo reale. L'alto potrebbe essere a posto, ma è necessario sperimentarlo.

Se hai più core e il processo è a thread singolo: vai avanti, impostalo come preferisci. Gli altri core saranno ancora liberi, anche quando un core è carico al 100% per tutto il tempo.

Se hai più core e il processo è multi thread: dipenderà se tutti i thread avranno un carico del 100%. Alcuni programmi hanno un thread "manager" che invia il lavoro ad altri thread ma non esegue molto l'elaborazione stessa. Ciò lascerebbe un core quasi libero e quindi consentirebbe priorità alte o in tempo reale.

Altri programmi tenteranno di includere tutti i core. In questo caso il massimo potrebbe andare bene, ma deve essere sperimentato.

Anche gli altri accettano solo un numero particolare di core e potrebbero non utilizzare tutti i core disponibili. In questo caso la priorità alta o in tempo reale dovrebbe andare bene.

A meno che tu non sia su un singolo core, vai avanti, sperimenta. Il più delle volte non farà male impostarlo su alto o addirittura in tempo reale. Puoi impostare l'affinità di un processo (quanti core può usare) anche nel task manager. In questo modo è possibile bilanciare meglio il carico sulla CPU. Può anche aiutare a mantenere basse le temperature e il consumo di energia, ecc.


+1 Bene il fatto che un'app a thread singolo non è un problema su una macchina multi-core, indipendentemente dal limite di calcolo.
Nicole Hamilton,

Non dimenticare, tuttavia, che, come avvertito, i processi ad alta priorità a thread singolo (anche se riguardano solo un singolo core) possono contenere blocchi di sincronizzazione del sistema globale per un periodo di tempo anormale.
dyasta,

1

Se questo funzionerà per te dipende interamente da ciò che fa la tua applicazione. Se sta macinando un calcolo lungo e lungo che non ha mai bisogno di attendere l'I / O, aspettati che l'esecuzione ad alta priorità possa mettere in ginocchio la tua macchina. Ma se il problema è la latenza e la tua applicazione deve solo svegliarsi molto velocemente in risposta a un completamento dell'I / O o un evento simile, esegui un po 'di elaborazione rapida e poi torna di nuovo a dormire, andrà bene.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.