CMU-SAFARI / MQSim

MQSim is a fast and accurate simulator modeling the performance of modern multi-queue (MQ) SSDs as well as traditional SATA based SSDs. MQSim faithfully models new high-bandwidth protocol implementations, steady-state SSD conditions, and the full end-to-end latency of requests in modern SSDs. It is described in detail in the FAST 2018 paper by Arash Tavakkol et al., "MQSim: A Framework for Enabling Realistic Studies of Modern Multi-Queue SSD Devices" (https://people.inf.ethz.ch/omutlu/pub/MQSim-SSD-simulation-framework_fast18.pdf)
https://people.inf.ethz.ch/omutlu/pub/MQSim-SSD-simulation-framework_fast18.pdf
MIT License
268 stars 144 forks source link

NVMe Queue Arbitration (Flow priority) #37

Closed joyantamishu closed 4 years ago

joyantamishu commented 4 years ago

Hello,

In the workload.xml file there is a option named _PriorityClass that can be set for different flows. What I understand from the readme description, we can set the relative I/O priority of different flows by setting the corresponding _PriorityClass value in the range {{URGENT, HIGH, MEDIUM, LOW}, which is very similar to the NVMe queue specification. I tried two different flows with two different _PriorityClass values, one with URGENT and another with LOW. And after the simulation, when I see the statistics, I see almost no difference in performance at all ( the delay, IOPS etc of these two flows are almost similar, which supposed not to be the case). I put rest of the required attributes (i.e. _ReadPercentage, _Average_RequestSize, _Average_No_of_Reqs_inQueue etc) of the two flows identical.

So, what I want to know, whether this _PriorityClass of each flows really has some impact or this is left for the future enhancement.

Thanks Joyanta

arashta commented 4 years ago

Hi Joyanta,

You need to set the value of the Transaction_Scheduling_Policy parameter to PRIORITY_OUT_OF_ORDER. The base scheduler, i.e., OUT_OF_ORDER, ignores NVMe policies.

Best Regards, Arash