memgraph/tests/e2e/memory/workloads.yaml
Gareth Andrew Lloyd 8bc8e867e4
Pmr allocator unify (#1801)
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
2024-03-14 11:21:59 -07:00

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