11.1.1 Configuration of the Graph Server (PGX) Run-Time Parameters

You can configure the following graph server (PGX) run-time fields.

Table 11-2 Graph Server (PGX) Run-Time Parameters

Parameter Type Description Default
bfs_iterate_que_task_size integer Task size for BFS iterate QUE phase. 128
bfs_threshold_parent_read_based number Threshold of BFS traversal level items above which to switch to parent-read-based visiting strategy. 0.05
bfs_threshold_read_based integer Threshold of BFS traversal level items above which to switch to read-based visiting strategy. 1024
bfs_threshold_single_threaded integer Number until which BFS traversal level items vertices are visited single-threaded. 128
character_set string Standard charset to use throughout PGX, UTF-8 will be used as default. Note: Some formats may not be compatible. utf-8
cni_diff_factor_default integer Default diff factor value used in the common neighbor iterator implementations. 8
cni_small_default integer Default value used in the common neighbor iterator implementations, to indicate below which threshold a subarray is considered small. 128
cni_stop_recursion_default integer Default value used in the common neighbor iterator implementations, to indicate the minimum size where the binary search approach is applied. 96
dfs_threshold_large integer Value that determines at which number of visited vertices, the DFS implementation will switch to data-structures that are more optimized for larger numbers of vertices. 4096
enterprise_scheduler_flags object [relevant for enterprise_scheduler] Enterprise scheduler specific settings. null
explicit_spin_locks boolean true means spin explicitly in a loop until lock becomes available. false means using JDK locks which rely on the JVM to decide whether to context switch or spin. Our experiments showed that setting this value to true results in better performance. true
graph_validation_level enum[low, high] Level of validation performed on newly loaded or created graphs. low
max_distinct_strings_per_pool integer [only relevant if string_pooling_strategy is indexed] Amount of distinct strings per property after which to stop pooling. If the limit is reached an exception is thrown. 65536
max_off_heap_size integer Maximum amount of off-heap memory PGX is allowed to allocate in megabytes, before an OutOfMemoryError will be thrown.

Note:

This limit is not guaranteed to never be exceeded because of rounding and synchronization trade-offs. It only serves as threshold when PGX starts to reject new memory allocation requests.
<available-physical-memory>
memory_allocator enum[basic_allocator, enterprise_allocator] Denotes which memory allocator to use. basic_allocator
ms_bfs_frontier_type_strategy enum[auto_grow, short, int] The type strategy to use for MS-BFS frontiers. auto_grow
num_spin_locks integer Number of spin locks each generated app will create at instantiation. Trade-off: small number implies less memory consumption. Big number implies faster execution (if algorithm uses spin locks). 1024
pattern_matching_supernode_cache_threshold integer Minimum number of a node's neighbor to be a supernode. This is for pattern matching engine. 1000
pooling_factor number [only relevant if string_pooling_strategy is on_heap] This value prevents the string pool to grow as big as the property size which could render the pooling ineffective. 0.25
random_generator_strategy enum[non_deterministic, deterministic] Method of generating random numbers in PGX. non_deterministic
random_seed long [relevant for deterministic random number generator only] Seed for the deterministic random number generator used in PGX. The default is -24466691093057031. -24466691093057031
revisit_threshold integer Maximum number of matched results from a node to be cached. 4096
scheduler enum[basic_scheduler, enterprise_scheduler, low_latency_scheduler] Denotes which scheduler to use.
  • basic_scheduler: use scheduler with basic features.
  • enterprise_scheduler: use scheduler with advanced, enterprise features for running multiple tasks concurrently and increased performance.
  • low_latency_scheduler: use scheduler that privileges latency of tasks over throughput or fairness across multiple sessions. The low_latency_scheduler is only available in embedded mode
enterprise_scheduler
small_task_length integer Task length, if total amount of work is small than default task length (only relevant for task-stealing strategies). 128
string_pooling_strategy enum[indexed, on_heap, none] Denotes which string pooling strategy to use. on_heap
task_length integer Default task length (only relevant for task-stealing strategies). F/J pool documentation says this value should be between 100 and 10000. Trade-off: small number implies more fine-grained tasks are generated, higher stealing throughput. High number implies less memory consumption and GC activity. 4096
use_index_for_reachability_queries enum[auto, off] Create index for reachability queries. auto
use_memory_mapper_for_reading_pgb boolean If true, use memory mapped files for reading graphs in PGB format if possible; false always use s stream based implementation. true
use_memory_mapper_for_storing_pgb boolean If true, use memory mapped files for storing in PGB format if possible; if false always use a stream based implementation. true