Difference between revisions of "Time namespace"
Jump to navigation
Jump to search
m |
|||
(15 intermediate revisions by 2 users not shown) | |||
Line 8: | Line 8: | ||
=TODO= | =TODO= | ||
==Required in RFC== | ==Required in RFC== | ||
− | + | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
* selftests to test all we've added | * selftests to test all we've added | ||
* TIME_NS iffdefery everywhere | * TIME_NS iffdefery everywhere | ||
==Maybe later== | ==Maybe later== | ||
− | * arm64/arm32/s390/power64 - add archs vvar support | + | * 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) | ||
* REALTIME-related: | * REALTIME-related: | ||
** REALTIME offsets | ** REALTIME offsets | ||
+ | ** vvar offsets will need synchronization (like gtod_read_begin()/gtod_read_retry()) | ||
** vfs modification/creation time should work | ** vfs modification/creation time should work | ||
+ | ** starttime in /proc/pid/stat | ||
+ | ** btime in /proc/stat | ||
** utime()/utimes()/futimesat() (with times == NULL) | ** utime()/utimes()/futimesat() (with times == NULL) | ||
** utimensat()/futimens() - with UTIME_NOW | ** utimensat()/futimens() - with UTIME_NOW | ||
** 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 37: | Line 39: | ||
=Links= | =Links= | ||
+ | * [https://lkml.kernel.org/r/20190206001107.16488-1-dima@arista.com 02/2019 PATCH 00/32 kernel: Introduce Time Namespace] | ||
+ | * [https://lists.linuxfoundation.org/pipermail/ksummit-discuss/2018-November/006210.html 11/2018 <nowiki>[Ksummit-discuss] [TECH-TOPIC] Multiple time domains</nowiki>] | ||
+ | * [https://lwn.net/Articles/766089/ 09/2018 LWN: Time namespaces] | ||
+ | * [https://lkml.org/lkml/2018/9/19/950 09/2018 RFC 00/20 ns: Introduce Time Namespace] | ||
+ | * [https://lists.openvz.org/pipermail/criu/2018-June/041486.html 06/2018 The progress of Time namespace] | ||
+ | * [https://blog.jessfraz.com/post/two-objects-not-namespaced-linux-kernel/ 04/2017 Two Objects not Namespaced by the Linux Kernel] | ||
+ | * [https://github.com/littlepretty/VirtualTimeKernel 00/2017 VirtualTimeKernel] | ||
+ | * [http://publish.illinois.edu/science-of-security-lablet/files/2014/05/DSSnet-A-Smart-Grid-Modeling-Platform-Combining-Electrical-Power-Distributtion-System-Simulation-and-Software-Defined-Networking-Emulation.pdf 00/2016 Article about usage of time namespace in VirtualTimeKernel] | ||
+ | * [https://pt.slideshare.net/kolyshkin/whats-missing-from-upstream-kernel-containers 08/2015 What's missing from upstream kernel containers?] | ||
+ | * [https://ckpt.wiki.kernel.org/index.php/LPC2009 09/2009 LPC2009] | ||
+ | * [https://www.landley.net/kdocs/ols/2006/ols2006v1-pages-101-112.pdf 00/2006 Multiple Instances of the Global Linux Namespaces] | ||
+ | * [https://lwn.net/Articles/180375/ 04/2006 LWN: Virtual time] | ||
− | |||
− | |||
− | |||
− | |||
[[Category: Empty articles]] | [[Category: Empty articles]] | ||
[[Category: Plans]] | [[Category: Plans]] |
Revision as of 01:42, 6 February 2019
Two things (for now) we want to solve with this:
- 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?
TODO
Required in RFC
- selftests to test all we've added
- 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)
- 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()
- timerfd
- timer_create()
- COARSE times
- clock_nanosleep()
- 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
Git
Links
- 02/2019 PATCH 00/32 kernel: Introduce Time Namespace
- 11/2018 [Ksummit-discuss] [TECH-TOPIC] Multiple time domains
- 09/2018 LWN: Time namespaces
- 09/2018 RFC 00/20 ns: Introduce Time Namespace
- 06/2018 The progress of Time namespace
- 04/2017 Two Objects not Namespaced by the Linux Kernel
- 00/2017 VirtualTimeKernel
- 00/2016 Article about usage of time namespace in VirtualTimeKernel
- 08/2015 What's missing from upstream kernel containers?
- 09/2009 LPC2009
- 00/2006 Multiple Instances of the Global Linux Namespaces
- 04/2006 LWN: Virtual time