diff --git a/metrics/cpu_darwin_cgo.go b/metrics/cpu_darwin_cgo.go
new file mode 100644
index 0000000000..143afc2fbe
--- /dev/null
+++ b/metrics/cpu_darwin_cgo.go
@@ -0,0 +1,31 @@
+// Copyright 2020 The go-ethereum Authors
+// This file is part of the go-ethereum library.
+//
+// The go-ethereum library is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// The go-ethereum library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with the go-ethereum library. If not, see .
+
+// +build darwin,cgo
+
+package metrics
+
+import "github.com/elastic/gosigar"
+
+// ReadCPUStats retrieves the current CPU stats.
+func ReadCPUStats(stats *CPUStats) {
+ global := gosigar.Cpu{}
+ global.Get()
+
+ stats.GlobalTime = int64(global.User + global.Nice + global.Sys)
+ stats.GlobalWait = int64(global.Wait)
+ stats.LocalTime = getProcessCPUTime()
+}
diff --git a/metrics/cpu_enabled.go b/metrics/cpu_enabled.go
index b73d53643f..d4e3975b9a 100644
--- a/metrics/cpu_enabled.go
+++ b/metrics/cpu_enabled.go
@@ -14,7 +14,7 @@
// You should have received a copy of the GNU Lesser General Public License
// along with the go-ethereum library. If not, see .
-// +build darwin,cgo dragonfly freebsd linux nacl netbsd openbsd solaris windows arm64
+// +build !ios,!darwin
package metrics