-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathreadwrite.cfg
232 lines (198 loc) · 6.18 KB
/
readwrite.cfg
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
#
# Copyright (C) 2017 CAMELab
#
# This file is part of SimpleSSD.
#
# SimpleSSD is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# SimpleSSD is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with SimpleSSD. If not, see <http://www.gnu.org/licenses/>.
#
#
# Sample SimpleSSD-Standalone Configuration File
#
# Section:
# global: Global options
# generator: Request generator configuration
# trace: Trace replayer configuration
#
# Global Configuration
[global]
## Select mode
# Possible values:
# 0: Request generator mode (all configs in [trace] will be ignored)
# 1: Trace replayer mode (all configs in [generator] will be ignored)
Mode = 0
## Statistic log period
# Print statistic log periodically
# 0 means no log printout
# Unit: ms (millisecond) in simulation time (not real time)
LogPeriod = 10
## Log file
# Set output path of statistic log and debug log
# <empty value> means no log printout
# Possible keywords:
# STDOUT: Standard Output
# STDERR: Standard Error
# LogFile = log.txt
# DebugLogFile = debug.txt
LogFile =
DebugLogFile =
## I/O Log file
# Set output path of latency log
# <empty value> means no log printout
LatencyLogFile = STDOUT
## Progress printout
# If both logs are printed to file (not screen)
# Event engine speed and simulation progress will be shown to STDOUT
# This option set the period of progress printout
# 0 means no log printout
# Unit: s (second) in host time (real time)
ProgressPeriod = 0
## Interface
# Set host interface to use
# Possible values:
# 0: No interface - directly send request to HIL layer
# 1: NVMe - Use Non-Volatile Memory Express
# 2: SATA - Use Serial AT Attachment
# 3: UFS - Use Universal Flash Storage
Interface = 0
## Scheduler
# Set scheduler to use in Block I/O Layer
# Possible values:
# 0: Noop - No scheduling
Scheduler = 0
## System latency
# Mimics I/O stack of real OSes by adding latency of software execution
SubmissionLatency = 5us
CompletionLatency = 5us
# Request generator configuration
[generator]
## This request generator will work similar to Flexible I/O tester
# Definition of Types:
# str: String, a sequence of alphanumeric characters
# int: SI integer, a sequence of numeric characters
# Possible suffix (case sensitive):
# 10^3 base: k, m, g, t
# 2^10 base: K, M, G, T
# float: Floating point number, a sequence of numeric characters
# with one (or none) of decimal point
# bool: Boolean, a true or false value.
# Possible value (case insensitive):
# True: Non-zero number, T, True, Y, Yes
# False: Otherwise
# time: SI integer, a sequenced of numeric characters
# If no suffix provided, value will treated as pico-second.
# Possible suffix (case sensitive):
# s, ms, us, ns, ps
## Total size to I/O = int
# Only valid when time_based = false
io_size = 128M # 16 * 2^20 bytes
## Type of I/O = str
# Possible values:
# read: Sequential read
# write: Sequential write
# randread: Random read
# randwrite: Random write
# readwrite: Mixed sequential I/O
# randrw: Mixed random I/O
readwrite = readwrite
## Percentage of mixed I/O = float
# If readwrite is not readwrite nor randrw, this value will ignored
# 0 <= value <= 1
rwmixread = 0.5 # 50% of read I/O
## Block size = int
blocksize = 4K
## Block align = int
# Default <empty value> is blocksize
blockalign =
## I/O mode = str
# Possible values:
# sync: Synchronous I/O
# async: Asynchronous I/O
iomode = async
## I/O depth = int
# iodepth = 1 when <iomode> = sync
iodepth = 1
## Offset = int
offset = 0
## Size = int
# Default <empty value> is [SSD size] - <offset>
size =
## Thinktime = time
thinktime = 0
## Random seed = int
randseed = 13245
## Time based = bool
time_based = 0
## Runtime = time
# Only valid when time_based = true
runtime = 10s
# Trace replayer configuration
[trace]
## Trace file
File = ./case.revised
## Timing option
# Possible values:
# 0: No timing constraint (Sync)
# I/O will issued synchronously with BreakSyncIO wait time
# 1: No timing constraint (Async)
# I/O will issued asynchronously with BreakAsyncIO wait time
# 2: Strict timing
# I/O will issued asynchronously at exact time of trace
TimingMode = 1
## Queue depth
# Maximum asynchronous I/O depth when using TimingMode = 1
QueueDepth = 1
## Limit the number of I/O
# Set zero or leave empty to issue all I/O in the trace file
IOLimit = 0
## Trace file regular expression
# See C++11 Regular Expression Library
# Always use ECMAScript regular expression grammar
# Unmatched line will be ignored
# This example is for blkparse result
# Regex = "(\d+).(\d+) +(\w+) +(\d+) +(\d+) +(\w+) +(\d+).(\d+) +(\d+).(\d+) +(\d+).(\d+) +(\d+)"
Regex = "(\d+).(\d+) +(\w+) +(\d+) +(\d+) +(\w+)"
## Trace file regular expression group ID
# Mapping field and group ID of parsed trace file
# <Field> = <Group ID>
# Field may empty
# All time field will be added up
# Group ID 0 is matched string (Do not use)
# All field (except operation) must contain integer (not floating point number)
# For operation, only first character of string will be used
# R for read, W for write, F for flush and T/D for trim
# Case-insensitive
# Example: RA (Read, Read-ahead in blkparse)
# Handled as read operation (R)
# Example: trim (Trim in fio iolog version 2)
# Handled as trim operation (T)
# Example: D (Trim in blkparse - Discard)
# Handled as trim operation (D)
# Example: FWFS (Flush, Write, FUA, SYNC in blkparse)
# Handled as flush operation (F)
Operation = 3
ByteOffset =
ByteLength =
LBAOffset = 4
LBALength = 5
Second = 1
Millisecond =
Microsecond =
Nanosecond = 2
Picosecond =
## LBA size
# Set LBA size if LBA offset/length used
LBASize = 512
## Treat field (except time) as hexadecimal
# Double check that the regular expression captures hexadecimal number
UseHexadecimal = 0