夏時間の適用日と終了日のタスクスケジューラーの動作はどうなってるの?



こういう説明をしてる人がいたので、実際の Windows のタスクスケジューラーの動作について調べてみました。

INFO: Task Scheduler Behavior at Daylight Saving Time Transitions and Other Events

サマータイム(DST)移行処理について

この記事では、2つの夏時間の移行シナリオを指定するために、Spring Forward(SF)とFall Back(FB)という用語を使用します。

DSTが有効になると、SFが発生します。システム時刻は、たとえば、午前2時の地元の日曜日の朝など、1時間前に調整されます。したがって、2:00:00~2:59:59の時間は、そのタイムゾーンのその日のシステムには表示されません。

FB中にその逆が起こります。システム時間は、例えば、午前2時の地元の日曜日の朝など、1時間後に調整されます。そのタイムゾーンでは、1:00~1:59:59の間の分が繰り返されます。システム内で2回発生します。

・ω・ ここまでは、わかる


スプリングフォワード
SF遷移によって発生した時間内にスケジュールされたタスクに対して、スケジューラプログラムが動作する可能性のあるいくつかの方法があります。

動作1
    その時間帯にその分が表示されないため、スケジューラはその分にスケジュールされているタスクを無視することがあります。この動作は、一部のアプリケーションでは適切な場合があります。スケジューラはそれらの時間がスケジュールに配置されるのを防ぎません。

動作2
    DSTが発生していない場合、開始された実際の時刻にこれらのタスクを開始します。たとえば、午前2時5分に予定されているタスクは、実際には午後3時5分(DST)に実行されます。このアプローチは、互い違いにして配列しなければならないタスクに役立ちます。ただし、この方法では、最初のタスクに依存する別のタスクの後に1つのタスクが実行される可能性があります。たとえば、あるタスクが2:30にスケジュールされ、フォローアップタスクが3:15にスケジュールされている場合、3:15タスクが最初に実行され、次に2:30タスクが実行され、3:30に実行されます。

動作3
    時間を圧縮し、欠落したタスクを、移行後のある時点で実行するようにスケジュールされた順序で実行します。この動作は、タスクを順番に保持します。しかし、いくつかのタスクがSFタイムアウト中にスケジュールされる場合、それらはほぼ同時に開始するように見えます。特定のタイミングとシーケンスを必要とする相互依存関係は、タスクのステップの失敗を引き起こす可能性があります。これは、最新のMicrosoftスケジューラが使用する方法です。

動作1は、時間が来ないのでスキップされるケース
動作2は、動作順序についてパラドックスが発生するケース
動作3は、圧縮して実行されるので、処理時間の問題が出るかもしれないケース( Windows はこれ )


フォールバック

以下は、時間の繰返し時にスケジュールされているタスクに対してスケジューラプログラムが動作するいくつかの動作です。

動作1
    時間が繰り返されるため、スケジュールされた時間が発生するたびにタスクを再実行します。これは共通の要件ではないようです。ただし、この動作は一部のアプリケーションでは適切である可能性があります。

動作2
    DSTが発生していない場合の実際の時刻にこれらのタスクを開始します。たとえば、その午前2時5分に予定されているタスクは、1:05の標準時(2番目の1:05ウォール・クロック時間)で実行されます。

動作3
    スケジュールされたウォールクロック時にタスクを開始します。この動作は、その日付の午後2時に開始する予定のタスクを1時間遅延させますが、その時間を超えるすべてのタスクは、シーケンスと実際の時間間隔で発生します。最新のMicrosoftスケジューラがこの方法を使用しているようです。ただし、移行瞬間に正確に発生するようスケジュールされたタスクは、その瞬間に実行される可能性があります。たとえば、午前2時に発生するようにスケジュールされたタスクは、標準時の午前1時に実行されます(方法2のように)。

動作1は、時間が巻き戻るので、時間通り、2回実行されてしまうケース
動作2は、該当時間までの残り時間から逆算されて実行されるケース
動作3は、実際のシーケンスと等間隔で実行されるケース( Windows はこれ )

Twitter の例のように、2回実行されたり、処理がスキップされたりすることはなさそうですが
「冷却水を1時間注水する」ではなく「冷却水を注水開始」「冷却水を注水終了」というスケジュールだったら一瞬で終わってしまう、なんてケースはあるかもしれませんね・ω・

おすすめ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です