diff options
Diffstat (limited to 'tuningplugins/disk.py')
-rw-r--r-- | tuningplugins/disk.py | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/tuningplugins/disk.py b/tuningplugins/disk.py index 5bdcea2..638ca33 100644 --- a/tuningplugins/disk.py +++ b/tuningplugins/disk.py @@ -23,25 +23,26 @@ class DiskTuning: self.devidle = {} def __updateIdle__(self, dev, devload): + idle = self.devidle.setdefault(dev, {}) + idle.setdefault("LEVEL", 0) for type in ("READ", "WRITE"): if devload[type] == 0.0: - idle = self.devidle.setdefault(dev, {}) idle.setdefault(type, 0) idle[type] += 1 else: - idle = self.devidle.setdefault(dev, {}) idle.setdefault(type, 0) idle[type] = 0 def setTuning(self, load): disks = load.setdefault("DISK", {}) - oldidle = copy.deepcopy(self.devidle) for dev in disks.keys(): devload = disks[dev] self.__updateIdle__(dev, devload) - if self.devidle[dev]["READ"] == 30 or self.devidle[dev]["WRITE"] == 30: + if self.devidle[dev]["LEVEL"] == 0 and self.devidle[dev]["READ"] >= 30 and self.devidle[dev]["WRITE"] >= 30: + self.devidle[dev]["LEVEL"] = 1 os.system("hdparm -Y -S60 -B1 /dev/"+dev) - if oldidle.has_key(dev) and oldidle[dev]["READ"] > 30 and oldidle[dev]["WRITE"] > 30 and (self.devidle[dev]["READ"] == 0 or self.devidle[dev]["WRITE"] == 0): + if self.devidle[dev]["LEVEL"] > 0 and (self.devidle[dev]["READ"] == 0 or self.devidle[dev]["WRITE"] == 0): + self.devidle[dev]["LEVEL"] = 0 os.system("hdparm -S255 -B127 /dev/"+dev) print(load, self.devidle) |