summaryrefslogtreecommitdiff
path: root/internal/flags/sampling.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/flags/sampling.go')
-rw-r--r--internal/flags/sampling.go24
1 files changed, 24 insertions, 0 deletions
diff --git a/internal/flags/sampling.go b/internal/flags/sampling.go
index 19b4f9d..2f63ada 100644
--- a/internal/flags/sampling.go
+++ b/internal/flags/sampling.go
@@ -8,6 +8,14 @@ import (
"ior/internal/types"
)
+var defaultAggregateOnlySyscalls = []string{
+ "futex",
+ "futex_wait",
+ "futex_wake",
+ "futex_requeue",
+ "futex_waitv",
+}
+
func cloneFamilySamplingRates(in map[types.SyscallFamily]uint32) map[types.SyscallFamily]uint32 {
out := make(map[types.SyscallFamily]uint32, len(in))
for family, rate := range in {
@@ -24,6 +32,22 @@ func cloneSyscallSamplingRates(in map[string]uint32) map[string]uint32 {
return out
}
+func defaultSyscallSamplingRates() map[string]uint32 {
+ out := make(map[string]uint32, len(defaultAggregateOnlySyscalls))
+ for _, syscall := range defaultAggregateOnlySyscalls {
+ out[syscall] = 0
+ }
+ return out
+}
+
+func mergeSyscallSamplingRates(overrides map[string]uint32) map[string]uint32 {
+ out := defaultSyscallSamplingRates()
+ for syscall, rate := range overrides {
+ out[syscall] = rate
+ }
+ return out
+}
+
func parseFamilySamplingRates(raw string) (map[types.SyscallFamily]uint32, error) {
entries, err := parseSamplingEntries(raw)
if err != nil {