refactor findMaxReadsDevice to use disk.IOCounters

This commit is contained in:
Henry Dollman
2024-09-15 16:29:55 -04:00
parent bd43a2a2c2
commit 61a68e5be1

View File

@@ -658,36 +658,17 @@ func (a *Agent) closeIdleConnections(err error) (isTimeout bool) {
// Returns the device with the most reads in /proc/diskstats
// (fallback in case the root device is not supplied or detected)
func findMaxReadsDevice() string {
content, err := os.ReadFile("/proc/diskstats")
if err != nil {
return "/"
}
lines := strings.Split(string(content), "\n")
var maxReadsSectors int64
var maxReadsDevice string
for _, line := range lines {
fields := strings.Fields(line)
if len(fields) < 7 {
continue
}
deviceName := fields[2]
readsSectors, err := strconv.ParseInt(fields[5], 10, 64)
var maxReadBytes uint64
maxReadDevice := "/"
counters, err := disk.IOCounters()
if err != nil {
continue
}
if readsSectors > maxReadsSectors {
maxReadsSectors = readsSectors
maxReadsDevice = deviceName
return maxReadDevice
}
for _, d := range counters {
if d.ReadBytes > maxReadBytes {
maxReadBytes = d.ReadBytes
maxReadDevice = d.Name
}
}
if maxReadsDevice == "" {
return "/"
}
return maxReadsDevice
return maxReadDevice
}