Ưu tiên trong Windows Task Scheduler

Bất kỳ ai chạy các công việc trong bộ lập lịch tác vụ của Windows sớm hay muộn cũng sẽ gặp phải những khác biệt không thể giải thích được trong thời gian chạy. Một tập lệnh PHP chạy trong 5 phút trên dòng lệnh đột nhiên mất 20 phút khi chạy qua Windows Task Scheduler. Cùng một người dùng, cùng một quyền, cùng một mã – gấp bốn lần thời gian thực hiện. Chuyện gì đang xảy ra ở đó thế?


Sau giờ làm việc Gỡ lỗi, Các phiên giám sát quy trình và vô số so sánh cấu hình, giải pháp cực kỳ đơn giản: Lập lịch tác vụ của Windows đặt mức độ ưu tiên quy trình thấp hơn theo mặc định. Giá trị mặc định cho các tác vụ trong Trình lập lịch tác vụ là 7 (Dưới mức bình thường), không 4-6 (Bình thường), như bạn mong đợi. Sự khác biệt dường như nhỏ này có thể dẫn đến tổn thất lớn về hiệu suất trong các hoạt động sử dụng nhiều I/O.

Các mức độ ưu tiên của Windows được trình bày chi tiết như sau::

Giá trịSự ưu tiênSự miêu tả
0Thời gian thựcMức độ ưu tiên cao nhất (thận trọng!)
1CaoƯu tiên cao
2-3Trên mức bình thườngVề Bình thường
4-6Bình thườngTiêu chuẩn cho các quy trình tương tác
7Dưới mức bình thườngMẶC ĐỊNH trong Trình lập lịch tác vụ
8-9Dưới mức bình thườngThậm chí còn thấp hơn
10Nhàn rỗiMức độ ưu tiên thấp nhất

Vấn đề về thứ tự ưu tiên trong lập lịch tác vụ rất đa diện: Khi bạn xuất một tác vụ và xem tệp XML, bạn thường sẽ thấy KHÔNG Thiết lập mức độ ưu tiên. Windows sau đó sẽ âm thầm sử dụng giá trị mặc định 7. Giao diện người dùng đồ họa (GUI) hiển thị giá trị này trong quá trình xuất, nhưng nó không được lưu trữ rõ ràng trong tác vụ. Mức độ ưu tiên thấp hơn không chỉ dẫn đến thời gian CPU ít hơn mà còn:

  • Hoạt động I/O đĩa bị hạn chế
  • Ưu tiên mạng thấp hơn
  • Bộ nhớ đệm hệ thống tệp kém
  • Sự chậm trễ trong việc truy cập cơ sở dữ liệu

Ngay cả khi bạn sử dụng cùng một người dùng và bật "Chạy với đặc quyền cao nhất", tác vụ vẫn chạy trong một môi trường máy trạm/máy tính để bàn Windows khác với các mức độ ưu tiên khác nhau. Để xác định vấn đề, bạn có thể sử dụng PowerShell để liệt kê tất cả các tác vụ theo mức độ ưu tiên thực tế của chúng.:

38b7fa6c77dc344401485cd338ea4128

Hầu như tất cả các nhiệm vụ của tôi đều được ưu tiên 7. Bây giờ chúng tôi đặc biệt sửa mức độ ưu tiên của nhiều tác vụ cùng một lúc:

38b7fa6c77dc344401485cd338ea4128

Sau khi thiết lập mức độ ưu tiên 4 Tập lệnh PHP của tôi đã chạy lại (bình thường) sau 300 giây dự kiến. Nếu bạn đã định cấu hình các tác vụ với một tài khoản người dùng cụ thể, bạn chỉ cần nhập thông tin này vào dòng 10 như sau:

38b7fa6c77dc344401485cd338ea4128

Trở lại