PI控制器磁盘I/O负载调控问题:超调后无法回落至目标值
PI控制器调控磁盘I/O压力的异常问题
我正在用Python实现PI控制器以调控系统磁盘I/O压力,已编写负载生成代码,但遇到控制器行为异常:当磁盘I/O压力达到目标占比(如85%)时会出现小幅超调(如升至90%),且超调后压力保持恒定,无法回落至目标值。尝试过读写文件两种负载生成方式,问题依旧。
负载生成代码
def generate_load(self, sleep_time): current_stress = self.controller.getDisk() target_stress = (self.controller.getDiskTarget())*100 stress_difference = (target_stress) - current_stress target_size = int(stress_difference * 1024 * 1024) # 将压力差值转换为字节 interval = time.time() + self.period - sleep_time while time.time() < interval: #print("target",target_size) with open("sample.txt", "wb") as f: f.write(b"\0" * target_size) try: os.remove("sample.txt") except OSError: pass #time.sleep(self.period / 10) # 根据间隔影响调整睡眠时间 time.sleep(sleep_time) # 控制器执行
磁盘I/O统计代码
def getDiskUage(self): p_io = psutil.Process() io_counters = p_io.io_counters() disk_usage_process = io_counters[2] + io_counters[3] # 读取字节数 + 写入字节数 disk_io_counter = psutil.disk_io_counters() disk_total = disk_io_counter[2] + disk_io_counter[3] # 读取字节数 + 写入字节数 usage = math.ceil(disk_usage_process/disk_total * 1000) return usage
内容的提问来源于stack exchange,提问作者Ab Danyia
相关产品推荐
相关产品推荐

