Προτεραιότητα στο Χρονοδιάγραμμα εργασιών των Windows

Όποιος εκτελεί εργασίες στο Χρονοδιάγραμμα εργασιών των Windows αργά ή γρήγορα θα αντιμετωπίσει ανεξήγητες διαφορές χρόνου εκτέλεσης. Ένα σενάριο PHP που εκτελείται σε 5 λεπτά στη γραμμή εντολών ξαφνικά χρειάζεται 20 λεπτά όταν εκτελείται μέσω του Χρονοδιαγράμματος εργασιών των Windows. Ίδιος χρήστης, ίδια δικαιώματα, ίδιος κώδικας - τέσσερις φορές ο χρόνος εκτέλεσης. Τι συνέβαινε;


Μετά από ώρες εντοπισμού σφαλμάτων, συνεδρίες Process Monitor και αμέτρητες συγκρίσεις ρυθμίσεων, η λύση ήταν τρομακτικά απλή: Το Windows Task Scheduler ορίζει χαμηλότερη προτεραιότητα διεργασίας από προεπιλογή. Η προεπιλεγμένη τιμή για τις εργασίες στο Task Scheduler είναι 7 (Κάτω από το κανονικό), όχι 4-6 (Κανονικό) όπως αναμενόταν. Αυτή η φαινομενικά μικρή διαφορά μπορεί να οδηγήσει σε μαζική υποβάθμιση της απόδοσης σε λειτουργίες με μεγάλη χρήση εισόδων/εξόδων.

Τα επίπεδα προτεραιότητας των Windows αναλυτικά είναι:

ΑξίαΠροτεραιότηταΠεριγραφή
0Πραγματικός χρόνοςΥψηλότερη προτεραιότητα (προσοχή!)
1ΨηλάΥψηλή προτεραιότητα
2-3Πάνω από το κανονικόΣχετικά με το Κανονικό
4-6ΚανονικόςΠρότυπο για διαδραστικές διαδικασίες
7Κάτω από το κανονικόΠΡΟΕΠΙΛΟΓΗ στο Χρονοδιάγραμμα εργασιών
8-9Κάτω από το κανονικόΑκόμα χαμηλότερα
10ΑεργοςΧαμηλότερη προτεραιότητα

Το πρόβλημα με την προτεραιότητα στον προγραμματισμό εργασιών είναι πολυεπίπεδο: Όταν εξάγετε μια εργασία και εξετάζετε το XML, συχνά θα Όχι Ρύθμιση προτεραιότητας. Τα Windows θα χρησιμοποιήσουν στη συνέχεια σιωπηλά την προεπιλεγμένη τιμή 7. Το γραφικό περιβάλλον χρήστη (GUI) εμφανίζει αυτήν την τιμή κατά την εξαγωγή, αλλά δεν αποθηκεύεται ρητά στην εργασία. Η χαμηλότερη προτεραιότητα όχι μόνο έχει ως αποτέλεσμα λιγότερο χρόνο CPU, αλλά και:

  • Λειτουργίες εισόδου/εξόδου με περιορισμένο δίσκο
  • Χαμηλότερη προτεραιότητα δικτύου
  • Κακή αποθήκευση στην προσωρινή μνήμη του συστήματος αρχείων
  • Καθυστερήσεις στην πρόσβαση στη βάση δεδομένων

Ακόμα κι αν χρησιμοποιείτε τον ίδιο χρήστη και ενεργοποιήσετε την επιλογή "Εκτέλεση με τα υψηλότερα δικαιώματα", η εργασία εκτελείται σε διαφορετικό περιβάλλον σταθμού/επιφάνειας εργασίας των Windows με διαφορετικές προτεραιότητες. Για να εντοπίσετε το πρόβλημα, μπορείτε να χρησιμοποιήσετε το PowerShell για να παραθέσετε όλες τις εργασίες με τις πραγματικές τους προτεραιότητες.:

38b7fa6c77dc344401485cd338ea4128

Σχεδόν όλες οι εργασίες μου εκτελούνταν με προτεραιότητα 7. Τώρα διορθώνουμε συγκεκριμένα την προτεραιότητα πολλών εργασιών ταυτόχρονα:

38b7fa6c77dc344401485cd338ea4128

Αφού ορίσετε την προτεραιότητα σε 4 (Κανονικά) το σενάριο PHP μου εκτελέστηκε ξανά στα αναμενόμενα 300 δευτερόλεπτα. Εάν έχετε διαμορφώσει εργασίες με έναν συγκεκριμένο λογαριασμό χρήστη, μπορείτε επίσης εύκολα να το καθορίσετε αυτό στη γραμμή 10 ως εξής.:

38b7fa6c77dc344401485cd338ea4128

Πίσω