Skip to content
Snippets Groups Projects
meson_options.txt 8.22 KiB
option(
  'use_bundled_deps',
  type: 'combo',
  choices: ['automatic', 'always', 'never'],
  description: 'Control when the bundled dependencies are used',
  value: 'automatic',
)
option(
  'build_only_emper_dep',
  type: 'boolean',
  value: false,
  description: 'If enabled, build only emper_dep. Otherwise, the default, build everything.'
)
option(
  'userspace_rcu',
  type: 'boolean',
  value: false,
  description: 'Allow EMPER fibers to use userspace RCU',
)
option(
  'log_level',
  type: 'combo',
  choices: ['automatic', 'Error', 'Warning', 'Info', 'Debug', 'FineDebug', 'FinerDebug', 'FinestDebug', 'ALL'],
  value: 'automatic',
)
option(
  'blocked_context_set',
  type: 'boolean',
  value: false,
  description: 'Store all currently blocked contexts for debugging in the set Blockable<LogLevel>::blocked'
)
option(
  'log_timestamp',
  type: 'combo',
  choices: ['utc', 'local', 'none'],
  value: 'local',
  description: 'Add a %H%M.%ns timestamp to the EMPER log messages',
)
option(
  'worker_sleep',
  type: 'boolean',
  value: true,
  description: 'Enable sleeping worker support',
)
option(
  'worker_wakeup_strategy',
  type: 'combo',
  description: 'The strategy used to wakeup sleeping workers (only effective if worker_sleep is enabled)',
   choices: ['one', 'all'],
   # Disable throttle until it works with notifySpecific
   # TODO: Fix throttle and notifySpecific
   # choices: ['one', 'throttle', 'all'],
  value: 'one',
)
option(
  'worker_sleep_strategy',
  type: 'combo',
  description: 'The used algorithm to suspend and wakeup workers',
  choices: ['semaphore', 'pipe'],
  value: 'semaphore',
)
option(
  'wakeup_semaphore_implementation',
  type: 'combo',
  choices: [
	'posix',
	'locked',
	'futex',
	'futex2',
  ],
  value: 'posix',
  description: 'Semaphore implementation to suspend/wakeup workers',
)
option(
  'worker_ignore_wakeup_hint',
  type: 'boolean',
  description: 'Should possibly passed hints where to find new work be ignored',
  value: false,
)
option(
  'ws_queue_default',
  type: 'combo',
  choices: [
    'locked',
    'cl',
    'cl2',
    'cl3',
    'cl4',
  ],
  value: 'cl',
  description: 'The default work-stealing queue to use in the runtime-system',
)
option(
  'ws_queue_scheduler',
  type: 'combo',
  choices: [
    'default',
    'locked',
    'cl',
    'cl2',
    'cl3',
    'cl4',
  ],
  value: 'default',
  description: 'The work-stealing queue to use for scheduling',
)
option(
  'locked_mpsc_queue',
  type: 'boolean',
  value: false,
  description: 'Use the locked variant for the MPSC queue'
)
option(
  'locked_unbounded_queue_implementation',
  type: 'combo',
  choices: [
	'mutex',
	'rwlock',
	'shared_mutex',
	'boost_shared_mutex',
  ],
  value: 'mutex',
  description: 'LockedUnboundedQueue implementation',
)
option(
  'stats',
  type: 'boolean',
  value: false,
  description: 'Collect stats and print them at the end of the execution'
)
option(
  'stats_stack_usage',
  type: 'combo',
  choices: [
    'disabled',
    'auto',
    'efficient',
    'accurate',
  ],
  value: 'auto',
  description: 'Collect stack-usage stats via stack watermarking',
)
option(
  'stats_worker_sleep',
  type: 'combo',
  choices: [
    'false',
    'auto',
    'true',
  ],
  value: 'auto',
  description: 'Collect stats about worker sleep',
)
option(
  'stats_blocked_context',
  type: 'combo',
  choices: [
    'false',
    'auto',
    'true',
  ],
  value: 'auto',
  description: 'Collect stats about blocked contexts',
)
option(
  'stats_blocked_context_count',
  type: 'combo',
  choices: [
    'false',
    'auto',
    'true',
  ],
  value: 'auto',
  description: 'Collect stats about number of blocked contexts',
)
option(
  'stats_all',
  type: 'boolean',
  value: false,
  description: 'Enable the collection of all EMPER runtime-system stats',
)
option(
  'default_scheduling_strategy',
  type: 'combo',
  choices: [
	'work_stealing',
	'locality_aware_work_stealing',
  ],
  value: 'work_stealing',
)
option(
  'waitfree_work_stealing',
  type: 'boolean',
  value: false,
  description: 'Do not retry stealing when the popTop race was lost'
)
option(
  'work_stealing_victim_count',
  type: 'integer',
  value: 0,
  description: 'Absolute count of victims tried in the work-stealing'
)
option(
  'work_stealing_victim_denominator',
  type: 'integer',
  value: 0,
  description: 'Fraction of all workers to steal work from'
)
option(
  'overflow_queue',
  type: 'boolean',
  value: true,
  description: 'Use an overflow queue in case scheduling queues become full',
)
option(
  'check_anywhere_queue_while_stealing',
  type: 'combo',
  choices: ['auto', 'true', 'false'],
  value: 'auto',
  description: 'Check the anywhere queue after some failed stealed attempts',
)
option(
  'io',
  type: 'boolean',
  value: true,
  description: 'Add support for asynchronous IO using io_uring'
)
option(
  'io_single_uring',
  type: 'boolean',
  value: false,
  description: 'Use only a single io_uring'
)
option(
  'io_try_syscall',
  type: 'boolean',
  value: false,
  description: 'Try non blocking syscalls before submitting the request to io_uring'
)
option(
  'io_worker_uring_entries',
  type: 'integer',
  value: 16,
  description: 'Number of entries in each worker io_uring'
)
option(
  'io_unbounded_iow_max',
  type: 'integer',
  value: 0,
  description: 'Set the maximum number of unbounded io worker threads created per io_uring'
)
option(
  'io_uring_sq_poller',
  type: 'combo',
  value: 'off',
  choices: ['each', 'numa', 'one', 'off'],
  description: 'Use one or multiple kernel threads to poll the SQs'
)
option(
  'io_completer_behavior',
  type: 'combo',
  description: 'The behaviour of the IO completer thread',
  choices: ['schedule', 'maybe_wakeup', 'none'],
  value: 'schedule',
)
option(
  'set_affinity_on_block',
  type: 'boolean',
  value: false,
  description: 'Set the affinity when blocking',
)
option(
  'io_completer_sched_param',
  type: 'combo',
  description: 'The scheduling parmaters used for the completer thread',
  choices: ['unchanged', 'normal', 'nice_10', 'nice_19', 'idle'],
  value: 'unchanged',
)
option(
  'io_stealing',
  type: 'boolean',
  description: 'Work-Stealing workers will also try to steal IO from other workers',
  value: false,
)
option(
  'io_waitfree_stealing',
  type: 'boolean',
  description: 'Work-Stealing workers will also try to steal waitfree IO from other workers',
  value: false,
)
option(
  'io_lockless_cq',
  type: 'boolean',
  description: 'Synchronize the concurrent access to CQs with a lockless algorithm',
  value: false,
)
option(
  'io_lockless_memory_order',
  type: 'combo',
  choices: ['weak', 'strong'],
  description: 'Memory ordering used for the lockless CQ algorithm',
  value: 'weak',
)
option(
  'continuation_stealing_mode',
  type: 'combo',
  choices: ['disabled', 'locked', 'waitfree'],
  description: 'Use the locked variant of continuation-stealing (instead of the wait-free one)',
  value: 'waitfree',
)
option(
  'continuation_stealing_madvise_stack',
  type: 'combo',
  choices: ['no', 'dontneed', 'free'],
  description: 'Madvise kind to unmap unused stack pages on continuation stealing',
  value: 'no',
)
option(
  'context_manager_with_memory_manager',
  type: 'boolean',
  description: 'Use the memory manager in context manager for better context caching. This may increases the memory footprint',
  value: true
)
option(
  'memory_manager_victim_percentage',
  type: 'integer',
  description: 'Percentage of victims to attempt to steal memory from before falling back to malloc\'ing it',
  value: 10,
  min: 0,
  max: 100,
)
option(
  'assume_page_size',
  type: 'integer',
  description: 'Assume the given page size in bytes',
  value: 4096,
  min: 1,
)
option(
  'min_context_stack_size',
  type: 'integer',
  description: 'Set the size in bytes of stacks used by an execution context (will potentially be rounded up to the next page size)',
  value: 65536,
  min: 1,
)
option(
  'context_alignment',
  type: 'combo',
  description: 'Use the select mechanism to determine the alignment of contexts',
  choices: ['none', 'cache_line_size', 'page_size'],
  value: 'cache_line_size',
)
option(
  'assume_cache_line_size',
  type: 'integer',
  description: 'Assume the given cache-line size in bytes',
  value: 64,
  min: 1,
)
option(
  'stack_guard_page',
  type: 'boolean',
  description: 'Add a guard page to the bottom of the stack',
  value: false,
)