FennelParameters
From LucidDB Wiki
This page documents parameters which control the behavior of Fennel. Some of these are generic, some are component-specific, and some are test-specific. Many also appear in higher-level systems built on Fennel such as FarragoSystemParameters and LucidDbSystemParameters.
| Applies To | Name | Domain | Default Value | Description |
|---|---|---|---|---|
| Common | resourceDir | filesystem path to directory | ${FENNEL_HOME}/common | Location from which localized resource string files will be loaded. |
| Common | jniHandleTraceFile | filesystem path to file | empty string | If non-empty, controls location where JNI handle tracing output is written |
| Cache | cachePagesMax | 32-bit integer (number of pages) | 1024 | Determines upper bound for number of pages cache can allocate. On startup, actual upper bound is set to the larger of this parameter and cachePagesInit. Subsequently, changes to cachePagesInit are limited by upper bound calculated at startup. |
| Cache | cachePagesInit | 32-bit integer (number of pages) | 1024 | Sets number of page memory buffers to allocate from the OS for Fennel's data cache (also used as a pool for volatile scratch memory allocated by ExecStreams). Increasing it after startup causes new free buffers to be allocated; decreasing it causes buffers to be released (flushing them first if they contain dirty data). |
| Cache | cachePageSize | 32-bit integer (number of bytes; must be a power of 2) | 4096 | Determines contiguous size of memory buffers allocated by cache. Also determines contiguous size of pages stored on disk; these are the elemental allocation units for all disk-based data structures such as indexes. |
| Cache | processorCacheBytes | 32-bit integer (number of bytes) | -1 | Controls the amount of last-level CPU cache (typically L2, sometimes L3) to be used by memory-conscious data structures for improved cache coherence. The default value of -1 requests an automatic setting; currently this is 2MB, but may be changed to hardware autodetect in the future. This parameter is not available before v0.9.2. |
| Cache | cacheIdleFlushInterval | 32-bit integer (number of milliseconds) | 100 | Controls rate at which dirty data is flushed from the cache via lazy writer thread. Set to 0 to disable the lazy writer. |
| Cache | prefetchPagesMax | 32-bit integer (number of pages) | 12 | Controls size of prefetch queue for access paths which use prefetch. |
| Cache | prefetchThrottleRate | 32-bit integer (number of pages) | 10 | In the event that prefetch has been throttled down due to rejected requests, controls number of successful prefetches which must occur before prefetch rate is increased again. |
| Cache, Resource Governor | cacheReservePercentage | integer between 1 and 99 inclusive | 5 | The percentage of the data cache that should be set aside for global resource usage. The remainder will be available to allocate to individual statements. |
| Cache, Resource Governor | expectedConcurrentStatements | 32-bit integer (number of statements) | 4 | The percentage of the data cache that should be set aside for global resource usage. The remainder will be available to allocate to individual statements. |
| Tests derived from CacheTestBase | victimPolicy | { twoq, lru, random } | twoq | Sets the cache victimization algorithm. |
| Tests derived from CacheTestBase | diskPages | 32-bit integer (number of pages) | 1000 | Size of file to create for tests which need persistence but which do not create a database |
| Cache when default twoq victim policy is being used | freshmenPageQueuePercentage | integer between 0 and 100 inclusive | 25 | Percentage of the total cache set aside for the freshmen queue |
| Cache when default twoq victim policy is being used | pageHistoryQueuePercentage | integer between 0 and 100 inclusive | 100 | Percentage of the total number of cache pages that dictates the number of pages in the history queue. |
| Device I/O | deviceSchedulerType | { threadPool, aioLinux, aioPolling, aioSignal } | system-dependent | Controls the scheduler used for disk I/O. threadPool means to fake asynchronous I/O via a thread pool, and use buffered file access. On Linux, aioLinux means to use libaio for asynchronous I/O, with O_DIRECT for unbuffered file access. The default is to to use libaio if available, otherwise to fallback to threadPool. On Windows, ioCompletionPort (the default) means to use asynchronous I/O via completion ports and unbuffered file access. aioSignal and aioPolling are for Unix variants such as Solaris which are currently not supported by Fennel. In all cases, if an unrecognized or unsupported value is set, the system silently reverts to default behavior to avoid causing startup failures. |
| Device I/O | deviceSchedulerThreadCounts | 32-bit integer (number of threads) | 1 | Suggested number of threads to dedicate to scheduling activities; the scheduler may adjust this number based on the setting for deviceSchedulerMaxRequests. |
| Device I/O | deviceSchedulerMaxRequests | 32-bit integer (number of I/O requests) | 1024 | The maximum number of simultaneous requests that this scheduler should be able to handle; additional requests may be queued (or rejected for prefetch). |
| Database | databaseDir | filesystem path to directory | must be set explicitly, except tests will set this to working directory automatically | Location where all data, temp, and log files will be created. |
| Database | forceTxns | { false, true } | false | Whether to force out all dirty pages at each commit. For logical transaction logging, this is not necessary, but some storage implementations such as LucidDB treat the database itself as a log structure. |
| Database (only when forceTxns=true) | disableSnapshots | { false, true } | false | Normally, forceTxns=true implies usage of snapshot page versioning; setting disableSnapshots=true reverts to using unversioned page updates. |
| Database | databaseInitSize | 32-bit integer (number of pages) | 1000 | Determines the number of pages desired when calculating the initial size of Fennel's db.dat file. |
| Database | databaseMaxSize | 32-bit integer (number of pages) | no limit | Determines maximum size to which db.dat file can grow. Further allocations will fail even if space remains in the file system. |
| Database | databaseIncrementSize | 32-bit integer (number of pages) | 1 | Determines number of pages by which to automatically extend the db.dat file when all existing pages have been allocated. |
| Database | tempInitSize | 32-bit integer (number of pages) | 1000 | Determines the number of pages desired when calculating the initial size of Fennel's temp.dat file. |
| Database | tempMaxSize | 32-bit integer (number of pages) | no limit | Determines maximum size to which temp.dat file can grow. Further allocations will fail even if space remains in the file system. |
| Database | tempIncrementSize | 32-bit integer (number of pages) | 1 | Determines number of pages by which to automatically extend the temp.dat file when all existing pages have been allocated. |
| Database | databaseShadowLogInitSize | 32-bit integer (number of pages) | 1000 | Determines the number of pages desired when calculating the initial size of Fennel's shadowlog.dat file. |
| Database | databaseShadowLogMaxSize | 32-bit integer (number of pages) | no limit | Determines maximum size to which shadowlog.dat file can grow. Further allocations will fail even if space remains in the file system. |
| Database | databaseShadowLogIncrementSize | 32-bit integer (number of pages) | 1 | Determines number of pages by which to automatically extend the shadowlog.dat file when all existing pages have been allocated. |
| Database | databaseTxnLogInitSize | 32-bit integer (number of pages) | 1000 | Determines the number of pages desired when calculating the initial size of Fennel's txnlog.dat file. |
| Database | databaseTxnLogMaxSize | 32-bit integer (number of pages) | no limit | Determines maximum size to which txnlog.dat file can grow. Further allocations will fail even if space remains in the file system. |
| Database | databaseTxnLogIncrementSize | 32-bit integer (number of pages) | 1 | Determines number of pages by which to automatically extend the txnlog.dat file when all existing pages have been allocated. |
| Database | groupCommitInterval | 32-bit integer (number of milliseconds) | 30 | Determines maximum latency for group commit. |
| ParallelExecStreamScheduler | degreeOfParallelism | 32-bit integer (number of concurrent tasks) | 4 | Configures the thread pool used for parallel execution. |
| Tests | testSuiteNameBoost | test suite name | set automatically based on test being run | Internal parameter; should not be set explicitly. |
| Tests | testTraceFileName | filesystem path to file | set automatically based on test being run to ${FENNEL_HOME}/trace/%testSuiteNameBoost%_trace.log | Controls location of test trace output. |
| Tests | testTraceLevel | integer in the domain { 300, 400, 500, 700, 800, 900, 1000, 10000 } from the TraceLevel enum | 800 (TRACE_CONFIG) | Controls verbosity of test trace output. |
| Tests | testStatsFileName | filesystem path to file | /tmp/fennel.stats | Controls location of stats monitoring file. |
| Tests | testTraceStdout | string (--Jvs 20:13, 25 November 2008 (EST): shouldn't this be boolean instead?) | empty string | If non-empty, trace output is also written to stdout. |
| Tests | testDictionaryFileName | filesystem path to file | dictWords | Location of dictionary words file used as data by some tests. |
| Tests derived from ThreadedTestBase | testDuration | 32-bit integer (number of seconds) | 10 | Duration for executing multi-threaded test. |
| Tests derived from ThreadedTestBase | defaultThreads | 32-bit integer (number of threads) | 1 | Default number of threads to execute for a given activity, if not overridden by a more specific parameter such as readSeqThreads. |
| Tests derived from PagingTestBase | randomOps | 32-bit integer | 5000 | Total number of requests to be executed by each random I/O thread. |
| Tests derived from PagingTestBase | resizeCache | 0 or 1 (--Jvs 20:13, 25 November 2008 (EST): shouldn't this be boolean?) | 1 | Whether to dynamically shrink and expand the cache during the test. |
| Tests derived from PagingTestBase | readSeqThreads, writeSeqThreads, readRandThreads, writeRandThreads, readNoWaitThreads, writeNoWaitThreads, writeSkipThreads, scratchThreads, prefetchThreads, prefetchBatchThreads, allocateThreads, deallocateThreads | 32-bit integer (number of threads) | setting for %defaultThreads% | This family of parameters controls the number of threads to execute for carrying out various kinds of concurrent I/O, as indicated by the parameter names. |
| BTreeTxnTest | insertsPerTxn | 32-bit integer (number of insert operations) | 5 | Controls the number of operations executed per insert transaction. |
| BTreeTxnTest | deletesPerTxn | 32-bit integer (number of delete operations) | 5 | Controls the number of operations executed per delete transaction. |
| BTreeTxnTest | keysPerScan | 32-bit integer (number of btree entries) | 5 | Controls the number of leaf btree entries iterated over by each scan transaction. |
| BTreeTxnTest | maxKey | 32-bit integer (key value) | 1000000 | Controls the maximum number randomly generated for a key value. |
| BTreeTxnTest | checkpointInterval | 32-bit integer (number of seconds) | 20 | Controls the interval in between checkpoint operations. |
| BTreeTxnTest | testRollback | 0 or 1 (--Jvs 20:13, 25 November 2008 (EST): shouldn't this be boolean?) | 1 | Whether to cause half of the transactions to end in rollback (instead of just committing all of them). |
| BTreeTxnTest | insertThreads | 32-bit integer (number of threads) | setting for %defaultThreads% | Controls the number of threads carrying out concurrent insert transactions. |
| BTreeTxnTest | deleteThreads | 32-bit integer (number of threads) | setting for %defaultThreads% | Controls the number of threads carrying out concurrent delete transactions. |
| BTreeTxnTest | scanThreads | 32-bit integer (number of threads) | setting for %defaultThreads% | Controls the number of threads carrying out concurrent scan transactions. |
| BTreeTxnTest | fuzzyChecpoint | 0 or 1 (--Jvs 20:13, 25 November 2008 (EST): shouldn't this be boolean?) | 1 | Whether to use fuzzy checkpoints instead of sharp checkpoints. |