Skip to content

Commit

Permalink
#91: Use cilium probes.Jiffies() (#92)
Browse files Browse the repository at this point in the history
* #91: Use cilium probes.Jiffies()

* #91: Remove unused imports and fix BPFRoot and TCGlobals usage from defaults

* #91: Fix usage of wait.ExponentialBackoffWithContext(...)

* #91: Remove unused code; Update link to defaults.go

---------

Co-authored-by: Ivaylo Papratilov <[email protected]>
  • Loading branch information
Ivaka and Ivaka authored Jan 10, 2024
1 parent c4b7fff commit f9d8696
Show file tree
Hide file tree
Showing 5 changed files with 207 additions and 291 deletions.
6 changes: 3 additions & 3 deletions conntrack/cilium_conntrack_linux.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,10 @@ import (
"inet.af/netaddr"
)

// https://raw.githubusercontent.com/cilium/cilium/1324e2d3d2674b872461b21e030ef9d19fa591ae/pkg/defaults/defaults.go
// https://raw.githubusercontent.com/cilium/cilium/main/pkg/defaults/defaults.go
const (
bpfMapRoot = defaults.DefaultMapRoot
bpfMaps = defaults.DefaultMapPrefix
bpfMapRoot = defaults.BPFFSRoot
bpfMaps = defaults.TCGlobalsPath
)

func bpfMapsExist() bool {
Expand Down
33 changes: 2 additions & 31 deletions conntrack/time.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,9 @@
package conntrack

import (
"bufio"
"fmt"
"os"

"github.com/cilium/cilium/pkg/datapath/linux/probes"
"golang.org/x/sys/unix"
)

Expand Down Expand Up @@ -44,7 +43,7 @@ func kernelTimeDiffSecondsFunc(clockSource ClockSource) (func(t int64) int64, er
return t - int64(now)
}, nil
case ClockSourceJiffies:
now, err := getJtime()
now, err := probes.Jiffies()
if err != nil {
return nil, err
}
Expand Down Expand Up @@ -74,31 +73,3 @@ func getMtime() (uint64, error) {

return uint64(unix.TimespecToNsec(ts)), nil
}

const (
timerInfoFilepath = "/proc/timer_list"
)

// getJtime returns a close-enough approximation of kernel jiffies
// that can be used to compare against jiffies BPF helper. We parse
// it from /proc/timer_list. GetJtime() should be invoked only at
// mid-low frequencies.
func getJtime() (uint64, error) {
jiffies := uint64(0)
scaler := uint64(8)
timers, err := os.Open(timerInfoFilepath)
if err != nil {
return 0, err
}
defer timers.Close()
scanner := bufio.NewScanner(timers)
for scanner.Scan() {
tmp := uint64(0)
n, _ := fmt.Sscanf(scanner.Text(), "jiffies: %d\n", &tmp)
if n == 1 {
jiffies = tmp
break
}
}
return jiffies >> scaler, scanner.Err()
}
2 changes: 1 addition & 1 deletion exporter/sinks/http.go
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ func (s *HTTPSink) Push(ctx context.Context, batch *pb.PodNetworkMetricBatch) er
Jitter: 0.2,
Steps: 3,
}
err = wait.ExponentialBackoffWithContext(ctx, backoff, func() (done bool, err error) {
err = wait.ExponentialBackoffWithContext(ctx, backoff, func(ctx context.Context) (done bool, err error) {
resp, err = s.httpClient.Do(req) //nolint:bodyclose
if err != nil {
s.log.Warnf("failed sending request: %v", err)
Expand Down
119 changes: 60 additions & 59 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -5,117 +5,118 @@ go 1.20
require (
github.com/Code-Hex/go-generics-cache v1.3.1
github.com/castai/promwrite v0.5.0
github.com/cilium/cilium v1.12.14
github.com/cilium/ebpf v0.10.0
github.com/cilium/cilium v1.14.5
github.com/cilium/ebpf v0.10.1-0.20230626090016-654491c8a500
github.com/florianl/go-conntrack v0.4.0
github.com/google/gopacket v1.1.19
github.com/gorilla/mux v1.8.0
github.com/kelseyhightower/envconfig v1.4.0
github.com/prometheus/client_golang v1.13.1
github.com/prometheus/client_golang v1.16.0
github.com/samber/lo v1.37.0
github.com/sirupsen/logrus v1.9.0
github.com/stretchr/testify v1.8.1
github.com/vishvananda/netns v0.0.0-20211101163701-50045581ed74
github.com/sirupsen/logrus v1.9.3
github.com/stretchr/testify v1.8.4
github.com/vishvananda/netns v0.0.4
golang.org/x/sync v0.3.0
golang.org/x/sys v0.15.0
google.golang.org/protobuf v1.28.1
google.golang.org/protobuf v1.31.0
gopkg.in/yaml.v3 v3.0.1
inet.af/netaddr v0.0.0-20220811202034-502d2d690317
k8s.io/api v0.25.4
k8s.io/apimachinery v0.25.4
k8s.io/client-go v0.25.4
k8s.io/api v0.27.6
k8s.io/apimachinery v0.27.6
k8s.io/client-go v0.27.6
)

require (
cloud.google.com/go/compute v1.12.1 // indirect
cloud.google.com/go/compute/metadata v0.2.1 // indirect
github.com/BurntSushi/toml v0.4.1 // indirect
github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d // indirect
github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect
github.com/beorn7/perks v1.0.1 // indirect
github.com/blang/semver/v4 v4.0.0 // indirect
github.com/cespare/xxhash/v2 v2.1.2 // indirect
github.com/cespare/xxhash/v2 v2.2.0 // indirect
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/emicklei/go-restful/v3 v3.11.0 // indirect
github.com/evanphx/json-patch v5.6.0+incompatible // indirect
github.com/fsnotify/fsnotify v1.6.0 // indirect
github.com/go-logr/logr v1.2.3 // indirect
github.com/go-logr/logr v1.2.4 // indirect
github.com/go-logr/stdr v1.2.2 // indirect
github.com/go-ole/go-ole v1.2.6 // indirect
github.com/go-openapi/analysis v0.21.2 // indirect
github.com/go-openapi/errors v0.20.2 // indirect
github.com/go-openapi/jsonpointer v0.19.5 // indirect
github.com/go-openapi/jsonreference v0.20.0 // indirect
github.com/go-openapi/loads v0.21.1 // indirect
github.com/go-openapi/runtime v0.24.1 // indirect
github.com/go-openapi/spec v0.20.6 // indirect
github.com/go-openapi/strfmt v0.21.3 // indirect
github.com/go-openapi/swag v0.21.1 // indirect
github.com/go-openapi/validate v0.22.0 // indirect
github.com/go-openapi/analysis v0.21.4 // indirect
github.com/go-openapi/errors v0.20.4 // indirect
github.com/go-openapi/jsonpointer v0.19.6 // indirect
github.com/go-openapi/jsonreference v0.20.1 // indirect
github.com/go-openapi/loads v0.21.2 // indirect
github.com/go-openapi/runtime v0.26.0 // indirect
github.com/go-openapi/spec v0.20.9 // indirect
github.com/go-openapi/strfmt v0.21.7 // indirect
github.com/go-openapi/swag v0.22.4 // indirect
github.com/go-openapi/validate v0.22.1 // indirect
github.com/gogo/protobuf v1.3.2 // indirect
github.com/golang/protobuf v1.5.2 // indirect
github.com/golang/protobuf v1.5.3 // indirect
github.com/golang/snappy v0.0.4 // indirect
github.com/google/gnostic v0.5.7-v3refs // indirect
github.com/google/go-cmp v0.5.9 // indirect
github.com/google/gofuzz v1.2.0 // indirect
github.com/google/uuid v1.3.0 // indirect
github.com/google/uuid v1.3.1 // indirect
github.com/hashicorp/hcl v1.0.0 // indirect
github.com/imdario/mergo v0.3.12 // indirect
github.com/inconshreveable/mousetrap v1.0.0 // indirect
github.com/inconshreveable/mousetrap v1.1.0 // indirect
github.com/josharian/intern v1.0.0 // indirect
github.com/josharian/native v0.0.0-20200817173448-b6b71def0850 // indirect
github.com/josharian/native v1.1.0 // indirect
github.com/json-iterator/go v1.1.12 // indirect
github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect
github.com/magiconair/properties v1.8.6 // indirect
github.com/magiconair/properties v1.8.7 // indirect
github.com/mailru/easyjson v0.7.7 // indirect
github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 // indirect
github.com/mdlayher/netlink v1.5.0 // indirect
github.com/mdlayher/socket v0.1.0 // indirect
github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect
github.com/mdlayher/netlink v1.7.2 // indirect
github.com/mdlayher/socket v0.4.1 // indirect
github.com/mitchellh/mapstructure v1.5.0 // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.2 // indirect
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
github.com/oklog/ulid v1.3.1 // indirect
github.com/opentracing/opentracing-go v1.2.1-0.20220228012449-10b1cf09e00b // indirect
github.com/pelletier/go-toml v1.9.5 // indirect
github.com/pelletier/go-toml/v2 v2.0.1 // indirect
github.com/pelletier/go-toml/v2 v2.0.8 // indirect
github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5 // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/pmezard/go-difflib v1.0.0 // indirect
github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect
github.com/prometheus/client_model v0.3.0 // indirect
github.com/prometheus/common v0.37.0 // indirect
github.com/prometheus/procfs v0.8.0 // indirect
github.com/prometheus/client_model v0.4.0 // indirect
github.com/prometheus/common v0.42.0 // indirect
github.com/prometheus/procfs v0.11.0 // indirect
github.com/prometheus/prometheus v0.40.3 // indirect
github.com/sasha-s/go-deadlock v0.3.1 // indirect
github.com/shirou/gopsutil/v3 v3.22.5 // indirect
github.com/spf13/afero v1.8.2 // indirect
github.com/spf13/cast v1.5.0 // indirect
github.com/spf13/cobra v1.4.0 // indirect
github.com/shirou/gopsutil/v3 v3.23.5 // indirect
github.com/spf13/afero v1.9.5 // indirect
github.com/spf13/cast v1.5.1 // indirect
github.com/spf13/cobra v1.7.0 // indirect
github.com/spf13/jwalterweatherman v1.1.0 // indirect
github.com/spf13/pflag v1.0.5 // indirect
github.com/spf13/viper v1.12.0 // indirect
github.com/subosito/gotenv v1.3.0 // indirect
github.com/vishvananda/netlink v1.1.1-0.20220125195016-0639e7e787ba // indirect
github.com/yusufpapurcu/wmi v1.2.2 // indirect
go.mongodb.org/mongo-driver v1.10.2 // indirect
github.com/spf13/viper v1.16.0 // indirect
github.com/subosito/gotenv v1.4.2 // indirect
github.com/tklauser/go-sysconf v0.3.11 // indirect
github.com/tklauser/numcpus v0.6.0 // indirect
github.com/vishvananda/netlink v1.2.1-beta.2.0.20230621221334-77712cff8739 // indirect
github.com/yusufpapurcu/wmi v1.2.3 // indirect
go.mongodb.org/mongo-driver v1.11.3 // indirect
go.opentelemetry.io/otel v1.16.0 // indirect
go.opentelemetry.io/otel/metric v1.16.0 // indirect
go.opentelemetry.io/otel/trace v1.16.0 // indirect
go.uber.org/dig v1.17.0 // indirect
go.uber.org/multierr v1.11.0 // indirect
go4.org/intern v0.0.0-20211027215823-ae77deb06f29 // indirect
go4.org/unsafe/assume-no-moving-gc v0.0.0-20231121144256-b99613f794b6 // indirect
golang.org/x/exp v0.0.0-20230425010034-47ecfdc1ba53 // indirect
golang.org/x/mod v0.8.0 // indirect
golang.org/x/exp v0.0.0-20230522175609-2e198f4a06a1 // indirect
golang.org/x/net v0.19.0 // indirect
golang.org/x/oauth2 v0.1.0 // indirect
golang.org/x/oauth2 v0.11.0 // indirect
golang.org/x/term v0.15.0 // indirect
golang.org/x/text v0.14.0 // indirect
golang.org/x/time v0.1.0 // indirect
golang.org/x/tools v0.6.0 // indirect
golang.org/x/time v0.3.0 // indirect
google.golang.org/appengine v1.6.7 // indirect
gopkg.in/inf.v0 v0.9.1 // indirect
gopkg.in/ini.v1 v1.66.6 // indirect
gopkg.in/ini.v1 v1.67.0 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
honnef.co/go/tools v0.2.2 // indirect
k8s.io/klog/v2 v2.80.0 // indirect
k8s.io/kube-openapi v0.0.0-20220803162953-67bda5d908f1 // indirect
k8s.io/utils v0.0.0-20220728103510-ee6ede2d64ed // indirect
sigs.k8s.io/json v0.0.0-20220713155537-f223a00ba0e2 // indirect
k8s.io/klog/v2 v2.100.1 // indirect
k8s.io/kube-openapi v0.0.0-20230501164219-8b0f38b5fd1f // indirect
k8s.io/utils v0.0.0-20230209194617-a36077c30491 // indirect
sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect
sigs.k8s.io/structured-merge-diff/v4 v4.2.3 // indirect
sigs.k8s.io/yaml v1.3.0 // indirect
)
Expand Down
Loading

0 comments on commit f9d8696

Please sign in to comment.