Code Monkey home page Code Monkey logo

yusim's Introduction

Yusim

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])

Feature

Simulator

  • 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..

Policy

  • I/O Scheduler: Credit-based scheduler.
  • SSD Caching/Replacement Policy: Prize Caching.
  • SSD Caching Space: Logical Partition.

Repository contents

/src

  1. yu_parameter.h: System-defined parameters. Modification should pass self-validation.
  2. yusim.c, .h: Main interface.
  3. yu_syssim.c, .h: Simulator's behaviors.
  4. yu_ipc.c, .h: Use message queue in "Inter-Process Communication(IPC)".
  5. yu_structure.c, .h: Define system structure, e.g., User queue.
  6. yu_cache.c, .h: SSD cacahe management.
  7. yu_prize.c, .h: Prize management.
  8. yu_credit.c, .h: Credit distribution.
  9. yu_statistics.c, .h: User Statistics.
  10. yu_debug.c, .h: -
  11. Makefile: Modified Disksim version.
  12. yusim_batch.sh Batch execution.

Trace Format

[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]
...

  1. [User_Weight] : An unsigned integer as "User Weight".

  2. (Disksim-defined) [Request_Arrival_Time] : Double-precision milliseconds.

  3. (Disksim-defined) [Device_number] : An unsigned integer as specified device. Consider multi-disk in one device parameter file(e.g., RAID).

  4. (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.

  5. (Disksim-defined) [Request_Size] : An unsigned integer as the consecutive length. Due to address alignment for SSD, it must be a valid number.

  6. (Disksim-defined) [Request_Flag] : '1' assigned as "Read" request and '0' assigned as "Write" request.

  7. [User_Number] : An unsigned integer user number from '1' to 'N'.

Get started

1. Download Disksim4.0 & Build it!

2. Clone Yusim

3. Paste all files in /src into disksim/src

yusim's People

Contributors

yuchengml avatar

Watchers

James Cloos avatar 聂世强 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.