System Configuration
Tons of parameters have to be configured in 9 types of configuration files before running a simulation. Table 1 summarizes the configuration files and Table 2-10 details each parameter to be configured. User is suggested to check the Modules page for better understanding of the parameters to be configured.
Table 1. Initialization Files
File Type |
File Cnt |
Name Convention |
Where to specify the file name |
Description |
Parameter Details |
Host Configuration Files |
one for each Host |
Host*.ini |
omnetpp.ini |
IO Generation, SCSI, N_Port, LUN Masking etc. |
|
Switch Configuration Files |
one for each Switch |
Sw*.ini |
omnetpp.ini |
E_Port, F_Port, Switch Control Centre, Domain, etc. |
|
Disk Array Configuration Files |
one for each Disk Array |
Dev*.ini |
omnetpp.ini |
CHIP, Caching, LUN, ACP, and Disk, etc. |
|
one for each processor |
My*.ini |
Host/Switch/Device configuration files |
Timing Host/CHIP CPU, Switch CPU, Array CPU, and FC Controller, etc. |
||
Disk Parameter Files |
one for each disk model |
*.params.ini |
DiskModel is setup in section [5] of Device configuration file |
Disk parameters for a given disk model. |
|
Disk Seek Files |
one for each disk model |
*.seek.full.ini |
DiskModel is setup in section [5] of Device configuration file |
Disk seek table for a given disk model. |
|
Zoning Configuration Files |
one for the active network |
ZoneSet*.ini |
omnetpp.ini |
ZoneSet configuration. |
|
Link Events File |
one for the active network |
LinkEvents.ini |
omnetpp.ini |
Link events triggered by Port events. |
|
OMNeT++ Initialization File |
one for the active network |
omnetpp.ini |
- |
General simulation parameters and SimSANs global parameters. |
Section ID |
Parameter Name |
Description |
Comments |
[1] |
PeriBusWid |
Host peripheral controller bus width in bit, usually 16, 32, or 64-bit |
refer to HPC |
|
PeriBusClk |
Host peripheral controller but clock in MHz, usually 33, 66, 100, or 133MHz |
refer to HPC |
|
CPU |
Host CPU file that defines timing elements |
refer to Host CPU |
|
MaxTarLun |
Maximum number of target LUNs that the Host can access |
if more than MaxTarLun LUNs are specified in LUN Masking table (in section [2.1]) those extra LUNs cannot be accessed. |
|
MaxRdWrIo |
Maximum number of concurrent READ/WRITE IOs that the host SCSI layer can open at any one time. Usually we choose 64, 128, 256, and 512. |
|
|
MaxCtrlIo |
Maximum number of concurrent control IOs (RPT_LUNS, INQUIRY, and MODE_SENSE) that the host SCSI layer can open at any one time. Usually this value is < 64. |
|
[2] |
Port# |
Specify the index for N_Port configuration |
each Host normally installs at most two HBAs. |
|
MaxPortSpeed |
Specify the port speed. Two values to choose: 1 for 1Gbps and 2 for 2Gbps. |
Speed auto-negotiation is enabled so that the port speed agreed by both sides will be chosen as the actual link speed. |
|
R_T_TOV |
Specify event time out value in millisecond. Two values to choose: 100 for 100ms and 0.1 for 100us. |
100ms is the default value defined in FC-FS. |
|
FcpFeature |
Specify FCP Feature for this N_Port. Two values to choose: "Ini" for FCP Initiator or "Tar" for FCP Target. |
for Host N_Ports, always be FCP Initiator. |
|
RxBufSize |
Maximum number of Frames that can be queued in the receiver buffer. This value is used to configure BB_Credit at the attached FC_Port. At lease one receiver buffer must be setup. |
in SimSANs, for 2G link, approx. 2 BB_Credits are required for every 3km. |
|
TxBufSize |
Maximum number of Frames that can be queued in the transmitter buffer. TxBufSize can be zero. |
|
|
Maximum number of Class-3 concurrent Sequences that an N_Port login pair can handle |
||
|
MaxSeqTRy |
Maximum number of transmission attempts for a Sequence. MaxSeqTry - 1 is the maximum number of re-transmission attempts if a Sequence fails. |
|
|
MaxPeerPort |
Maximum number of remote N_Ports that this N_Port can login to communicate with |
refer to EE_Pair |
|
FC_CTRL |
FC-2 Controller file that defines timing elements |
refer to FC-2 Controller |
LUN_WWN |
Specify the WWN for a LUN that has LUN Mask setting configured |
if you do not want a given LUN to be accessed by the Host, just don't setup the LUN Masking on that LUN. |
|
|
LUN_MASK |
Specify the Port# that allows the LUN to be accessed. Multiple Ports can be specified, separated by comma. |
if all the Port# specified have no connections out, that LUN is not accessible. |
|
PRI_INI_WWPN |
Specify the Initiator N_Port WWPN (in fact the WWPN uses module full-path, check OMNeT++ for more details) of the primary Initiator-Target path |
SimSANs supports fail-back if the failed primary path is restored. |
|
PRI_TAR_WWPN |
Specify the Target N_Port WWPN of the primary Initiator-Target path |
|
[3] |
LUN_WWN |
Specify the WWN for a LUN that has READ/WRITE IOs to issue |
in section [3] IO generation table, each row represents a single IO stream to a given LUN. |
|
IoNum |
Total number of IOs to be generated for this stream |
|
|
Stime |
The start time of issuing the 1st IO for this stream, unit in millisecond. |
|
|
IoPattern |
Specify the IO Pattern (the combination of R/W ratio, IO Size, BlkAddr, and IO Gap) for this stream |
|
[3.1] |
Name |
IO Pattern name |
|
|
R/W |
The ratio of READ IOs over WRITE IOs |
100 - Sequential READ, 0 - Sequential WRITE |
|
SizG |
Specify the Size Pattern Name for this IO Pattern |
|
|
BlkG |
Specify the Block Address Pattern Name for this IO Pattern |
|
|
GapG |
Specify the Gap Pattern Name for this IO Pattern |
|
[3.1.1] |
Name |
Size Pattern Name |
|
|
RGN |
Random number generator name (or distribution function name). For IO size, the random number generated is in the unit of K-byte. |
there're 24 RGNs including 20 pre-defined distribution functions in OMNeT++ and another 4 dedicated to SimSANs. Please see IO Generator. |
|
RNG# |
Random number generator ID from 0 - 31 |
this parameter only applicable to the 20 pre-defined OMNeT++ RNGs. |
|
Par1 |
Distribution function's 1st input parameter |
all 24 functions require at least one input parameter so Par1 cannot be set as N/A string "-". |
|
Par2 |
Distribution function's 2nd input parameter |
if the function requires two or more input parameters then Par2 cannot be set as N/A string "-". |
|
Par3 |
Distribution function's 3rd input parameter |
if the function requires three input parameters then Par3 cannot be set as N/A string "-". |
[3.1.2] |
Name |
Block Address Pattern Name |
|
|
RGN |
Random number generator name (or distribution function name). For Block Address, the random number generated is the LUN Block Number. |
see here |
|
RNG# |
Random number generator ID from 0 - 31 |
see here |
|
Par1 |
Distribution function's 1st input parameter. For seq_block, represents the initial block address. |
see here |
|
Par2 |
Distribution function's 2nd input parameter |
see here |
|
Par3 |
Distribution function's 3rd input parameter |
see here |
[3.1.3] |
Name |
IO Gap Pattern Name |
|
|
RGN |
Random number generator name (or distribution function name). For IO Gap, the random number generated is the time interval (millisecond) between IOs. |
see here |
|
RNG# |
Random number generator ID from 0 - 31 |
see here |
|
MinGap |
Minimum gap (microsecond) between consecutive IO requests |
for for self_sim only |
|
OnShape |
Shape parameter for ON periods |
for for self_sim only |
|
OffShape |
Shape parameter for OFF periods |
for for self_sim only |
|
Load |
Expected IO load in IOPS (IO per second) |
for for self_sim only |
|
Srcs |
Number of sources used for traffic aggregation |
for for self_sim only |
|
Par1 |
Distribution function's 1st input parameter. Not applicable to self_sim |
see here |
|
Par2 |
Distribution function's 2nd input parameter. Not applicable to self_sim |
see here |
|
Par3 |
Distribution function's 3rd input parameter. Not applicable to self_sim |
see here |
Section ID |
Parameter Name |
Description |
Comments |
[1] |
Domain_ID |
Switch Domain ID. Each switch in the fabric must be assigned a unique Domain_ID. Valid from 0 - 239. |
|
|
R_A_TOV |
Resource Allocation Time-out Value in millisecond |
currently SimSANs does not use it. |
|
E_D_TOV |
Error Detection Time-out Value in millisecond |
|
|
CPU |
CPU file that defines timing elements for switch control centre |
|
[2] |
Port# |
Specify the index for Sw_Port configuration |
|
|
Area_ID |
Area that the port belongs to. Valid from 0 - 255. |
|
|
MaxPortSpeed |
Specify the port speed. Two values to choose: 1 for 1Gbps and 2 for 2Gbps. |
see here |
|
R_T_TOV |
Specify event time out value in ms. Two values to choose: 100 for 100ms and 0.1 for 100us. |
see here |
|
B_Port |
Specify whether the switch port is a B_Port. N for No or Y for Yes. |
currently SimSANs does not support B_Port so should always set "N". |
|
RxBufSize |
Maximum number of Frames that can be queued in the receiver buffer. This value is used to configure BB_Credit at the attached FC_Port. At lease one receiver buffer must be setup. |
see here |
|
TxBufSize |
Maximum number of Frames that can be queued in the transmitter buffer. TxBufSize can be zero. |
see here |
|
FC_CTRL |
FC-2 Controller file that defines timing elements |
refer to FC-2 Controller |
Section ID |
Parameter Name |
Description |
Comments |
[1] |
CHIP_ID |
CHIP index for the CHIP configuration |
refer to Device |
|
PeriBusWid |
CHIP peripheral controller bus width in bit, usually 16, 32, or 64-bit |
same as the one in Host configuration |
|
PeriBusClk |
CHIP peripheral controller but clock in MHz, usually 33, 66, 100, or 133MHz |
same as the one in Host configuration |
|
CPU |
CHIP CPU file that defines timing elements |
same as the one in Host configuration |
|
MaxTarLun |
Maximum number of target LUNs that the CHIP can access. Only affect the Initiator N_Ports within the CHIP. Make no sense to Target N_Ports. |
same as the one in Host configuration. see here. |
|
MaxRdWrIo |
Maximum number of concurrent READ/WRITE IOs that the CHIP SCSI_Rmt can open at any one time. Usually we choose 64, 128, 256, and 512. |
|
|
MaxCtrlIo |
Maximum number of concurrent control IOs (RPT_LUNS, INQUIRY, and MODE_SENSE) that the CHIP SCSI_Rmt can open at any one time. Usually this value is < 64. |
|
[2] |
CHIP_ID |
CHIP index for the N_Port configuration |
|
|
Port# |
Specify the port index within the CHIP |
usually each CHIP configures at most four N_Ports. |
|
MaxPortSpeed |
Specify the port speed. Two values to choose: 1 for 1Gbps and 2 for 2Gbps. |
see here |
|
R_T_TOV |
Specify event time out value in millisecond. Two values to choose: 100 for 100ms and 0.1 for 100us. |
see here |
|
FcpFeature |
Specify FCP Feature for this N_Port. Two values to choose: "Ini" for FCP Initiator or "Tar" for FCP Target. |
in SimSANs, Target ports always in CHIP. |
|
RxBufSize |
Maximum number of Frames that can be queued in the receiver buffer. This value is used to configure BB_Credit at the attached FC_Port. At lease one receiver buffer must be setup. |
see here |
|
TxBufSize |
Maximum number of Frames that can be queued in the transmitter buffer. TxBufSize can be zero. |
see here |
|
C3ConCurrSeq |
Maximum number of Class-3 concurrent Sequences that an N_Port login pair can handle |
|
|
MaxSeqTRy |
Maximum number of transmission attempts for a Sequence. MaxSeqTry - 1 is the maximum number of re-transmission attempts if a Sequence fails. |
|
|
MaxPeerPort |
Maximum number of remote N_Ports that this N_Port can login to communicate with |
refer to EE_Pair |
|
FC_CTRL |
FC-2 Controller file that defines timing elements |
refer to FC-2 Controller |
[2.1] |
LUN_WWN |
Specify the WWN for a LUN that has LUN Mask setting configured. Only applicable to Initiator N_Port. |
see here |
|
LUN_MASK |
Specify the Port# that allows the LUN to be accessed. Multiple Ports can be specified, separated by comma. |
see here |
|
PRI_INI_WWPN |
Specify the Initiator N_Port WWPN (in fact the WWPN uses module full-path, check OMNeT++ for more details) of the primary Initiator-Target path |
see here |
|
PRI_TAR_WWPN |
Specify the Target N_Port WWPN of the primary Initiator-Target path |
|
[3] |
MaxArrLun |
Maximum number of LUNs (including LUN0) that the Device installs |
|
|
CacheSize |
Total Cache space in Mega-byte |
|
|
CswBusWidth |
The Cache Switch bus width in bit. Usually we choose 16, 32, and 64-bit. |
see Cache Switch |
|
CswBusClock |
The Cache Switch bus clock in MHz. Usually we choose 20, 25, 33, 66, and 100MHz. |
see Cache Switch |
|
CPU |
Control Memory CPU file that defines timing elements |
|
|
Enable (Y) or disable (N) Write-Through caching |
||
[3.1] |
CCH_UPD |
Specify the Cache Update Name: None, Fixed, or Adapt |
|
|
FTH_actv |
dirtyRatio threshold to activate flush operation |
|
|
FTH_deactv |
dirtyRatio threshold to de-activate flush operation |
|
|
INT_flush |
Flush operation time interval in millisecond |
|
|
FBR_max |
Maximum value of Flush Block Ratio - the ratio of dirty blocks to be flushed over total dirty blocks |
for Fixed Update only |
|
FBR_ini |
Initial value of Flush Block Ratio |
for Adapt Update only |
|
FBR_min |
Minimum value of Flush Block Ratio |
for Adapt Update only |
|
TOL_fact |
Tolerance factor - usually a multiple of INT_flush |
for Adapt Update only |
|
AGG_fact |
Aggressiveness factor to generate the value of thisMaxFlushBlk |
for Adapt Update only |
[3.2] |
Enable |
Enable (Y) or disable (N) Cache Cleaning operation |
|
|
INT_Clean |
Clean operation time interval in millisecond |
|
|
HRTH |
Cache-Hit ratio threshold value |
|
|
CTH_H_actv |
when Cache-Hit drops below HRTH, the ratio of occupied Cache space over total Cache space, when exceeded, the cleaning operation is activated |
|
|
CBR_H_max |
when Cache-Hit drops below HRTH, the maximum ratio of Cache blocks to be cleaned out over total Cache blocks opened |
|
|
CTH_N_actv |
when Cache-Hit above HRTH, the ratio of occupied Cache space over total Cache space, when exceeded, the cleaning operation is activated |
|
|
CBR_N_max |
when Cache-Hit above HRTH, the maximum ratio of Cache blocks to be cleaned out over total Cache blocks opened |
|
[4] |
ACP_ID |
ACP index for the ACP configuration |
refer to Device |
|
PeriBusWid |
ACP peripheral controller bus width in bit, usually 16, 32, or 64-bit |
same as the one in Host and CHIP configuration |
|
PeriBusClk |
ACP peripheral controller but clock in MHz, usually 33, 66, 100, or 133MHz |
same as the one in Host and CHIP configuration |
|
CPU |
ACP CPU file that defines timing elements |
same as the one in Host and CHIP configuration |
[5] |
ACP_ID |
ACP index for the Array Group configuration |
|
|
ArrGrp# |
Specify the Array Group index within the ACP |
|
|
FCALSpeed |
Specify the port speed for disk connection. Two values to choose: 1 for 1Gbps and 2 for 2Gbps. |
see FC-AL Hub |
|
DiskModel |
Specify the disk model name used by the Array Group. The disk parameter file name is DiskModel.params.ini and the seek delay file is DiskModel.seek.full.ini. |
four pre-defined disk models are included in the SimSANs package. |
|
ArrGrpDiskNum |
Specify the number of disks that the Array Group installs |
|
|
WrSecResp |
Specify whether or not output sector response files: *.SecResp |
|
[6] |
LUN_WWN |
Specify WWN for the LUN (except LUN0) to be configured. |
do not setup LUN0 |
|
DiskNum |
The number of member disks for the LUN |
|
|
BlkSize |
Specify the LUN Block Size in K-byte. Usually we choose 4K, 8K, 16K, 32K, 64K, and 128K. |
|
|
ConCurrIo |
Maximum number of concurrent IOs that the LUN can handle at any one time |
see LUN Controller |
|
StripeDepth |
Stripe Depth in K-byte. Must be a multiple of Block Size. Usually we use 4 x BlkSize. |
SimSANs use RAID 1+0. see LUN Controller |
|
PrimaryDisks |
Primary member disks identified by acpId.arrGrpId.diskId, e.g., 012 is ACP[0].ArrGrp[1].Disk[2]. Multiple disks are separated by comma. |
use "-" to specify the member disk missing. |
|
MirrorDisks |
Mirrored member disks |
|
Table 5. Processor Timing Parameters
Section ID |
Parameter Name |
Description |
Comments |
[1] |
CPU_Clock |
Processor clock in MHz |
|
|
Mem_Clock |
Memory clock in MHz |
|
[2] |
Task_Name |
Program task that consumes processor resource |
see Timing Elements |
|
INSTR_NUM |
Number of processor instructions to fulfill the task. Two values should be specified, and separated by comma. The 1st one is mean and the 2nd one is stddev. |
see Timing Elements |
|
CPU_CYL_INS |
Number of processor cycles for decoding and execution of an instruction. Two values should be specified, and separated by comma. The 1st one is mean and the 2nd one is stddev. |
see Timing Elements |
|
MEM_REF_INS |
Number of memory references needed for an instruction. Two values should be specified, and separated by comma. The 1st one is mean and the 2nd one is stddev. |
see Timing Elements |
Parameter Name |
Description |
Comments |
Cyl |
Cylinder number |
|
SecSize |
Disk sector size in byte. Three values to choose: 512, 1024, or 2048. |
|
TrkSec |
Track density - sectors per track |
|
Bands |
Number of bands |
|
CPBidx |
Cylinder-per-Band index |
|
SPBidx |
Sector-per-Band index |
|
L2P_MAP |
Specify the mechanism for mapping logical sector to physical sector. Two values to choose: 1 for cylinder-band basis and 2 for cylinder basis. |
|
Heads |
Number of Read/Write heads |
|
Rotat |
Rotational speed in RPM - rotations per minute |
|
BufSize |
Disk buffer size in K-byte |
see Disk Buffer |
WrDly |
Additional delay for settling read/write head for write operation. Unit in millisecond. |
|
HeadSw |
Delay for performing head switch operation. Unit in millisecond. |
|
CylSw |
Delay for performing cylinder switch operation. Unit in millisecond. |
|
CtrlOH |
Controller overhead to initiate mechanic of read/write head. Unit in millisecond. |
|
FCALDly |
Overhead for transfer sector between disk buffer and FC-AL loop link |
|
cmdQueDpth |
Command queuing depth. Unit in number of sectors. |
see Disk Buffer |
cmdQueDly |
Delay in command queuing operation. Unit in microsecond. |
see Disk Buffer |
Column |
Description |
Comments |
1 |
Cylinder-to-move |
|
2 |
Seek delay against the cylinder-to-move |
|
Parameter Expression |
Description |
Comments |
[Zone Name] |
Zone Name for the zone |
|
N_Port WWN |
A list of N_Port WWPNs belongs to the zone |
SimSANs uses WWN zoning. see Switch Control Centre. |
Table 9. Link Events Parameters
Parameter Expression |
Description |
Comments |
@ FC_Port WWN |
Specify the FC_Port that has port events to setup |
|
D time |
Specify the simulation time (millisecond) when the port is DOWN |
Multiple events may exist for a given N_Port but the 1st event must always be DOWN. |
U time |
Specify the simulation time (millisecond) when the port is UP |
At least one second gap must be allowed between consecutive events. |
Table 10. SimSANs Global Parameters in omnetpp.ini
Parameter Name |
Description |
Comments |
Output Files and Directories |
There are 17 directories and 6 file names need to specified |
see more details at Simulation Analysis |
Data Collection Time Intervals |
There are 9 interval values need to be specified for a variety of statistics |
use larger value (> 1000ms) to decrease the disk space consuming |
maxLinkEv |
Maximum number of link events for each FC_Port |
|
minEvInt |
Minimum gap (millisecond) between events |
SimSANs requires at least 1000ms gap. |
light_speed |
The value of light speed in km. Used to calculation of propagation delay. |
|
link_1G_cost |
Link cost for 1G Fibre Channel link |
see Switch Control Centre about Link Cost and Path Selection. |
link_2G_cost |
Link cost for 2G Fibre Channel link |
|
s_fact_km |
How many kilometers the S factor get an increment by 1. Used to calculation of link cost. |
see Switch Control Centre about Link Cost |
evEndDelay |
The flag evDone (one of the root module parameter indicating all link events are issued) is set true until this delay (millisecond) elapses after the last link event issued. |
|
nsDbOutCol |
How many columns of Port Address_IDs to display for each row of the Name Server Database output data (*.NsDb files). |
|
defConCurrSeq |
Default concurrent sequence value. |
in FC-FS this value should be 1. SimSANs allows user to customize it. |
maxIoGen |
Maximum number of IO generators (or streams) can be setup for each Host |
|
writePhySecMap |
Whether or not enable writing physical sector map |
|
writeLogSecMap |
Whether or not enable writing logical sector map |
|
skipScsiIo |
Whether or not skip SCSI IO generation. |
this flag is useful and save time when you only want to watch network activities without caring about IO activities. |
maxDomNum |
Maximum number of domains (or switches) that can be setup for the whole fabric |
|
maxSwPortNum |
Maximum number of port (port count) that a switch can install |
|
maxNsDbEntry |
Maximum number of Name Server Database entries |
each active N_Port will occupy an NsDb entry. |
maxZoneMem |
Maximum number of zone members (N_Port IDs) that each zone can setup |
|
maxZoneNum |
Maximum number of zones that the active zone set can setup |
|
Host*.nxPortNum |
Number of N_Ports installed for the Host |
|
Sw*.swPortNum |
Number of E_Ports/F_Ports installed for the Switch |
do not setup SwPorts much more than the switch expects to use during the simulation - unused port will cost a lot of memory. |
Dev*.chipNum |
Number of CHIPs installed for the Device |
|
Dev*.chipNxPortNum |
Number of N_Port installed for each CHIP of the Device |
|
Dev*.acpNum |
Number of ACPs installed for the Device |
|
Dev*.acpArrGrpNum |
Number of Array Groups installed for each ACP of the Device |
|
Dev*.busNum |
Number of bus connections between Control Memory with each Cache Switch |
|
Dev*.cswNum |
Number of Cache Switches installed for the Device |
|
linkEventFile |
The input file name of link events |
|
zoneSetFile |
The input file name of the active zone set |
user can setup as many zone set files as he/she wants but only the one setup here is active during the simulation. |
Host*.confFile |
Host configuration file name |
each Host in the network must have a configuration file. |
Dev*.confFile |
Device configuration file name |
each Device in the network must have a configuration file. |
Sw*.confFile |
Switch configuration file name |
each Switch in the network must have a configuration file. |
This page was last updated 2003.10.15