aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.md53
1 files changed, 52 insertions, 1 deletions
diff --git a/README.md b/README.md
index 658e099..83a609d 100644
--- a/README.md
+++ b/README.md
@@ -24,4 +24,55 @@ thinks that any time stolen from a task by the hypervisor belongs
to the running task, thus this is only here to contrast the tested
value we compute.
-usage: `./vcpu_steal [seconds] [cpu]`
+## building
+
+```bash
+make
+
+./vcpu_steal
+```
+
+requirements: any c compiler, make
+
+## supported platforms
+
+this utility only works on linux!
+we use `sched_setaffinity` and `cpu_set_t` for cpu pinning, both
+linux-specific, hence the linux requirement.
+
+both `x86_64` (uses `rdtscp`) and `aarch64` (uses `cntvct_el0`) are supported.
+
+## usage
+
+```bash
+./vcpu_steal [seconds] [cpu]
+```
+
+we run for **10 seconds**, on **cpu 0** by default if arguments not given.
+
+## output
+
+a 5-second run on vcpu 0 of a severely oversold vps:
+
+```
+ran at 2.795 GHz, for 117653562 iterations!
+
+kernel says: 3.108% stolen (wall=5000.04ms, cpu=4844.63ms, diff=155.41ms)
+we say: 24.093% stolen (gaps=11607, total=1204.67ms, max=78.164ms)
+
+histogram:
+ <10us = 2369
+ 10-50us = 7572
+ 50-100us = 570
+ 100-500us = 891
+ 500us-1ms = 95
+ 1-5ms = 73
+ 5-10ms = 19
+ >=10ms = 18
+```
+
+the kernel reports only **3% stolen** due to it not having access to the
+paravirtualized steal-time model-specific register.
+
+our detected value reports **24% stolen**, with one gap managing to last
+for a whole 78ms! pretty bad!