Siapa pun yang menjalankan pekerjaan di Penjadwal Tugas Windows cepat atau lambat akan mengalami perbedaan waktu proses yang tak terduga. Skrip PHP yang berjalan dalam 5 menit di baris perintah tiba-tiba membutuhkan waktu 20 menit ketika dijalankan melalui Penjadwal Tugas Windows. Pengguna yang sama, izin yang sama, kode yang sama – waktu eksekusi empat kali lipat. Apa yang terjadi?
Setelah berjam-jam melakukan debugging, sesi Process Monitor, dan perbandingan konfigurasi yang tak terhitung jumlahnya, solusinya ternyata sangat sederhana: Penjadwal Tugas Windows menetapkan prioritas proses yang lebih rendah secara default. Nilai default untuk tugas di Penjadwal Tugas adalah 7 (Dibawah Normal), tidak 4-6 (Normal) seperti yang diharapkan. Perbedaan yang tampaknya kecil ini dapat menyebabkan penurunan kinerja yang signifikan dalam operasi yang intensif I/O.
Tingkat prioritas Windows secara rinci adalah:
| Nilai | Prioritas | Deskripsi |
|---|---|---|
| 0 | Waktu nyata | Prioritas tertinggi (hati-hati!) |
| 1 | Tinggi | Prioritas tinggi |
| 2-3 | Di Atas Normal | Tentang Normal |
| 4-6 | Normal | Standar untuk proses interaktif |
| 7 | Di Bawah Normal | DEFAULT di Penjadwal Tugas |
| 8-9 | Di Bawah Normal | Bahkan lebih rendah |
| 10 | Menganggur | Prioritas terendah |
Masalah dengan prioritas dalam penjadwalan tugas berlapis-lapis: Saat Anda mengekspor tugas dan melihat XML, Anda akan sering TIDAK Pengaturan prioritas. Windows kemudian akan diam-diam menggunakan nilai default 7. GUI menampilkan nilai ini selama ekspor, tetapi tidak disimpan secara eksplisit dalam tugas. Prioritas yang lebih rendah tidak hanya menghasilkan waktu CPU yang lebih singkat, tetapi juga:
- Operasi I/O disk yang dibatasi
- Prioritas jaringan lebih rendah
- Caching sistem file yang buruk
- Penundaan dalam akses basis data
Meskipun Anda menggunakan pengguna yang sama dan mengaktifkan "Jalankan dengan hak istimewa tertinggi", tugas tersebut tetap berjalan di lingkungan desktop/stasiun Windows yang berbeda dengan prioritas yang berbeda. Untuk mengidentifikasi masalah ini, Anda dapat menggunakan PowerShell untuk menampilkan daftar semua tugas beserta prioritasnya.:
38b7fa6c77dc344401485cd338ea4128
Hampir semua tugas saya berjalan dengan prioritas 7. Kami sekarang secara khusus mengoreksi prioritas beberapa tugas sekaligus:
38b7fa6c77dc344401485cd338ea4128
Setelah menetapkan prioritas ke 4 (Biasanya) skrip PHP saya berjalan kembali dalam 300 detik yang diharapkan. Jika Anda telah mengonfigurasi tugas dengan akun pengguna tertentu, Anda juga dapat dengan mudah menentukannya di baris 10 seperti berikut.:
38b7fa6c77dc344401485cd338ea4128