Difference between revisions of "Time namespace"

From CRIU
Jump to navigation Jump to search
Line 1: Line 1:
Two things (for now) we want to solve with this:
+
The time namespace support has been merged in the 5.6 kernel. The current implementation allows setting per-namespace offsets to the system monotonic and boot-time clocks.
# Shift timer's offsets
 
# Make start-time remain "unchanged" after C/R
 
# Continuous flow of monotonic time (CLOCK_MONOTONIC).
 
  
What about other kinds of counters like perf events and trace events?
+
[https://github.com/checkpoint-restore/criu/pull/1002 The time namespace support] in CRIU has been merged in the [[Download/criu/3.14 | 3.14 release]].
  
 
=TODO=
 
=TODO=
==Required in RFC==
+
==Maybe later==
  
* selftests to test all we've added
+
* Make start-time remain "unchanged" after C/R
* TIME_NS iffdefery everywhere
 
 
 
==Maybe later==
 
* CLONE_NEWTIME reuses the last free flag from sys_clone() - any way to still keep extensibility for the syscall?
 
 
* arm64/arm32/s390/power64 - add archs vvar support (nit: big/little-endianess for timespec::nsec)
 
* arm64/arm32/s390/power64 - add archs vvar support (nit: big/little-endianess for timespec::nsec)
 
* REALTIME-related:
 
* REALTIME-related:
Line 25: Line 18:
 
** mq_timedsend()/mq_timedreceive()
 
** mq_timedsend()/mq_timedreceive()
 
** semtimedop()
 
** semtimedop()
** timerfd
 
** timer_create()
 
** COARSE times
 
** clock_nanosleep()
 
 
* Adjtime (too complicated for PoC)
 
* Adjtime (too complicated for PoC)
 
* Cpu time for thread/pid/pgid (times())
 
* Cpu time for thread/pid/pgid (times())
Line 34: Line 23:
 
* pid creation time (probably different unrelated API)
 
* pid creation time (probably different unrelated API)
 
* clock_tai - if we care about isolation from host's time
 
* clock_tai - if we care about isolation from host's time
 +
* What about other kinds of counters like perf events and trace events?
  
 
=Git=
 
=Git=

Revision as of 04:43, 23 April 2020

The time namespace support has been merged in the 5.6 kernel. The current implementation allows setting per-namespace offsets to the system monotonic and boot-time clocks.

The time namespace support in CRIU has been merged in the 3.14 release.

TODO

Maybe later

  • Make start-time remain "unchanged" after C/R
  • arm64/arm32/s390/power64 - add archs vvar support (nit: big/little-endianess for timespec::nsec)
  • REALTIME-related:
    • REALTIME offsets
    • vvar offsets will need synchronization (like gtod_read_begin()/gtod_read_retry())
    • vfs modification/creation time should work
    • starttime in /proc/pid/stat
    • btime in /proc/stat
    • utime()/utimes()/futimesat() (with times == NULL)
    • utimensat()/futimens() - with UTIME_NOW
    • mq_timedsend()/mq_timedreceive()
    • semtimedop()
  • Adjtime (too complicated for PoC)
  • Cpu time for thread/pid/pgid (times())
  • /proc/stat ticks? (top uses them e.g.)
  • pid creation time (probably different unrelated API)
  • clock_tai - if we care about isolation from host's time
  • What about other kinds of counters like perf events and trace events?

Git

Links