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

What Device_Number means? #47

Open DanlinJia opened 3 years ago

DanlinJia commented 3 years ago

Hi,

I notice that in a trace_based workload, the columns of input trace file has following names: 1.Request_Arrival_Time 2.Device_Number 3.Starting_Logical_Sector_Address 4.Request_Size_In_Sectors 5.Type_of_Requests[0 for write, 1 for read].

I wonder what Device_Number refers to? Does that mean we can simulate multiple storage devices, and the host may send requests to different devices?

DanlinJia commented 3 years ago

For example, I have 100 devices on a host, must I specify the device number from 0-99? Could I use a hundred nonconsecutive indexes?

tavakara commented 3 years ago

Hi @DanlinJia!

You can ignore the device number field. If you need to make the trace file on your own, you can fill it with some arbitrary integer number. This column (maybe with a similar name) is found in many ASCII storage trace files like the column ASU in the UMASS format specification: http://skulddata.cs.umass.edu/traces/storage/SPC-Traces.pdf.

The simulator accepts it as input but doesn't apply it to the simulations.

DanlinJia commented 3 years ago

Thanks for replying! I recommend modifying your README to state this point clearly. Otherwise, it's misleading for users to simulate multiple devices in a single workload.

LLLjun commented 1 year ago

By the way, do you know what "sector" in Request_Size_In_Sectors refers to? And what's the difference between it and "page" here? thanks.

RonShih commented 1 year ago

@LLLjun Sector (or LBA) is the basic unit of host system, while page (or LPA) is the basic unit of flash memory (SSD). Usually a LBA is smaller than a LPA, e.g., a 512B LBA and a 8KB LPA (default setting of MQSim). Before getting into FTL, it transforms start_LBA and length (how many sectors you request, or Request_Size_In_Sectors) into LPA and offset (where a specific LBA locates in this LPA). For more details, check function segment_user_request() in class Input_Stream_Manager_NVMe or Input_Stream_Manager_SATA.