Difference between revisions of "Performance research"
Jump to navigation
Jump to search
Line 13: | Line 13: | ||
== Dump == | == Dump == | ||
− | + | Surprisingly, but the mem-drain time is not the biggest. It's "only" ~0.02 seconds. There are places in code that take longer. | |
− | Time spent in this routine is | + | === <code>parse_smaps</code> === |
+ | |||
+ | Time spent in this routine is up to 0.2 seconds on dump. This one exploits /proc heavily. For a container with 11 tasks the syscall stats look like | ||
834 read | 834 read | ||
Line 27: | Line 29: | ||
1438 openat(4, "map-symlink", O_RDONLY) = 5 | 1438 openat(4, "map-symlink", O_RDONLY) = 5 | ||
11 openat(AT_FDCWD, "/proc/$pid/map_files", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 4 | 11 openat(AT_FDCWD, "/proc/$pid/map_files", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 4 | ||
+ | |||
+ | === <code>parasite_fuxup_vdso</code> === | ||
+ | |||
+ | The 2nd longest routine. It takes ~ 0.07 seconds on dump. | ||
== Restore == | == Restore == |
Revision as of 20:57, 30 January 2014
Written here are performance issues found.
Timing stats of live migration of a small container with 11 tasks is
- Total time ~3.5 seconds
- Frozen time ~3.0 seconds
- Pre-dump stages ~0.5 seconds each
- Restore time ~1.9 seconds
- Images transfer time ~0.3 seconds
Below is the list of issues found
Dump
Surprisingly, but the mem-drain time is not the biggest. It's "only" ~0.02 seconds. There are places in code that take longer.
parse_smaps
Time spent in this routine is up to 0.2 seconds on dump. This one exploits /proc heavily. For a container with 11 tasks the syscall stats look like
834 read 1451 fstat 1462 close 1642 openat
while opens and stats happen on
193 openat(4, "map-symlink", O_RDONLY) = -1 ENOENT (No such file or directory) 1438 openat(4, "map-symlink", O_RDONLY) = 5 11 openat(AT_FDCWD, "/proc/$pid/map_files", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 4
parasite_fuxup_vdso
The 2nd longest routine. It takes ~ 0.07 seconds on dump.