Closed WaterccL closed 4 years ago
Thanks for reporting the issue. This is certainly possible in cases that the arrival rate of the host I/O requests is higher than the maximum throughput of the modeled SSD device. In these cases, the host-side I/O request generator stops generating requests at the specified time, but too many I/O requests remain waiting in the host-side I/O queues. The modeled SSD device continues executing waiting I/O requests in the host-side queues until all of them are serviced. Can you please send us your input files for further investigation? We may change the configuration parameters' name to prevent confusion.
There is also a related bug where execution time is used to calculate IOPS.
In file src/host/IO_Flow_Base.cpp, in line 493:
val = std::to_string((double)STAT_generated_request_count / (Simulator->Time() / SIM_TIME_TO_SECONDS_COEFF));
should be changed to:
val = std::to_string((double)STAT_generated_request_count / (Simulator->Time() /
(double)
SIM_TIME_TO_SECONDS_COEFF));
Otherwise, if your execution time is not an integer in seconds (e.g. 1.5 seconds) the result of the IOPS is wrong. Similar for lines 497 and 501 of the same file.
I use MQSim to run a Synthetic workload which generates random requests. In the workload.xml, the stop time is 10s. At first, we set the Read_Percentage to 0, and the total simulation time is 12s. Then we set the Read_Percentage to 100, and the total simulation time is 25s. Is this a normal phenomenon? I guess that the simulation time should correspond to the stop time of workload.xml.