1FLUXCAPACITOR(1) User Commands Manual FLUXCAPACITOR(1)
2
3
4
6 fluxcapacitor - run programs without blocking on syscalls
7
9 fluxcapacitor [--libpath PATH] [--output FILENAME] [--signal SIGNAL]
10 [--verbose] -- command [arguments...]
11
12 fluxcapacitor -- command1 [args...] -- command2 [args...] ...
13
15 fluxcapacitor is a tool for making your program run without blocking on
16 timeouts, on functions like poll and select, by spoofing POSIX time
17 functions. By "patching" low-level syscalls, it can lie about time to
18 any program in any programming language, as long as it runs on Linux.
19
20 This approach has a significant advantage: it is possible to lie about
21 time to many processes at the same time. It is especially useful for
22 running network applications where server and client run in different
23 processes which rely on time. It will also work with multithreaded
24 applications.
25
26 fluxcapacitor will make your program run faster and be 100% CPU con‐
27 strained. It does that by "speeding up" blocking syscalls. Faking
28 time is a necessary side effect.
29
31 --help Print usage instructions and exit.
32
33 --libpath PATH
34 Load fluxcapacitor_preload.so from selected PATH directory.
35
36 --output FILENAME
37 Write logs to FILENAME instead of stderr.
38
39 --signal SIGNAL
40 Use specified SIGNAL to interrupt blocking syscalls, instead of
41 SIGURG.
42
43 -v
44 --verbose
45 Print more stuff. Repeat for debugging messages.
46
48 fluxcapacitor won't work in a number of cases:
49
50 · If your code is statically compiled and fluxcapacitor_preload.so ld-
51 preloaded library can't play its role.
52
53 · If your code uses unpopular blocking functions in the event loop,
54 like signalfd() and sigwait(), or if your program relies heavily on
55 signals and things like alert(), setitimer(), or timerfd_create().
56
57 · If your code uses file access or modification timestamps. fluxcapac‐
58 itor does not mock that.
59
60 Basically, for fluxcapacitor to work all the time, queries need to be
61 done using gettimeofday() or clock_gettime(), and all the waiting for
62 timeouts must rely on select(), poll() or epoll_wait(). Fortunately,
63 that's the case in most programming languages.
64
65
66
67 2018-01-13 FLUXCAPACITOR(1)