One of the things that is new to Windows Vista is the Scheduling service. Out has gone the old AT service and in has a come a new Task engine with more features than you can shake a stick at.
In the current Beta builds of Vista there are still a few things we need to get right as I found out this morning. I mentioned resource monitor last week. I also mentioned the eccentricities of my Toshiba M3 and its screen driver - one of which is its tendency not to turn the screen back on when resuming from sleep, forcing me to use Hibernate for the time being. The Toshiba has what I refer to as an audible processor utilization indicator - otherwise known as a variable speed fan which responds to the processor speed. This morning, the fan sounded like a jet aircraft, and everything in Windows was sluggish - with my disk light stuck on. So I headed over to resource monitor to try to find out what was happening. A process named DfrgNtfs.exe had a huge and climbing number of read and write operations against its name, and was had the highest average CPU use of anything on the system. Hmmm. My disk was defragging - on a Monday morning.
One thing I miss in Vista is the information you get while running a manual disk defrag. Gone is the "technicolor barcode" of Windows XP and you get no information while the process is running. The reason for this is that defrag now runs as scheduled task. This is a Good Thing. But why was mine running at 9:00 on a Monday morning ? I needed to look at the task.
It became pretty obvious what was happening. I said the task engine has more features than you can shake a stick at, and these are spread over 6 tabs. General gives the task a name, the account it should run under, and says whether a user has to be logged on for it to run. History gives entries in the event log about this task. Triggers says when the task runs, when a user logs on, when the machine boots, when the machine goes idle, when the remote or local user connects or disconnects, when the machine is locked or unlocked, when a specific event is written to the event log, or on a timer. Defrag is set to run on a timer weekly at 1:00 AM every Monday. At 1:00 AM this morning my computer was in a hibernated state. Actions, specifies the program to run, e-mail to send, or message to display. Conditions tells the task if it can wake the computer up to run Settings specifies if a task is run after missing its start time, when to kill it if it takes to long, and if it should be restarted if it fails. Defrag does start if it misses it's scheduled time
So: 1:00AM Monday passed with the system hibernated, and the next chance it got the task scheduler launched the task; the net effect is that if your system is shut down or hibernated over the weekend, performance on Monday morning is going to suffer. I think, the optimum settings are to run defrag Every night, and to wake from sleep to run it, but not to run it if the scheduled time is missed - because when you start your PC you want to work on it.