Priorità nell'Utilità di pianificazione di Windows

Chiunque esegua lavori nell'utilità di pianificazione di Windows prima o poi si imbatterà in differenze inspiegabili nel tempo di esecuzione. Uno script PHP che viene eseguito in 5 minuti sulla riga di comando impiega improvvisamente 20 minuti se eseguito tramite l'Utilità di pianificazione di Windows. Stesso utente, stessi diritti, stesso codice: quattro volte il tempo di esecuzione. Cosa stava succedendo lì?


Dopo ore Debug, Sessioni di monitoraggio dei processi e innumerevoli confronti di configurazione, la soluzione era sorprendentemente semplice: la pianificazione delle attività di Windows imposta una priorità di processo inferiore per impostazione predefinita. Il valore predefinito per le attività nell'Utilità di pianificazione è 7 (Al di sotto della norma), non 4-6 (Normale), come ci si aspetterebbe. Questa differenza apparentemente piccola può portare a enormi perdite di prestazioni nelle operazioni ad uso intensivo di I/O.

I livelli di priorità di Windows in dettaglio sono:

ValorePrioritàDescrizione
0In tempo realeMassima priorità (attenzione!)
1AltoAlta priorità
2-3Sopra la normaInformazioni su Normal
4-6NormaleStandard per processi interattivi
7Al di sotto della normaDEFAULT in Utilità di pianificazione
8-9Al di sotto della normaAncora più in basso
10OziarePriorità più bassa

Il problema della priorità nella pianificazione delle attività è multiforme: quando si esporta un'attività e si guarda l'XML, spesso si scopre NO Impostazione della priorità. Windows utilizzerà quindi silenziosamente il valore predefinito 7. L'interfaccia grafica visualizza questo valore durante l'esportazione, ma non viene memorizzato esplicitamente nell'attività. La priorità inferiore non solo comporta un minor tempo di CPU, ma anche:

  • Operazioni di I/O su disco limitate
  • Priorità di rete inferiore
  • Caching del file system scadente
  • Ritardi nell'accesso al database

Anche se si utilizza lo stesso utente e si abilita "Esegui con i privilegi più elevati", l'attività viene eseguita in un ambiente desktop/stazione Windows diverso con priorità diverse. Per identificare il problema, è possibile utilizzare PowerShell per elencare tutte le attività con le relative priorità effettive.:

38b7fa6c77dc344401485cd338ea4128

Quasi tutti i miei compiti sono stati eseguiti con priorità 7. Ora correggiamo specificamente la priorità di più attività contemporaneamente:

38b7fa6c77dc344401485cd338ea4128

Dopo aver impostato la priorità su 4 Il mio script PHP è stato eseguito (normalmente) di nuovo nei 300 secondi previsti. Se hai configurato attività con un account utente specifico, puoi semplicemente inserirlo nella riga 10 come segue:

38b7fa6c77dc344401485cd338ea4128

Indietro