Time Namespace
CLOCK_MONOTONIC と CLOCK_BOOTTIME にオフセットを設定できる namespace。
| Clock | 何を表す | メモ |
|---|---|---|
CLOCK_MONOTONIC | 単調増加の経過時間 起動後の経過 | 手動の時刻変更でジャンプしない |
CLOCK_BOOTTIME | 単調増加の経過時間 起動後の経過 + suspend時間 | 手動の時刻変更でジャンプしない suspend中もカウントする |
CLOCK_REALTIME | 壁時計 | 手動の時刻変更やNTP調整でジャンプし得る |
ユースケース
- 異なる時間設定でのテスト
- タイムアウトを待つテストで時間短縮に使える
- CRIU でチェックポイントして他のノードでリストア
- 未来時刻でアプリケーションが再開するとタイムアウトが起きる可能性がある
- 参考: cri-o#8033
以前にも Virtual time という類似機能の提案があった。
使い方
OCI runtime-spec の timeOffsets でコンテナの時間オフセットを指定できる。
/proc/<pid>/timens_offsets へ初期の time namespace からのオフセットを書き込む。
Note
子プロセスから適用されるタイプ
Warning
CLOCK_REALTIME は変更されない