diff --git a/collectors/likwidMetric.go b/collectors/likwidMetric.go index 3acd627..14980ac 100644 --- a/collectors/likwidMetric.go +++ b/collectors/likwidMetric.go @@ -2,7 +2,7 @@ package collectors /* #cgo CFLAGS: -I./likwid -#cgo LDFLAGS: -L./likwid -llikwid -llikwid-hwloc -lm +#cgo LDFLAGS: -L./likwid -llikwid -llikwid-hwloc -lm -Wl,--unresolved-symbols=ignore-in-object-files #include #include */ @@ -25,6 +25,7 @@ import ( lp "github.com/ClusterCockpit/cc-metric-collector/internal/ccMetric" topo "github.com/ClusterCockpit/cc-metric-collector/internal/ccTopology" agg "github.com/ClusterCockpit/cc-metric-collector/internal/metricAggregator" + "github.com/NVIDIA/go-nvml/pkg/dl" ) type MetricScope string @@ -69,6 +70,11 @@ func GetAllMetricScopes() []MetricScope { return []MetricScope{"cpu" /*, "core", "llc", "numadomain", "die",*/, "socket", "node"} } +const ( + LIKWID_LIB_NAME = "liblikwid.so" + LIKWID_LIB_DL_FLAGS = dl.RTLD_LAZY | dl.RTLD_GLOBAL +) + type LikwidCollectorMetricConfig struct { Name string `json:"name"` // Name of the metric Calc string `json:"calc"` // Calculation for the metric using @@ -260,6 +266,10 @@ func (m *LikwidCollector) Init(config json.RawMessage) error { return err } } + lib := dl.New(LIKWID_LIB_NAME, LIKWID_LIB_DL_FLAGS) + if lib == nil { + return fmt.Errorf("error instantiating DynamicLibrary for %s", LIKWID_LIB_NAME) + } if m.config.ForceOverwrite { cclog.ComponentDebug(m.name, "Set LIKWID_FORCE=1") os.Setenv("LIKWID_FORCE", "1")