How esos-lab/vssim works
VSSIM is a real-time SSD simulator embedded in a QEMU/KVM virtual machine. The principal workflow is to configure modeled NAND and SSD parameters, run guest I/O through QEMU’s IDE-backed virtual SSD, buffer requests, translate them through an FTL, emulate NAND timing and operations, and report behavior to a monitor. Page mapping is the documented current FTL; BLOCK_MAP, FAST, and LAST are alternate implementations that the README says do not work with the current SSD module. Relationships among subsystems are documented at the README level; sampled excerpts do not establish their full call chains.
Main entry points: ftl.c Page-map FTL · QEMU QEMU runtime · ide.c IDE device model · ssd_io_manager.c NAND I/O timing
Components 18
Virtual machine
- QEMU runtime
QEMU - KVM integration
QEMU/qemu-kvm.c - IDE device model
QEMU/hw/ide.c
SSD emulation
- SSD configuration
CONFIG/vssim_config_manager.c - I/O buffers
FIRMWARE/firm_buffer_manager.c - NAND I/O timing
SSD_MODULE/ssd_io_manager.c - TRIM handling
SSD_MODULE/ssd_trim_manager.c
Flash translation
- Page-map FTL
FTL/PAGE_MAP/ftl.c - Page mapping
FTL/PAGE_MAP/ftl_mapping_manager.c - Block state
FTL/PAGE_MAP/ftl_inverse_mapping_manager.c - Garbage collection
FTL/PAGE_MAP/ftl_gc_manager.c - Block-map FTL
FTL/BLOCK_MAP/ftl.c - FAST FTL
FTL/FAST/ftl.c - LAST FTL
FTL/LAST/ftl.c
Monitoring
- Performance metrics
FTL/COMMON/ftl_perf_manager.c - SSD event logging
SSD_MODULE/ssd_log_manager.c - SSD monitor
MONITOR/SSD_MONITOR_PM/monitorform.cpp
Other components
- Experiment user
Connections 18
- Experiment user → SSD configuration: sets parameters
- Experiment user → QEMU runtime: runs guest
- SSD configuration → NAND I/O timing: configures model
- QEMU runtime → KVM integration: runs on
- QEMU runtime → IDE device model: models SSD as IDE
- IDE device model → I/O buffers: forwards I/O
- I/O buffers → Page-map FTL: buffers I/O
- Page-map FTL → Page mapping: uses mapping
- Page-map FTL → Block state: tracks block state
- Page-map FTL → Garbage collection: supports collection
- Page-map FTL → NAND I/O timing: emulates NAND I/O
- IDE device model → TRIM handling: handles TRIM
- NAND I/O timing → Performance metrics: records operation metrics
- Performance metrics → SSD event logging: reports behavior
- SSD event logging → SSD monitor: sends events
- Experiment user → Block-map FTL: may select
- Experiment user → FAST FTL: may select
- Experiment user → LAST FTL: may select