Keutamaan dalam Windows Task Scheduler

Sesiapa sahaja yang menjalankan kerja dalam Penjadual Tugas Windows lambat laun akan menghadapi perbezaan masa jalan yang tidak dapat dijelaskan. Skrip PHP yang berjalan dalam 5 minit pada baris arahan tiba-tiba mengambil masa 20 minit apabila dilaksanakan melalui Penjadual Tugas Windows. Pengguna yang sama, kebenaran yang sama, kod yang sama - empat kali masa pelaksanaan. Apa yang sedang berlaku?


Selepas berjam-jam penyahpepijatan, sesi Pemantauan Proses dan perbandingan konfigurasi yang tidak terkira banyaknya, penyelesaiannya sangat mudah: Penjadual Tugas Windows menetapkan keutamaan proses yang lebih rendah secara lalai. Nilai lalai untuk tugas dalam Penjadual Tugas ialah 7 (Di Bawah Normal), tidak 4-6 (Biasa) seperti yang dijangkakan. Perbezaan yang kelihatan kecil ini boleh menyebabkan kemerosotan prestasi secara besar-besaran dalam operasi intensif I/O.

Tahap keutamaan Windows secara terperinci adalah:

NilaiKeutamaanPenerangan
0Masa nyataKeutamaan tertinggi (berhati-hati!)
1TinggiKeutamaan tinggi
2-3Di atas NormalMengenai Normal
4-6BiasalahStandard untuk proses interaktif
7Bawah NormalLALAI dalam Penjadual Tugas
8-9Bawah NormalMalah lebih rendah
10TerbiarKeutamaan terendah

Masalah dengan keutamaan dalam penjadualan tugas adalah berbilang lapisan: Apabila anda mengeksport tugas dan melihat XML, anda akan sering tidak Tetapan keutamaan. Windows kemudiannya akan menggunakan nilai lalai secara senyap 7. GUI memaparkan nilai ini semasa eksport, tetapi ia tidak disimpan secara eksplisit dalam tugas. Keutamaan yang lebih rendah bukan sahaja menghasilkan masa CPU yang kurang, tetapi juga:

  • Operasi I/O cakera pendikit
  • Keutamaan rangkaian yang lebih rendah
  • Caching sistem fail yang lemah
  • Kelewatan dalam capaian pangkalan data

Walaupun anda menggunakan pengguna yang sama dan mendayakan "Jalankan dengan keistimewaan tertinggi," tugas itu berjalan dalam persekitaran stesen/desktop Windows yang berbeza dengan keutamaan yang berbeza. Untuk mengenal pasti masalah, anda boleh menggunakan PowerShell untuk menyenaraikan semua tugas dengan keutamaan sebenar mereka.:

38b7fa6c77dc344401485cd338ea4128

Hampir semua tugas saya berjalan dengan keutamaan 7. Kami kini secara khusus membetulkan keutamaan beberapa tugasan sekaligus:

38b7fa6c77dc344401485cd338ea4128

Selepas menetapkan keutamaan kepada 4 (Biasanya) skrip PHP saya berjalan semula dalam 300 saat yang dijangkakan. Jika anda telah mengkonfigurasi tugasan dengan akaun pengguna tertentu, anda juga boleh menentukannya dengan mudah dalam baris 10 seperti berikut.:

38b7fa6c77dc344401485cd338ea4128

Belakang