8bc8e867e4
Query allocator and evaluation allocator were different. After analysis, was determined they should be the same, this will help future development reduce TypeValue copies during queries. Changes: - Common allocator, PoolResource backed by MonotonicResource - Optimized Pool, now O(1) alloc/dealloc as all chunks in Pool form a single free list - 2nd PoolResource, using bin sizing, not as perfect for memory usage but O(1) bin selection - Now have jemalloc's background thread to make sure decay and return to OS happens - Optimized ProperyValue to be faster at destruction/copy/move - Less temporary memory allocations - CSV reader now maintains a common line buffer it reuses on line reads - Writing out bolt values, now reuses a values buffer - Evaluating an int no longer makes temporary strings for errors it most likely never throws - ExpandVariable will reuse existing edge list in frame it one existed
229 lines
7.4 KiB
YAML
229 lines
7.4 KiB
YAML
bolt_port: &bolt_port "7687"
|
|
args: &args
|
|
- "--bolt-port"
|
|
- *bolt_port
|
|
- "--memory-limit=1024"
|
|
- "--storage-gc-cycle-sec=180"
|
|
- "--log-level=TRACE"
|
|
|
|
args_150_MiB_limit: &args_150_MiB_limit
|
|
- "--bolt-port"
|
|
- *bolt_port
|
|
- "--memory-limit=150"
|
|
- "--storage-gc-cycle-sec=180"
|
|
- "--log-level=TRACE"
|
|
|
|
in_memory_150_MiB_limit_cluster: &in_memory_150_MiB_limit_cluster
|
|
cluster:
|
|
main:
|
|
args: *args_150_MiB_limit
|
|
log_file: "memory-e2e.log"
|
|
setup_queries: []
|
|
validation_queries: []
|
|
|
|
in_memory_1024_MiB_limit_cluster: &in_memory_1024_MiB_limit_cluster
|
|
cluster:
|
|
main:
|
|
args: *args
|
|
log_file: "memory-e2e.log"
|
|
setup_queries: []
|
|
validation_queries: []
|
|
|
|
disk_cluster: &disk_cluster
|
|
cluster:
|
|
main:
|
|
args: *args
|
|
log_file: "memory-e2e.log"
|
|
setup_queries:
|
|
- "STORAGE MODE ON_DISK_TRANSACTIONAL"
|
|
validation_queries: []
|
|
|
|
args_query_limit: &args_query_limit
|
|
- "--bolt-port"
|
|
- *bolt_port
|
|
- "--storage-gc-cycle-sec=180"
|
|
- "--log-level=TRACE"
|
|
|
|
in_memory_query_limit_cluster: &in_memory_query_limit_cluster
|
|
cluster:
|
|
main:
|
|
args: *args_query_limit
|
|
log_file: "memory-e2e.log"
|
|
setup_queries: []
|
|
validation_queries: []
|
|
|
|
args_350_MiB_limit: &args_350_MiB_limit
|
|
- "--bolt-port"
|
|
- *bolt_port
|
|
- "--memory-limit=350"
|
|
- "--storage-gc-cycle-sec=180"
|
|
- "--log-level=INFO"
|
|
|
|
in_memory_350_MiB_limit_cluster: &in_memory_350_MiB_limit_cluster
|
|
cluster:
|
|
main:
|
|
args: *args_350_MiB_limit
|
|
log_file: "memory-e2e.log"
|
|
setup_queries: []
|
|
validation_queries: []
|
|
|
|
|
|
disk_350_MiB_limit_cluster: &disk_350_MiB_limit_cluster
|
|
cluster:
|
|
main:
|
|
args: *args_350_MiB_limit
|
|
log_file: "memory-e2e.log"
|
|
setup_queries: []
|
|
validation_queries: []
|
|
|
|
args_300_MiB_limit: &args_300_MiB_limit
|
|
- "--bolt-port"
|
|
- *bolt_port
|
|
- "--memory-limit=300"
|
|
- "--storage-gc-cycle-sec=180"
|
|
- "--log-level=INFO"
|
|
|
|
in_memory_300_MiB_limit_cluster: &in_memory_300_MiB_limit_cluster
|
|
cluster:
|
|
main:
|
|
args: *args_300_MiB_limit
|
|
log_file: "memory-e2e.log"
|
|
setup_queries: []
|
|
validation_queries: []
|
|
|
|
|
|
disk_300_MiB_limit_cluster: &disk_300_MiB_limit_cluster
|
|
cluster:
|
|
main:
|
|
args: *args_300_MiB_limit
|
|
log_file: "memory-e2e.log"
|
|
setup_queries: []
|
|
validation_queries: []
|
|
|
|
|
|
args_global_limit_1024_MiB: &args_global_limit_1024_MiB
|
|
- "--bolt-port"
|
|
- *bolt_port
|
|
- "--storage-gc-cycle-sec=180"
|
|
- "--log-level=INFO"
|
|
|
|
in_memory_limited_global_limit_cluster: &in_memory_limited_global_limit_cluster
|
|
cluster:
|
|
main:
|
|
args: *args_global_limit_1024_MiB
|
|
log_file: "memory-e2e.log"
|
|
setup_queries: []
|
|
validation_queries: []
|
|
|
|
workloads:
|
|
- name: "Memory control"
|
|
binary: "tests/e2e/memory/memgraph__e2e__memory__control"
|
|
args: ["--bolt-port", *bolt_port, "--timeout", "180"]
|
|
<<: *in_memory_150_MiB_limit_cluster
|
|
|
|
- name: "Memory control multi database"
|
|
binary: "tests/e2e/memory/memgraph__e2e__memory__control"
|
|
args: ["--bolt-port", *bolt_port, "--timeout", "180", "--multi-db", "true"]
|
|
<<: *in_memory_150_MiB_limit_cluster
|
|
|
|
- name: "Memory limit for modules upon loading"
|
|
binary: "tests/e2e/memory/memgraph__e2e__memory__limit_global_alloc"
|
|
args: ["--bolt-port", *bolt_port, "--timeout", "180"]
|
|
proc: "tests/e2e/memory/procedures/"
|
|
<<: *in_memory_1024_MiB_limit_cluster
|
|
|
|
- name: "Memory limit for modules upon loading multi database"
|
|
binary: "tests/e2e/memory/memgraph__e2e__memory__limit_global_alloc"
|
|
args: ["--bolt-port", *bolt_port, "--timeout", "180", "--multi-db", "true"]
|
|
proc: "tests/e2e/memory/procedures/"
|
|
<<: *in_memory_1024_MiB_limit_cluster
|
|
|
|
- name: "Memory limit for modules inside a procedure"
|
|
binary: "tests/e2e/memory/memgraph__e2e__memory__limit_global_alloc_proc"
|
|
args: ["--bolt-port", *bolt_port, "--timeout", "180"]
|
|
proc: "tests/e2e/memory/procedures/"
|
|
<<: *in_memory_1024_MiB_limit_cluster
|
|
|
|
- name: "Memory limit for modules inside a procedure multi database"
|
|
binary: "tests/e2e/memory/memgraph__e2e__memory__limit_global_alloc_proc"
|
|
args: ["--bolt-port", *bolt_port, "--timeout", "180", "--multi-db", "true"]
|
|
proc: "tests/e2e/memory/procedures/"
|
|
<<: *in_memory_1024_MiB_limit_cluster
|
|
|
|
- name: "Memory limit for modules upon loading for on-disk storage"
|
|
binary: "tests/e2e/memory/memgraph__e2e__memory__limit_global_alloc"
|
|
args: ["--bolt-port", *bolt_port, "--timeout", "180"]
|
|
proc: "tests/e2e/memory/procedures/"
|
|
<<: *disk_cluster
|
|
|
|
- name: "Memory limit for modules inside a procedure for on-disk storage"
|
|
binary: "tests/e2e/memory/memgraph__e2e__memory__limit_global_alloc_proc"
|
|
args: ["--bolt-port", *bolt_port, "--timeout", "180"]
|
|
proc: "tests/e2e/memory/procedures/"
|
|
<<: *disk_cluster
|
|
|
|
- name: "Memory control query limit proc"
|
|
binary: "tests/e2e/memory/memgraph__e2e__memory__limit_query_alloc_proc"
|
|
proc: "tests/e2e/memory/procedures/"
|
|
args: ["--bolt-port", *bolt_port]
|
|
<<: *in_memory_query_limit_cluster
|
|
|
|
- name: "Memory control query limit proc multi thread"
|
|
binary: "tests/e2e/memory/memgraph__e2e__memory__limit_query_alloc_proc_multi_thread"
|
|
args: ["--bolt-port", *bolt_port, "--timeout", "180"]
|
|
proc: "tests/e2e/memory/procedures/"
|
|
<<: *in_memory_query_limit_cluster
|
|
|
|
- name: "Memory control query limit create multi thread"
|
|
binary: "tests/e2e/memory/memgraph__e2e__memory__limit_query_alloc_create_multi_thread"
|
|
args: ["--bolt-port", *bolt_port]
|
|
<<: *in_memory_query_limit_cluster
|
|
|
|
- name: "Memory control for detach delete"
|
|
binary: "tests/e2e/memory/memgraph__e2e__memory__limit_delete"
|
|
args: ["--bolt-port", *bolt_port]
|
|
<<: *in_memory_300_MiB_limit_cluster
|
|
|
|
- name: "Memory control for detach delete on disk storage"
|
|
binary: "tests/e2e/memory/memgraph__e2e__memory__limit_delete"
|
|
args: ["--bolt-port", *bolt_port]
|
|
<<: *disk_300_MiB_limit_cluster
|
|
|
|
- name: "Memory control for accumulation"
|
|
binary: "tests/e2e/memory/memgraph__e2e__memory__limit_accumulation"
|
|
args: ["--bolt-port", *bolt_port]
|
|
<<: *in_memory_350_MiB_limit_cluster
|
|
|
|
- name: "Memory control for accumulation on disk storage"
|
|
binary: "tests/e2e/memory/memgraph__e2e__memory__limit_accumulation"
|
|
args: ["--bolt-port", *bolt_port]
|
|
<<: *disk_350_MiB_limit_cluster
|
|
|
|
- name: "Memory control for edge create"
|
|
binary: "tests/e2e/memory/memgraph__e2e__memory__limit_edge_create"
|
|
args: ["--bolt-port", *bolt_port]
|
|
<<: *in_memory_350_MiB_limit_cluster
|
|
|
|
- name: "Memory control for edge create on disk storage"
|
|
binary: "tests/e2e/memory/memgraph__e2e__memory__limit_edge_create"
|
|
args: ["--bolt-port", *bolt_port]
|
|
<<: *disk_350_MiB_limit_cluster
|
|
|
|
- name: "Memory control for memory limit global thread alloc"
|
|
binary: "tests/e2e/memory/memgraph__e2e__memory_limit_global_thread_alloc_proc"
|
|
proc: "tests/e2e/memory/procedures/"
|
|
args: ["--bolt-port", *bolt_port]
|
|
<<: *in_memory_1024_MiB_limit_cluster
|
|
|
|
- name: "Procedure memory control for single procedure"
|
|
binary: "tests/e2e/memory/memgraph__e2e__procedure_memory_limit"
|
|
proc: "tests/e2e/memory/procedures/"
|
|
args: ["--bolt-port", *bolt_port]
|
|
<<: *in_memory_limited_global_limit_cluster
|
|
|
|
- name: "Procedure memory control for multiple procedures"
|
|
binary: "tests/e2e/memory/memgraph__e2e__procedure_memory_limit_multi_proc"
|
|
proc: "tests/e2e/memory/procedures/"
|
|
args: ["--bolt-port", *bolt_port]
|
|
<<: *in_memory_limited_global_limit_cluster
|