Priorità nell'Utilità di pianificazione di Windows

Chiunque esegua attività nell'Utilità di pianificazione di Windows, prima o poi incontrerà inspiegabili differenze di runtime. Uno script PHP che viene eseguito in 5 minuti dalla riga di comando, improvvisamente ne impiega 20 se eseguito tramite l'Utilità di pianificazione di Windows. Stesso utente, stesse autorizzazioni, stesso codice: tempo di esecuzione quadruplicato. Cosa stava succedendo?


Dopo ore di debug, sessioni di Process Monitor e innumerevoli confronti di configurazioni, la soluzione è stata spaventosamente semplice: l'Utilità di pianificazione 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 previsto. Questa differenza apparentemente piccola può portare a un notevole degrado delle prestazioni nelle operazioni che richiedono un elevato utilizzo 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 con la priorità nella pianificazione delle attività è multistrato: quando si esporta un'attività e si guarda l'XML, spesso si 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 (Normalmente) il mio script PHP è stato eseguito nuovamente nei 300 secondi previsti. Se hai configurato attività con un account utente specifico, puoi anche specificarlo facilmente alla riga 10 come segue.:

38b7fa6c77dc344401485cd338ea4128

Indietro