%OS_QUANTUM
Number of cycles before OS switches threads.
%MULT_RL
Use multiple ready list for bus-based machines.
%SINGLE_RL
Use one ready list for bus-based machines.
%OS_CALL_PRIORITY
Priority for ihandler thread (handles interrupts on idle processors).
%RESCHEDULE_LATENCY
Time to reschedule a processor on bus-based machines.
%TIMER_PERIOD
Cycles between timer interrupts.
%NOBUSY
Simulate spinning, as opposed to actually spinning in the user thread.
%FATAL
Make all OS errors fatal; this simplifies debugging.
%SEMA_TTSET
Use test-and-test-and-set shared-memory semaphores.
%SEMA_FEBIT
Use full/empty bit semaphores; these always spin and will deadlock if
the holder is another thread on the same processor.
%SEMA_USER
User-defined semaphore routines -- don't include standard versions.
%TTSET_DELAY
Fixed overhead for ttset semaphores; they also use exponential backoff.
%USERMAIN_STACK
Number of stack blocks for the usermain thread.
%CACHE_BITS
Defines the number of sets in the cache.
%LINE_BITS
Defines the number of bytes per cache line.
%SET_SIZE
Defines the number of lines per set (associativity).
%NOCACHE
Do not simulate caches, all non-local accesses go through network.
%YESCACHE
Simulate caches.
%CACHEWITHDATA
Keep copies of data for each cache. This allows them to be incoherent,
but requires far more memory.
%WATCH_CACHE
Record cache-hit ratio events.
%NO_OF_PROCESSORS
The number of simulated processors.
%BUS
Simulates a Bus instead of a Network
%NET
Simulates a network (instead of a bus).
%MAX_THREADS
Maximum number of active threads at any one time.
%MAX_PROC_THREADS
Maximum number of threads active on one processor at any one time.
%WATCH_IDLE
Record Idle/Busy events for processors.
%WATCH_BUS
Record bus events (if using a bus).
%WATCH_NET
Record network events (if using a network).
%WATCH_THREADS
Record active thread events.
%SIM_QUANTUM
Maximum cycles before a user thread must relinquish control to the engine.
%ALEWIFE
Use "completion interrupts" to tell processor when a message send has
completed (asynchronously).
%INTR_LATENCY
Overhead for handling an interrupt.
%FEBITS
Attach full/empty bits to shared-memory locations.
%MAX_SEMAPHORES
Maximum number of semaphores program can allocate.
%MODULE_BITS
Defines the amount of shared memory per module.
%NO_OF_MODULES
Number of memory modules; set to number of processors for network machines.
%MEM_ACCESS_LATENCY
Cycles to read one word of (local) shared-memory.
%CACHE_ACCESS_LATENCY
Cycles to read one word out of the cache.
%WATCH_SEM
Record semaphore events.
%N_DIRECT
Use a direct network.
%N_INDIRECT
Simulate an indirect network (like a Butterfly)
%Ndim
The number of dimensions in a k-ary n-cube network.
%Nk
The number of nodes along a dimension in a k-ary n-cube network.
%N_UNIDIR
Simulate unidirectional network.
%N_BIDIR
Simulate bidirectional network. (broken?)
%NET_EXACT
If set, use an exact packet-based network simulation, otherwise use the
analytical model that is faster but does not simulate hot spots.
%NET_STAGES
Number of stages in an indirect network.
%SWITCH_DELAY
Latency for (wormhole-routed) packet through a switch, in cycles per flit.
%WIRE_DELAY
Latency for (wormhole-routed) packet along a wire, in cycles.
%MAX_PACKETS
Maximum number of packets in use at one time.
%MAX_PACKET_WORDS
Maximum length of one packet.
Should be  max(LU_MATRIX_SIZE + 2, BLOCK_SIZE / 4 + 20)
%INTR_PER_PROCESSOR
Space allocated for pending interrupts is this value times the number
of processors. (A given processor may have more than this number.)
%SEND_RECEIVE
Use synchronous send-receive communication style (like the nCUBE).
%STK_BLK_SIZE
The size in bytes of one stack block.
%STK_THRESHOLD
The buffer area at the end of the stack.  If the user thread enters
this area, Proteus will signal a stack overflow error.
%MAX_STKBLKS
Maximum number of stack blocks that can be in use at one time.
%MAX_SIMREQS
Maximum number of outstanding engine requests at one time.
%MAX_INTR_TYPES
Maximum number of interrupt types (indluding IPI's).
%RANDOMREQ
Pseudo-randomly order engine requests with the same timestamp, allowing
nondeterminism by changing the seed (see proteus -help).
%SCHED_FCFS
A first-come, first-served scheduler for runtime threads. 
Threads run until they block or exit, and are kept in order.
%SCHED_PRIORITY
A simple priority-flow scheduler for runtime threads, which exploits
randomization to "fairly" allocate time slices to threads.
%SCHED_SIMPLE
A simple round-robin scheduler for runtime threads. After the quantum
expires, the next thread is chosen. However, they may not be kept in order. 
%CP_NONE
Compute procs have no buffering in its file system.
All requests are passed directly to the relevant I/O procs.
%CP_SINGLE
Compute procs have a single block buffer in its file system.
Small requests can be serviced from it; limited OBL prefetch used.
%CP_DOUBLE
Compute procs have D+1 one-block buffers in its file system. These
service small requests and allow full double buffering and deeper prefetching.
%CP_THREAD
Compute procs have D threads to service the D disks, each with one buffer.
This allows better asynchrony than CP_DOUBLE, but may have more overhead.
%NET_SCATTER_GATHER
Does the network chip support scatter on receipt, and gather on send? 
I use it for gathering two pieces, a message head and a message body.
%BLOCK_SIZE
Size of disk block in bytes. Must be a power of two.
%LOG_BLOCK_SIZE
Number of bits in disk block size. For example, 12 -> BLOCK_SIZE of 4096.
%NO_OF_DISKS
Number of disks. Must be a multiple of number of I/O procs.
%DISK_READ_TIME
Disk read time in msec. (Trivial disk only)
%DISK_WRITE_TIME
Disk write time in msec.  (Trivial disk only)
%TICSperSEC
This is the number of cycles per second of the simulated processor.
It is used for computing bandwidths, and modeling the disks.
%BYTESperSEC
Routing bandwidth of the network, in each direction, in bytes per second.
BYTESperFLIT to is computed to adjust for CPU/network cycle-time mismatch.
%BYTESperFLIT
Size of a network flit, in bytes.  Computed from network bandwidth and
CPU speed.    Switch and wire delays are in cycles per flit.
%TRAP_CYCLES
This is the number of cycles of overhead for a system call. 
It is the null system call time. Added to all user-level file operations.
%MENU_NET
This is a dummy parameter, used only within Configfile.
%MENU_DMCACHE_PARMS
This is a dummy parameter, used only within Configfile.
%MENU_DMCACHE_CACHE
This is a dummy parameter, used only within Configfile.
%FILE_BLOCKS_MAX
File size in blocks. No more than this many disk blocks will be used by the
file; fewer may be used if the last record would not be a full RECORD_SIZE. 
%RECORD_SIZE
Record size in bytes. Must be a multiple of word size (4).
%IOP_NONE
The I/O proc file system has no buffers. All requests are passed
directly to the disk. Small writes require an initial read as well.
%IOP_BUFFER
I/O proc has a single (block or track) buffer PER COMPUTE PROC (CP).
CPs can use data in any buffer, but only expel data from their own buffer.
%IOP_CACHE
I/O proc has as many (block or track) buffers as there are compute procs.
The buffers are managed as an LRU cache.
%CONSISTENCY_NONE
There is no extra effort made to ensure consistency, but
writes involving different blocks will never cause problems.
%CONSISTENCY_SPRITE
A block that is concurrently write-shared will not be permitted to be
buffered at compute procs, much like Sprite won't cache write-shared files.
%CONSISTENCY_COMBINE
Concurrently write-sharing of a block does not prevent caching; extra 
information is passed to allow combining of partial block writes.
%IOP_AHEAD_BEHIND
The I/O proc can do read ahead from and write behind to the disk.
(Read ahead and write behind between CP and IOP is separate.)
%TRIVIAL_DISK
A trivial disk model where all accesses have constant time.
%MODEL_DISK
A real disk model. Right now the only choice is the HP 97560.
%DISK_NSECTORS
Number of sectors on each disk.   (Trivial disk only)
%DISK_SECTOR_SIZE
Sector size in bytes (must be a power of 2). (Trivial disk only)
%LAYOUT_CONTIGUOUS
Lay out the blocks of the file contiguously on the disk. 
%LAYOUT_RANDOM_SECTORS
Lay out the blocks of the file in random locations on the disk. 
That is, choose a random sector as the first sector of each block.  
%LAYOUT_RANDOM_TRACKS
Lay out the blocks of the file in random tracks on the disk. 
That is, for each track-sized group of blocks, choose a random track.
%PARAGON
If this is set, modeled network acts more like a Paragon, ie,
hops * (SWITCH_DELAY + WIRE_DELAY) + length * SWITCH_DELAY
%DISK_SORT
This only applies to IOP_GENERAL.
If set, disk requests are sorted by sector number before beginning.
%USE_QUEUE_REQUESTS
If set, then CPs always use QueueRequest to send requests to IOPs.
If not set, then CPs always use ThreadRequest to send requests to IOPs.
%CP_MEMGET_WRITES
If set, then CPs use MIOPwrite_memget, otherwise, MIOPwrite.
Doesn't affect CP_DIRECT.
%REAL_DATA
If set, then we move real data around, and (someday will) store data on disk.  
If not set, then we only pretend to move data (saves time and memory!).
%WATCH_USER
If this is set, then user events will be recorded.   If it is not set,
then NO user events will be recorded (saves space in events.sim).
%LU_MATRIX_SIZE
The size of each dimension of a matrix for LU decomposition. Must be <= sqrt(NUM_RECORDS).
Note that REAL_DATA and RECORD_SIZE==4 are required for LU decomposition.
%LU_SLAB_SIZE
The number of columns in a slab used by LU decomposition.  Must be
smaller than the number of cols, but may be as small as 1.
%FILTER_PERCENT
The percentage of chunks to filter out during a disk-directed
transfer. 0 percent filters out none; 100 percent filters out all. 
%TWO_PHASE
Use two-phase I/O.  Only meaningful for IOP_CACHE.  It reads the file
in BLOCK (or BLOCK-NONE) pattern, then redistributes. (The reverse for write.)
%MEMPUT_QUEUED
Use Memputq and Memgetq for DDIO fill/empty activity or for the two-phase
permutation, as appropriate.  Meaningless if IOP_CACHE and !TWO_PHASE.
%DISK_FCFS
Use FCFS disk scheduling in the disk driver.  If not true, then we use
a more sophisticated C-SCAN algorithm.  
%MAX_OUTSTANDING
Maximum number of outstanding I/O requests, per CP per disk.
iopfs-cache allocates MAX_OUTSTANDING+1 buffers per disk.
%DISK_RAND_ROT
If set, the disks are each given a random initial rotational
position.  If clear, all disks start at same initial rotational position.
