Yusim is a simple simulator based on Disksim program. We purposed to invoke two Disksim programs with two sub-processes to implement hybrid storage system.
In current version, we construct two sims(SSDsim and HDDsim) which respectively serves 'only one' request and follow a simple simulation progress(Wait/Serve/Wait/.../Shutdown). After each service, the sim returns a empty request(no other info.) with response time. That is Yusim.
Author: Yu-Cheng Yu ([email protected])
- Follow Disksim simulation included bus, controller and storage device.
- Hybrid communication between SSD(considered as HDD-cache) and HDD should be concerned.
- Replaceable caching policy.
- Replaceable I/O request scheduler.
- Support multi-user requests and system-defined user weights.
- Block-level request delivery
- Various experiment data, e.g., Response time, Throughtput, Hit rate and User info..
- I/O Scheduler: Credit-based scheduler.
- SSD Caching/Replacement Policy: Prize Caching.
- SSD Caching Space: Logical Partition.
- yu_parameter.h: System-defined parameters. Modification should pass self-validation.
- yusim.c, .h: Main interface.
- yu_syssim.c, .h: Simulator's behaviors.
- yu_ipc.c, .h: Use message queue in "Inter-Process Communication(IPC)".
- yu_structure.c, .h: Define system structure, e.g., User queue.
- yu_cache.c, .h: SSD cacahe management.
- yu_prize.c, .h: Prize management.
- yu_credit.c, .h: Credit distribution.
- yu_statistics.c, .h: User Statistics.
- yu_debug.c, .h: -
- Makefile: Modified Disksim version.
- yusim_batch.sh Batch execution.
[User_Weight_1] [User_Weight_2] [User_Weight_3] ...
[Request_Arrival_Time] [Device_number] [Block_Number] [Request_Size] [Request_Flag] [User_Number]
[Request_Arrival_Time] [Device_number] [Block_Number] [Request_Size] [Request_Flag] [User_Number]
[Request_Arrival_Time] [Device_number] [Block_Number] [Request_Size] [Request_Flag] [User_Number]
...
-
[User_Weight] : An
unsigned integer
as "User Weight". -
(Disksim-defined) [Request_Arrival_Time] :
Double
-precision milliseconds. -
(Disksim-defined) [Device_number] : An
unsigned integer
as specified device. Consider multi-disk in one device parameter file(e.g., RAID). -
(Disksim-defined) [Block_Number] : An
unsigned long
as the start of accessed block. Due to address alignment for SSD, it must be a valid number. -
(Disksim-defined) [Request_Size] : An
unsigned integer
as the consecutive length. Due to address alignment for SSD, it must be a valid number. -
(Disksim-defined) [Request_Flag] : '1' assigned as "Read" request and '0' assigned as "Write" request.
-
[User_Number] : An
unsigned integer
user number from '1' to 'N'.
- Disksim4.0 with SSD patch