Skip to content

Initial push of crypto directory#3

Merged
kumargu merged 21 commits intoopensearch-project:mainfrom
asonje:main
Jun 25, 2025
Merged

Initial push of crypto directory#3
kumargu merged 21 commits intoopensearch-project:mainfrom
asonje:main

Conversation

@asonje
Copy link
Copy Markdown
Contributor

@asonje asonje commented Mar 17, 2025

Description

This pull request adds index level encryption features to OpenSearch based on the issue #3469. Each OpenSearch index is individually encrypted based on user provided encryption keys. A new cryptofs store type index.store.type is introduced which instantiates a CryptoDirectory that encrypts and decrypts files as they are written and read respectively

Related Issues

Resolves opensearch-project/OpenSearch#3469
Related to opensearch-project/OpenSearch#12902

Check List

  • New functionality includes testing.
  • New functionality has been documented.
  • API changes companion pull request created.
  • Commits are signed per the DCO using --signoff.
  • [] Public documentation issue/PR created.

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.

Signed-off-by: Olasoji Denloye <olasoji.denloye@intel.com>
@kumargu
Copy link
Copy Markdown
Collaborator

kumargu commented Mar 17, 2025

thanks @asonje . will start taking a look.

shubhmkr-amazon and others added 4 commits May 10, 2025 18:03
…ion.

Signed-off-by: Shubham <shubhmkr@amazon.com>
Signed-off-by: Gulshan <kumargu@amazon.com>
Signed-off-by: Gulshan <kumargu@amazon.com>
Signed-off-by: Gulshan <kumargu@amazon.com>
Signed-off-by: Gulshan <kumargu@amazon.com>
Gulshan added 4 commits May 12, 2025 14:21
Signed-off-by: Gulshan <kumargu@amazon.com>
Signed-off-by: Gulshan <kumargu@amazon.com>
Signed-off-by: Gulshan <kumargu@amazon.com>
Signed-off-by: Gulshan <kumargu@amazon.com>
@kumargu kumargu force-pushed the main branch 3 times, most recently from 6e76c92 to 4b98c6c Compare May 14, 2025 19:07
Signed-off-by: Gulshan <kumargu@amazon.com>
Gulshan added 3 commits May 16, 2025 10:25
Signed-off-by: Gulshan <kumargu@amazon.com>
Signed-off-by: Gulshan <kumargu@amazon.com>
Signed-off-by: Gulshan <kumargu@amazon.com>
Signed-off-by: Gulshan <kumargu@amazon.com>
@kumargu kumargu force-pushed the main branch 2 times, most recently from 7833802 to a31c9b5 Compare May 17, 2025 16:23
@kumargu
Copy link
Copy Markdown
Collaborator

kumargu commented Jun 12, 2025

My observations were similar while testing via a opensearch-bechmark. so we are on same page. thanks!

@kumargu
Copy link
Copy Markdown
Collaborator

kumargu commented Jun 12, 2025

fyi: there is memory leak currently in the panama_v2 branch. I am trying to fix it up. Its is probably because I'm somewhere not closing the arena properly. Hopefully I'll be able to fix it today.

@salyh
Copy link
Copy Markdown
Contributor

salyh commented Jun 12, 2025

When the plugin needs to load a OpenSSL library (.so/.dylib) is it the plan for on-premise OpenSearch to:
a) distribute OpenSSL alongside with the plugin with several prebuild .so/.dylib libs for each platform/architecture or
b) have the prerequisite that OpenSSL is preinstalled on the server or
c) like b) but fallback to JCE if no OpenSSL library is found

Advantages/Disadvantages:
a) Easy for the user/but we need to build OpenSSL, test it for various platforms and provide new releases whenever OpenSSL vulnerabilities are found
b) Not that easy for the user, bad first customer experience/we dont need to build or maintain it
c) like b) with better first customer experience but lower performance if OpenSSL is not used

Maybe we align its behavoiur with other native plugins like knn, ml etc

Wdyt?

@salyh
Copy link
Copy Markdown
Contributor

salyh commented Jun 12, 2025

fyi: there is memory leak currently in the panama_v2 branch. I am trying to fix it up. Its is probably because I'm somewhere not closing the arena properly. Hopefully I'll be able to fix it today.

And a typo i think: EgarDecryptedCryptoMMapDirectory -> EagerDecryptedCryptoMMapDirectory

Gulshan Kumar added 2 commits June 13, 2025 15:05
Signed-off-by: Gulshan <kumargu@amazon.com>

So far the best performing batch decryption

Signed-off-by: Gulshan <kumargu@amazon.com>

Use on-fly decryption for small file extensions

Signed-off-by: Gulshan <kumargu@amazon.com>

Small and Large file routing

Signed-off-by: Gulshan <kumargu@amazon.com>

Lazy decryption

Signed-off-by: Gulshan <kumargu@amazon.com>

Seems to work well

Signed-off-by: Gulshan <kumargu@amazon.com>

works in 814 seconds

Signed-off-by: EC2 Default User <ec2-user@ip-172-31-0-33.ec2.internal>

tim files to lazy SUCCESS (took 965 seconds)

Signed-off-by: EC2 Default User <ec2-user@ip-172-31-0-33.ec2.internal>

Per file based routing

Signed-off-by: EC2 Default User <ec2-user@ip-172-31-0-33.ec2.internal>

Best performer so far median: 315451 finishes in 910

Signed-off-by: EC2 Default User <ec2-user@ip-172-31-0-33.ec2.internal>

Excellent performer

Signed-off-by: EC2 Default User <ec2-user@ip-172-31-0-33.ec2.internal>

Finishes a bit faster than batch size of 2L-4L

Signed-off-by: EC2 Default User <ec2-user@ip-172-31-0-33.ec2.internal>

QOL

Signed-off-by: Gulshan <kumargu@amazon.com>

Route CFS to lazy

Signed-off-by: EC2 Default User <ec2-user@ip-172-31-0-33.ec2.internal>

More Qol

Signed-off-by: Gulshan <kumargu@amazon.com>
Signed-off-by: Gulshan <kumargu@amazon.com>
Signed-off-by: Gulshan <kumargu@amazon.com>
@kumargu
Copy link
Copy Markdown
Collaborator

kumargu commented Jun 15, 2025

(benchmarking results on https_logs)

Baseline i.e no crytpo ------------------------------------------------------
Metric Task Value Unit
Min Throughput index-append 344286 docs/s
Mean Throughput index-append 379567 docs/s
Median Throughput index-append 370955 docs/s
Max Throughput index-append 449729 docs/s
50th percentile latency index-append 60.7575 ms
90th percentile latency index-append 287.993 ms
99th percentile latency index-append 551.152 ms
99.9th percentile latency index-append 851.335 ms
99.99th percentile latency index-append 1143.24 ms
100th percentile latency index-append 1150.97 ms
50th percentile service time index-append 60.7575 ms
90th percentile service time index-append 287.993 ms
99th percentile service time index-append 551.152 ms
99.9th percentile service time index-append 851.335 ms
99.99th percentile service time index-append 1143.24 ms
100th percentile service time index-append 1150.97 ms
error rate index-append 0 %
Min Throughput wait-until-merges-finish 0.01 ops/s
Mean Throughput wait-until-merges-finish 0.01 ops/s
Median Throughput wait-until-merges-finish 0.01 ops/s
Max Throughput wait-until-merges-finish 0.01 ops/s
100th percentile latency wait-until-merges-finish 90031.4 ms
100th percentile service time wait-until-merges-finish 90031.4 ms
error rate wait-until-merges-finish 0 %
Min Throughput default 8 ops/s
Mean Throughput default 8 ops/s
Median Throughput default 8 ops/s
Max Throughput default 8 ops/s
50th percentile latency default 4.521 ms
90th percentile latency default 5.07761 ms
99th percentile latency default 6.28639 ms
100th percentile latency default 6.32434 ms
50th percentile service time default 3.29821 ms
90th percentile service time default 3.63445 ms
99th percentile service time default 4.21656 ms
100th percentile service time default 5.74035 ms
error rate default 0 %
Min Throughput term 49.98 ops/s
Mean Throughput term 49.98 ops/s
Median Throughput term 49.98 ops/s
Max Throughput term 49.98 ops/s
50th percentile latency term 5.51432 ms
90th percentile latency term 5.8467 ms
99th percentile latency term 7.31891 ms
100th percentile latency term 13.443 ms
50th percentile service time term 4.25282 ms
90th percentile service time term 4.59247 ms
99th percentile service time term 6.26546 ms
100th percentile service time term 12.057 ms
error rate term 0 %
Min Throughput range 1 ops/s
Mean Throughput range 1.01 ops/s
Median Throughput range 1.01 ops/s
Max Throughput range 1.01 ops/s
50th percentile latency range 9.63484 ms
90th percentile latency range 10.2165 ms
99th percentile latency range 10.4521 ms
100th percentile latency range 11.0487 ms
50th percentile service time range 7.69374 ms
90th percentile service time range 8.0757 ms
99th percentile service time range 8.58394 ms
100th percentile service time range 8.5971 ms
error rate range 0 %
Min Throughput status-200s-in-range 32.91 ops/s
Mean Throughput status-200s-in-range 32.91 ops/s
Median Throughput status-200s-in-range 32.91 ops/s
Max Throughput status-200s-in-range 32.92 ops/s
50th percentile latency status-200s-in-range 5.40681 ms
90th percentile latency status-200s-in-range 6.788 ms
99th percentile latency status-200s-in-range 7.33944 ms
100th percentile latency status-200s-in-range 7.53159 ms
50th percentile service time status-200s-in-range 4.52331 ms
90th percentile service time status-200s-in-range 4.90032 ms
99th percentile service time status-200s-in-range 5.00323 ms
100th percentile service time status-200s-in-range 5.01727 ms
error rate status-200s-in-range 0 %
Min Throughput status-400s-in-range 50.03 ops/s
Mean Throughput status-400s-in-range 50.03 ops/s
Median Throughput status-400s-in-range 50.03 ops/s
Max Throughput status-400s-in-range 50.03 ops/s
50th percentile latency status-400s-in-range 4.16522 ms
90th percentile latency status-400s-in-range 4.89637 ms
99th percentile latency status-400s-in-range 6.39931 ms
100th percentile latency status-400s-in-range 9.95114 ms
50th percentile service time status-400s-in-range 3.2577 ms
90th percentile service time status-400s-in-range 3.63508 ms
99th percentile service time status-400s-in-range 4.20562 ms
100th percentile service time status-400s-in-range 9.31736 ms
error rate status-400s-in-range 0 %
Min Throughput hourly_agg 0.2 ops/s
Mean Throughput hourly_agg 0.2 ops/s
Median Throughput hourly_agg 0.2 ops/s
Max Throughput hourly_agg 0.2 ops/s
50th percentile latency hourly_agg 25.7436 ms
90th percentile latency hourly_agg 27.0002 ms
99th percentile latency hourly_agg 28.4661 ms
100th percentile latency hourly_agg 31.3223 ms
50th percentile service time hourly_agg 19.9046 ms
90th percentile service time hourly_agg 20.4668 ms
99th percentile service time hourly_agg 21.5656 ms
100th percentile service time hourly_agg 26.9738 ms
error rate hourly_agg 0 %
Min Throughput multi_term_agg 0.2 ops/s
Mean Throughput multi_term_agg 0.2 ops/s
Median Throughput multi_term_agg 0.2 ops/s
Max Throughput multi_term_agg 0.2 ops/s
50th percentile latency multi_term_agg 998.488 ms
90th percentile latency multi_term_agg 1035.32 ms
99th percentile latency multi_term_agg 1094.24 ms
100th percentile latency multi_term_agg 1112.23 ms
50th percentile service time multi_term_agg 994.581 ms
90th percentile service time multi_term_agg 1033.39 ms
99th percentile service time multi_term_agg 1090.41 ms
100th percentile service time multi_term_agg 1106.19 ms
error rate multi_term_agg 0 %
Min Throughput scroll 25.04 pages/s
Mean Throughput scroll 25.07 pages/s
Median Throughput scroll 25.06 pages/s
Max Throughput scroll 25.12 pages/s
50th percentile latency scroll 180.139 ms
90th percentile latency scroll 186.883 ms
99th percentile latency scroll 205.67 ms
100th percentile latency scroll 207.072 ms
50th percentile service time scroll 177.246 ms
90th percentile service time scroll 184.025 ms
99th percentile service time scroll 202.881 ms
100th percentile service time scroll 204.996 ms
error rate scroll 0 %
Min Throughput desc_sort_size 0.5 ops/s
Mean Throughput desc_sort_size 0.5 ops/s
Median Throughput desc_sort_size 0.5 ops/s
Max Throughput desc_sort_size 0.5 ops/s
50th percentile latency desc_sort_size 18.2604 ms
90th percentile latency desc_sort_size 19.1119 ms
99th percentile latency desc_sort_size 22.449 ms
100th percentile latency desc_sort_size 26.0087 ms
50th percentile service time desc_sort_size 15.1626 ms
90th percentile service time desc_sort_size 15.9538 ms
99th percentile service time desc_sort_size 19.6126 ms
100th percentile service time desc_sort_size 23.0936 ms
error rate desc_sort_size 0 %
Min Throughput asc_sort_size 0.5 ops/s
Mean Throughput asc_sort_size 0.5 ops/s
Median Throughput asc_sort_size 0.5 ops/s
Max Throughput asc_sort_size 0.5 ops/s
50th percentile latency asc_sort_size 7.99252 ms
90th percentile latency asc_sort_size 8.61161 ms
99th percentile latency asc_sort_size 9.21353 ms
100th percentile latency asc_sort_size 14.1657 ms
50th percentile service time asc_sort_size 5.16554 ms
90th percentile service time asc_sort_size 5.51464 ms
99th percentile service time asc_sort_size 6.77195 ms
100th percentile service time asc_sort_size 11.59 ms
error rate asc_sort_size 0 %
Min Throughput desc_sort_timestamp 0.5 ops/s
Mean Throughput desc_sort_timestamp 0.5 ops/s
Median Throughput desc_sort_timestamp 0.5 ops/s
Max Throughput desc_sort_timestamp 0.5 ops/s
50th percentile latency desc_sort_timestamp 10.5716 ms
90th percentile latency desc_sort_timestamp 11.4202 ms
99th percentile latency desc_sort_timestamp 14.1334 ms
100th percentile latency desc_sort_timestamp 18.0451 ms
50th percentile service time desc_sort_timestamp 7.74294 ms
90th percentile service time desc_sort_timestamp 8.34838 ms
99th percentile service time desc_sort_timestamp 11.2404 ms
100th percentile service time desc_sort_timestamp 14.8779 ms
error rate desc_sort_timestamp 0 %
Min Throughput asc_sort_timestamp 0.5 ops/s
Mean Throughput asc_sort_timestamp 0.5 ops/s
Median Throughput asc_sort_timestamp 0.5 ops/s
Max Throughput asc_sort_timestamp 0.5 ops/s
50th percentile latency asc_sort_timestamp 7.42802 ms
90th percentile latency asc_sort_timestamp 7.93819 ms
99th percentile latency asc_sort_timestamp 8.60734 ms
100th percentile latency asc_sort_timestamp 9.44753 ms
50th percentile service time asc_sort_timestamp 4.54632 ms
90th percentile service time asc_sort_timestamp 5.01495 ms
99th percentile service time asc_sort_timestamp 5.22745 ms
100th percentile service time asc_sort_timestamp 5.92186 ms
error rate asc_sort_timestamp 0 %
Min Throughput desc_sort_with_after_timestamp 0.5 ops/s
Mean Throughput desc_sort_with_after_timestamp 0.51 ops/s
Median Throughput desc_sort_with_after_timestamp 0.51 ops/s
Max Throughput desc_sort_with_after_timestamp 0.55 ops/s
50th percentile latency desc_sort_with_after_timestamp 28.4928 ms
90th percentile latency desc_sort_with_after_timestamp 34.6408 ms
99th percentile latency desc_sort_with_after_timestamp 42.3019 ms
100th percentile latency desc_sort_with_after_timestamp 43.9873 ms
50th percentile service time desc_sort_with_after_timestamp 25.4752 ms
90th percentile service time desc_sort_with_after_timestamp 31.9811 ms
99th percentile service time desc_sort_with_after_timestamp 39.2931 ms
100th percentile service time desc_sort_with_after_timestamp 41.3117 ms
error rate desc_sort_with_after_timestamp 0 %
Min Throughput asc_sort_with_after_timestamp 0.5 ops/s
Mean Throughput asc_sort_with_after_timestamp 0.51 ops/s
Median Throughput asc_sort_with_after_timestamp 0.51 ops/s
Max Throughput asc_sort_with_after_timestamp 0.55 ops/s
50th percentile latency asc_sort_with_after_timestamp 12.1143 ms
90th percentile latency asc_sort_with_after_timestamp 12.9311 ms
99th percentile latency asc_sort_with_after_timestamp 13.792 ms
100th percentile latency asc_sort_with_after_timestamp 16.082 ms
50th percentile service time asc_sort_with_after_timestamp 9.15832 ms
90th percentile service time asc_sort_with_after_timestamp 9.7939 ms
99th percentile service time asc_sort_with_after_timestamp 10.5679 ms
100th percentile service time asc_sort_with_after_timestamp 13.1831 ms
error rate asc_sort_with_after_timestamp 0 %
Min Throughput wait-until-merges-1-seg-finish 43.87 ops/s
Mean Throughput wait-until-merges-1-seg-finish 43.87 ops/s
Median Throughput wait-until-merges-1-seg-finish 43.87 ops/s
Max Throughput wait-until-merges-1-seg-finish 43.87 ops/s
100th percentile latency wait-until-merges-1-seg-finish 21.9676 ms
100th percentile service time wait-until-merges-1-seg-finish 21.9676 ms
error rate wait-until-merges-1-seg-finish 0 %
Min Throughput desc-sort-timestamp-after-force-merge-1-seg 2.01 ops/s
Mean Throughput desc-sort-timestamp-after-force-merge-1-seg 2.01 ops/s
Median Throughput desc-sort-timestamp-after-force-merge-1-seg 2.01 ops/s
Max Throughput desc-sort-timestamp-after-force-merge-1-seg 2.01 ops/s
50th percentile latency desc-sort-timestamp-after-force-merge-1-seg 6.47902 ms
90th percentile latency desc-sort-timestamp-after-force-merge-1-seg 7.14437 ms
99th percentile latency desc-sort-timestamp-after-force-merge-1-seg 7.51324 ms
100th percentile latency desc-sort-timestamp-after-force-merge-1-seg 7.59761 ms
50th percentile service time desc-sort-timestamp-after-force-merge-1-seg 5.10244 ms
90th percentile service time desc-sort-timestamp-after-force-merge-1-seg 5.45927 ms
99th percentile service time desc-sort-timestamp-after-force-merge-1-seg 5.70626 ms
100th percentile service time desc-sort-timestamp-after-force-merge-1-seg 5.73666 ms
error rate desc-sort-timestamp-after-force-merge-1-seg 0 %
Min Throughput asc-sort-timestamp-after-force-merge-1-seg 2.01 ops/s
Mean Throughput asc-sort-timestamp-after-force-merge-1-seg 2.01 ops/s
Median Throughput asc-sort-timestamp-after-force-merge-1-seg 2.01 ops/s
Max Throughput asc-sort-timestamp-after-force-merge-1-seg 2.01 ops/s
50th percentile latency asc-sort-timestamp-after-force-merge-1-seg 5.39301 ms
90th percentile latency asc-sort-timestamp-after-force-merge-1-seg 5.99383 ms
99th percentile latency asc-sort-timestamp-after-force-merge-1-seg 8.6936 ms
100th percentile latency asc-sort-timestamp-after-force-merge-1-seg 12.2056 ms
50th percentile service time asc-sort-timestamp-after-force-merge-1-seg 3.88338 ms
90th percentile service time asc-sort-timestamp-after-force-merge-1-seg 4.22292 ms
99th percentile service time asc-sort-timestamp-after-force-merge-1-seg 7.1192 ms
100th percentile service time asc-sort-timestamp-after-force-merge-1-seg 10.9037 ms
error rate asc-sort-timestamp-after-force-merge-1-seg 0 %
Min Throughput desc-sort-with-after-timestamp-after-force-merge-1-seg 0.5 ops/s
Mean Throughput desc-sort-with-after-timestamp-after-force-merge-1-seg 0.51 ops/s
Median Throughput desc-sort-with-after-timestamp-after-force-merge-1-seg 0.51 ops/s
Max Throughput desc-sort-with-after-timestamp-after-force-merge-1-seg 0.55 ops/s
50th percentile latency desc-sort-with-after-timestamp-after-force-merge-1-seg 47.6262 ms
90th percentile latency desc-sort-with-after-timestamp-after-force-merge-1-seg 65.6268 ms
99th percentile latency desc-sort-with-after-timestamp-after-force-merge-1-seg 77.8234 ms
100th percentile latency desc-sort-with-after-timestamp-after-force-merge-1-seg 83.5552 ms
50th percentile service time desc-sort-with-after-timestamp-after-force-merge-1-seg 44.7337 ms
90th percentile service time desc-sort-with-after-timestamp-after-force-merge-1-seg 62.4596 ms
99th percentile service time desc-sort-with-after-timestamp-after-force-merge-1-seg 74.5721 ms
100th percentile service time desc-sort-with-after-timestamp-after-force-merge-1-seg 80.2741 ms
error rate desc-sort-with-after-timestamp-after-force-merge-1-seg 0 %
Min Throughput asc-sort-with-after-timestamp-after-force-merge-1-seg 0.5 ops/s
Mean Throughput asc-sort-with-after-timestamp-after-force-merge-1-seg 0.51 ops/s
Median Throughput asc-sort-with-after-timestamp-after-force-merge-1-seg 0.51 ops/s
Max Throughput asc-sort-with-after-timestamp-after-force-merge-1-seg 0.55 ops/s
50th percentile latency asc-sort-with-after-timestamp-after-force-merge-1-seg 55.3966 ms
90th percentile latency asc-sort-with-after-timestamp-after-force-merge-1-seg 63.8203 ms
99th percentile latency asc-sort-with-after-timestamp-after-force-merge-1-seg 81.869 ms
100th percentile latency asc-sort-with-after-timestamp-after-force-merge-1-seg 89.8353 ms
50th percentile service time asc-sort-with-after-timestamp-after-force-merge-1-seg 52.5845 ms
90th percentile service time asc-sort-with-after-timestamp-after-force-merge-1-seg 60.8843 ms
99th percentile service time asc-sort-with-after-timestamp-after-force-merge-1-seg 79.2502 ms
100th percentile service time asc-sort-with-after-timestamp-after-force-merge-1-seg 87.2135 ms
error rate asc-sort-with-after-timestamp-after-force-merge-1-seg 0 %
Using Index level Enc in this repo
Metric Task Value Unit
Cumulative indexing time of primary shards 88.559 min
Min cumulative indexing time across primary shards 0 min
Median cumulative indexing time across primary shards 0.789758 min
Max cumulative indexing time across primary shards 13.2288 min
Cumulative indexing throttle time of primary shards 0 min
Min cumulative indexing throttle time across primary shards 0 min
Median cumulative indexing throttle time across primary shards 0 min
Max cumulative indexing throttle time across primary shards 0 min
Cumulative merge time of primary shards 56.6801 min
Cumulative merge count of primary shards 199
Min cumulative merge time across primary shards 0 min
Median cumulative merge time across primary shards 0.236583 min
Max cumulative merge time across primary shards 13.8085 min
Cumulative merge throttle time of primary shards 24.255 min
Min cumulative merge throttle time across primary shards 0 min
Median cumulative merge throttle time across primary shards 0.0500917 min
Max cumulative merge throttle time across primary shards 7.56042 min
Cumulative refresh time of primary shards 3.48997 min
Cumulative refresh count of primary shards 599
Min cumulative refresh time across primary shards 0 min
Median cumulative refresh time across primary shards 0.0356083 min
Max cumulative refresh time across primary shards 0.307183 min
Cumulative flush time of primary shards 9.32122 min
Cumulative flush count of primary shards 113
Min cumulative flush time across primary shards 0 min
Median cumulative flush time across primary shards 0.004725 min
Max cumulative flush time across primary shards 1.7426 min
Total Young Gen GC time 11.624 s
Total Young Gen GC count 858
Total Old Gen GC time 0 s
Total Old Gen GC count 0
Store size 18.4237 GB
Translog size 2.04891e-06 GB
Heap used for segments 0 MB
Heap used for doc values 0 MB
Heap used for terms 0 MB
Heap used for norms 0 MB
Heap used for points 0 MB
Heap used for stored fields 0 MB
Segment count 35
Min Throughput index-append 338125 docs/s
Mean Throughput index-append 375313 docs/s
Median Throughput index-append 363179 docs/s
Max Throughput index-append 453161 docs/s
50th percentile latency index-append 61.0804 ms
90th percentile latency index-append 275.891 ms
99th percentile latency index-append 719.953 ms
99.9th percentile latency index-append 1181.71 ms
99.99th percentile latency index-append 1375.55 ms
100th percentile latency index-append 1743.57 ms
50th percentile service time index-append 61.0804 ms
90th percentile service time index-append 275.891 ms
99th percentile service time index-append 719.953 ms
99.9th percentile service time index-append 1181.71 ms
99.99th percentile service time index-append 1375.55 ms
100th percentile service time index-append 1743.57 ms
error rate index-append 0 %
Min Throughput wait-until-merges-finish 0 ops/s
Mean Throughput wait-until-merges-finish 0 ops/s
Median Throughput wait-until-merges-finish 0 ops/s
Max Throughput wait-until-merges-finish 0 ops/s
100th percentile latency wait-until-merges-finish 237385 ms
100th percentile service time wait-until-merges-finish 237385 ms
error rate wait-until-merges-finish 0 %
Min Throughput default 8 ops/s
Mean Throughput default 8 ops/s
Median Throughput default 8 ops/s
Max Throughput default 8 ops/s
50th percentile latency default 4.65987 ms
90th percentile latency default 5.2849 ms
99th percentile latency default 5.95226 ms
100th percentile latency default 6.03293 ms
50th percentile service time default 3.49217 ms
90th percentile service time default 3.86106 ms
99th percentile service time default 4.92292 ms
100th percentile service time default 5.07474 ms
error rate default 0 %
Min Throughput term 49.92 ops/s
Mean Throughput term 49.93 ops/s
Median Throughput term 49.93 ops/s
Max Throughput term 49.93 ops/s
50th percentile latency term 7.3071 ms
90th percentile latency term 8.22732 ms
99th percentile latency term 8.44342 ms
100th percentile latency term 8.712 ms
50th percentile service time term 5.89029 ms
90th percentile service time term 6.20612 ms
99th percentile service time term 6.3001 ms
100th percentile service time term 6.35151 ms
error rate term 0 %
Min Throughput range 1 ops/s
Mean Throughput range 1.01 ops/s
Median Throughput range 1.01 ops/s
Max Throughput range 1.01 ops/s
50th percentile latency range 28.317 ms
90th percentile latency range 39.7649 ms
99th percentile latency range 41.8126 ms
100th percentile latency range 42.9303 ms
50th percentile service time range 26.1788 ms
90th percentile service time range 38.5727 ms
99th percentile service time range 39.6792 ms
100th percentile service time range 40.9011 ms
error rate range 0 %
Min Throughput status-200s-in-range 32.88 ops/s
Mean Throughput status-200s-in-range 32.89 ops/s
Median Throughput status-200s-in-range 32.89 ops/s
Max Throughput status-200s-in-range 32.9 ops/s
50th percentile latency status-200s-in-range 8.23325 ms
90th percentile latency status-200s-in-range 8.8917 ms
99th percentile latency status-200s-in-range 9.70016 ms
100th percentile latency status-200s-in-range 10.814 ms
50th percentile service time status-200s-in-range 7.21291 ms
90th percentile service time status-200s-in-range 7.83231 ms
99th percentile service time status-200s-in-range 9.11764 ms
100th percentile service time status-200s-in-range 9.60317 ms
error rate status-200s-in-range 0 %
Min Throughput status-400s-in-range 50.03 ops/s
Mean Throughput status-400s-in-range 50.04 ops/s
Median Throughput status-400s-in-range 50.04 ops/s
Max Throughput status-400s-in-range 50.04 ops/s
50th percentile latency status-400s-in-range 4.6384 ms
90th percentile latency status-400s-in-range 5.00088 ms
99th percentile latency status-400s-in-range 5.35784 ms
100th percentile latency status-400s-in-range 5.40471 ms
50th percentile service time status-400s-in-range 3.63094 ms
90th percentile service time status-400s-in-range 3.8789 ms
99th percentile service time status-400s-in-range 4.25014 ms
100th percentile service time status-400s-in-range 4.25133 ms
error rate status-400s-in-range 0 %
Min Throughput hourly_agg 0.2 ops/s
Mean Throughput hourly_agg 0.2 ops/s
Median Throughput hourly_agg 0.2 ops/s
Max Throughput hourly_agg 0.2 ops/s
50th percentile latency hourly_agg 83.5364 ms
90th percentile latency hourly_agg 88.3676 ms
99th percentile latency hourly_agg 92.2983 ms
100th percentile latency hourly_agg 93.5509 ms
50th percentile service time hourly_agg 78.1549 ms
90th percentile service time hourly_agg 83.4268 ms
99th percentile service time hourly_agg 87.287 ms
100th percentile service time hourly_agg 88.3844 ms
error rate hourly_agg 0 %
Min Throughput multi_term_agg 0.2 ops/s
Mean Throughput multi_term_agg 0.2 ops/s
Median Throughput multi_term_agg 0.2 ops/s
Max Throughput multi_term_agg 0.2 ops/s
50th percentile latency multi_term_agg 4863.82 ms
90th percentile latency multi_term_agg 4930.81 ms
99th percentile latency multi_term_agg 4996.04 ms
100th percentile latency multi_term_agg 5005.09 ms
50th percentile service time multi_term_agg 4862.6 ms
90th percentile service time multi_term_agg 4930.03 ms
99th percentile service time multi_term_agg 4994.64 ms
100th percentile service time multi_term_agg 5002.37 ms
error rate multi_term_agg 0 %
Min Throughput scroll 25.05 pages/s
Mean Throughput scroll 25.08 pages/s
Median Throughput scroll 25.07 pages/s
Max Throughput scroll 25.15 pages/s
50th percentile latency scroll 215.894 ms
90th percentile latency scroll 220.857 ms
99th percentile latency scroll 241.352 ms
100th percentile latency scroll 244.775 ms
50th percentile service time scroll 213.472 ms
90th percentile service time scroll 218.855 ms
99th percentile service time scroll 239.243 ms
100th percentile service time scroll 242.804 ms
error rate scroll 0 %
Min Throughput desc_sort_size 0.5 ops/s
Mean Throughput desc_sort_size 0.5 ops/s
Median Throughput desc_sort_size 0.5 ops/s
Max Throughput desc_sort_size 0.5 ops/s
50th percentile latency desc_sort_size 41.2496 ms
90th percentile latency desc_sort_size 44.4534 ms
99th percentile latency desc_sort_size 47.255 ms
100th percentile latency desc_sort_size 49.1339 ms
50th percentile service time desc_sort_size 38.3336 ms
90th percentile service time desc_sort_size 41.4593 ms
99th percentile service time desc_sort_size 43.7926 ms
100th percentile service time desc_sort_size 46.1054 ms
error rate desc_sort_size 0 %
Min Throughput asc_sort_size 0.5 ops/s
Mean Throughput asc_sort_size 0.5 ops/s
Median Throughput asc_sort_size 0.5 ops/s
Max Throughput asc_sort_size 0.5 ops/s
50th percentile latency asc_sort_size 10.1273 ms
90th percentile latency asc_sort_size 10.6305 ms
99th percentile latency asc_sort_size 11.2729 ms
100th percentile latency asc_sort_size 11.2987 ms
50th percentile service time asc_sort_size 7.25146 ms
90th percentile service time asc_sort_size 7.56579 ms
99th percentile service time asc_sort_size 8.1561 ms
100th percentile service time asc_sort_size 8.25351 ms
error rate asc_sort_size 0 %
Min Throughput desc_sort_timestamp 0.5 ops/s
Mean Throughput desc_sort_timestamp 0.5 ops/s
Median Throughput desc_sort_timestamp 0.5 ops/s
Max Throughput desc_sort_timestamp 0.5 ops/s
50th percentile latency desc_sort_timestamp 22.607 ms
90th percentile latency desc_sort_timestamp 26.1052 ms
99th percentile latency desc_sort_timestamp 26.7457 ms
100th percentile latency desc_sort_timestamp 29.8551 ms
50th percentile service time desc_sort_timestamp 20.0363 ms
90th percentile service time desc_sort_timestamp 23.2075 ms
99th percentile service time desc_sort_timestamp 23.7307 ms
100th percentile service time desc_sort_timestamp 26.6156 ms
error rate desc_sort_timestamp 0 %
Min Throughput asc_sort_timestamp 0.5 ops/s
Mean Throughput asc_sort_timestamp 0.5 ops/s
Median Throughput asc_sort_timestamp 0.5 ops/s
Max Throughput asc_sort_timestamp 0.5 ops/s
50th percentile latency asc_sort_timestamp 11.4842 ms
90th percentile latency asc_sort_timestamp 12.6472 ms
99th percentile latency asc_sort_timestamp 14.7919 ms
100th percentile latency asc_sort_timestamp 15.1675 ms
50th percentile service time asc_sort_timestamp 8.49158 ms
90th percentile service time asc_sort_timestamp 9.97945 ms
99th percentile service time asc_sort_timestamp 11.8318 ms
100th percentile service time asc_sort_timestamp 12.2767 ms
error rate asc_sort_timestamp 0 %
Min Throughput desc_sort_with_after_timestamp 0.5 ops/s
Mean Throughput desc_sort_with_after_timestamp 0.51 ops/s
Median Throughput desc_sort_with_after_timestamp 0.51 ops/s
Max Throughput desc_sort_with_after_timestamp 0.54 ops/s
50th percentile latency desc_sort_with_after_timestamp 161.459 ms
90th percentile latency desc_sort_with_after_timestamp 163.679 ms
99th percentile latency desc_sort_with_after_timestamp 205.495 ms
100th percentile latency desc_sort_with_after_timestamp 205.702 ms
50th percentile service time desc_sort_with_after_timestamp 158.741 ms
90th percentile service time desc_sort_with_after_timestamp 160.686 ms
99th percentile service time desc_sort_with_after_timestamp 202.837 ms
100th percentile service time desc_sort_with_after_timestamp 203.305 ms
error rate desc_sort_with_after_timestamp 0 %
Min Throughput asc_sort_with_after_timestamp 0.5 ops/s
Mean Throughput asc_sort_with_after_timestamp 0.51 ops/s
Median Throughput asc_sort_with_after_timestamp 0.51 ops/s
Max Throughput asc_sort_with_after_timestamp 0.55 ops/s
50th percentile latency asc_sort_with_after_timestamp 64.9087 ms
90th percentile latency asc_sort_with_after_timestamp 66.8727 ms
99th percentile latency asc_sort_with_after_timestamp 77.4004 ms
100th percentile latency asc_sort_with_after_timestamp 87.2627 ms
50th percentile service time asc_sort_with_after_timestamp 61.9427 ms
90th percentile service time asc_sort_with_after_timestamp 64.0543 ms
99th percentile service time asc_sort_with_after_timestamp 74.5837 ms
100th percentile service time asc_sort_with_after_timestamp 84.6381 ms
error rate asc_sort_with_after_timestamp 0 %
Min Throughput wait-until-merges-1-seg-finish 59.6 ops/s
Mean Throughput wait-until-merges-1-seg-finish 59.6 ops/s
Median Throughput wait-until-merges-1-seg-finish 59.6 ops/s
Max Throughput wait-until-merges-1-seg-finish 59.6 ops/s
100th percentile latency wait-until-merges-1-seg-finish 15.9852 ms
100th percentile service time wait-until-merges-1-seg-finish 15.9852 ms
error rate wait-until-merges-1-seg-finish 0 %
Min Throughput desc-sort-timestamp-after-force-merge-1-seg 2.01 ops/s
Mean Throughput desc-sort-timestamp-after-force-merge-1-seg 2.01 ops/s
Median Throughput desc-sort-timestamp-after-force-merge-1-seg 2.01 ops/s
Max Throughput desc-sort-timestamp-after-force-merge-1-seg 2.01 ops/s
50th percentile latency desc-sort-timestamp-after-force-merge-1-seg 8.24114 ms
90th percentile latency desc-sort-timestamp-after-force-merge-1-seg 9.64933 ms
99th percentile latency desc-sort-timestamp-after-force-merge-1-seg 10.2124 ms
100th percentile latency desc-sort-timestamp-after-force-merge-1-seg 10.6009 ms
50th percentile service time desc-sort-timestamp-after-force-merge-1-seg 6.81415 ms
90th percentile service time desc-sort-timestamp-after-force-merge-1-seg 8.23755 ms
99th percentile service time desc-sort-timestamp-after-force-merge-1-seg 8.90111 ms
100th percentile service time desc-sort-timestamp-after-force-merge-1-seg 9.09874 ms
error rate desc-sort-timestamp-after-force-merge-1-seg 0 %
Min Throughput asc-sort-timestamp-after-force-merge-1-seg 2.01 ops/s
Mean Throughput asc-sort-timestamp-after-force-merge-1-seg 2.01 ops/s
Median Throughput asc-sort-timestamp-after-force-merge-1-seg 2.01 ops/s
Max Throughput asc-sort-timestamp-after-force-merge-1-seg 2.01 ops/s
50th percentile latency asc-sort-timestamp-after-force-merge-1-seg 7.57943 ms
90th percentile latency asc-sort-timestamp-after-force-merge-1-seg 9.00861 ms
99th percentile latency asc-sort-timestamp-after-force-merge-1-seg 10.3938 ms
100th percentile latency asc-sort-timestamp-after-force-merge-1-seg 10.3967 ms
50th percentile service time asc-sort-timestamp-after-force-merge-1-seg 6.0296 ms
90th percentile service time asc-sort-timestamp-after-force-merge-1-seg 7.47605 ms
99th percentile service time asc-sort-timestamp-after-force-merge-1-seg 8.54889 ms
100th percentile service time asc-sort-timestamp-after-force-merge-1-seg 8.8066 ms
error rate asc-sort-timestamp-after-force-merge-1-seg 0 %
Min Throughput desc-sort-with-after-timestamp-after-force-merge-1-seg 0.5 ops/s
Mean Throughput desc-sort-with-after-timestamp-after-force-merge-1-seg 0.51 ops/s
Median Throughput desc-sort-with-after-timestamp-after-force-merge-1-seg 0.51 ops/s
Max Throughput desc-sort-with-after-timestamp-after-force-merge-1-seg 0.54 ops/s
50th percentile latency desc-sort-with-after-timestamp-after-force-merge-1-seg 160.161 ms
90th percentile latency desc-sort-with-after-timestamp-after-force-merge-1-seg 165.672 ms
99th percentile latency desc-sort-with-after-timestamp-after-force-merge-1-seg 226.024 ms
100th percentile latency desc-sort-with-after-timestamp-after-force-merge-1-seg 228.574 ms
50th percentile service time desc-sort-with-after-timestamp-after-force-merge-1-seg 157.337 ms
90th percentile service time desc-sort-with-after-timestamp-after-force-merge-1-seg 162.623 ms
99th percentile service time desc-sort-with-after-timestamp-after-force-merge-1-seg 223.396 ms
100th percentile service time desc-sort-with-after-timestamp-after-force-merge-1-seg 226.035 ms
error rate desc-sort-with-after-timestamp-after-force-merge-1-seg 0 %
Min Throughput asc-sort-with-after-timestamp-after-force-merge-1-seg 0.5 ops/s
Mean Throughput asc-sort-with-after-timestamp-after-force-merge-1-seg 0.51 ops/s
Median Throughput asc-sort-with-after-timestamp-after-force-merge-1-seg 0.51 ops/s
Max Throughput asc-sort-with-after-timestamp-after-force-merge-1-seg 0.55 ops/s
50th percentile latency asc-sort-with-after-timestamp-after-force-merge-1-seg 96.3977 ms
90th percentile latency asc-sort-with-after-timestamp-after-force-merge-1-seg 106.61 ms
99th percentile latency asc-sort-with-after-timestamp-after-force-merge-1-seg 130.63 ms
100th percentile latency asc-sort-with-after-timestamp-after-force-merge-1-seg 152.226 ms
50th percentile service time asc-sort-with-after-timestamp-after-force-merge-1-seg 93.0728 ms
90th percentile service time asc-sort-with-after-timestamp-after-force-merge-1-seg 104.118 ms
99th percentile service time asc-sort-with-after-timestamp-after-force-merge-1-seg 127.406 ms
100th percentile service time asc-sort-with-after-timestamp-after-force-merge-1-seg 150.398 ms
error rate asc-sort-with-after-timestamp-after-force-merge-1-seg 0 %
LUKS based (transparent) encryption
Metric Task Value Unit
Cumulative indexing time of primary shards 101.328 min
Min cumulative indexing time across primary shards 0 min
Median cumulative indexing time across primary shards 0.207275 min
Max cumulative indexing time across primary shards 15.5034 min
Cumulative indexing throttle time of primary shards 0 min
Min cumulative indexing throttle time across primary shards 0 min
Median cumulative indexing throttle time across primary shards 0 min
Max cumulative indexing throttle time across primary shards 0 min
Cumulative merge time of primary shards 31.1672 min
Cumulative merge count of primary shards 139
Min cumulative merge time across primary shards 0 min
Median cumulative merge time across primary shards 0.0490417 min
Max cumulative merge time across primary shards 5.87355 min
Cumulative merge throttle time of primary shards 10.3523 min
Min cumulative merge throttle time across primary shards 0 min
Median cumulative merge throttle time across primary shards 0 min
Max cumulative merge throttle time across primary shards 2.21618 min
Cumulative refresh time of primary shards 3.14693 min
Cumulative refresh count of primary shards 807
Min cumulative refresh time across primary shards 0 min
Median cumulative refresh time across primary shards 0.0100667 min
Max cumulative refresh time across primary shards 0.187533 min
Cumulative flush time of primary shards 6.79007 min
Cumulative flush count of primary shards 133
Min cumulative flush time across primary shards 0 min
Median cumulative flush time across primary shards 0 min
Max cumulative flush time across primary shards 1.24793 min
Total Young Gen GC time 9.16 s
Total Young Gen GC count 244
Total Old Gen GC time 0 s
Total Old Gen GC count 0
Store size 18.4218 GB
Translog size 0.00026336 GB
Heap used for segments 0 MB
Heap used for doc values 0 MB
Heap used for terms 0 MB
Heap used for norms 0 MB
Heap used for points 0 MB
Heap used for stored fields 0 MB
Segment count 60
Min Throughput index-append 356912 docs/s
Mean Throughput index-append 370457 docs/s
Median Throughput index-append 369590 docs/s
Max Throughput index-append 390782 docs/s
50th percentile latency index-append 84.4062 ms
90th percentile latency index-append 115.443 ms
99th percentile latency index-append 718.399 ms
99.9th percentile latency index-append 2472.99 ms
99.99th percentile latency index-append 3812.15 ms
100th percentile latency index-append 4230.23 ms
50th percentile service time index-append 84.4062 ms
90th percentile service time index-append 115.443 ms
99th percentile service time index-append 718.399 ms
99.9th percentile service time index-append 2472.99 ms
99.99th percentile service time index-append 3812.15 ms
100th percentile service time index-append 4230.23 ms
error rate index-append 0 %
Min Throughput wait-until-merges-finish 25.42 ops/s
Mean Throughput wait-until-merges-finish 25.42 ops/s
Median Throughput wait-until-merges-finish 25.42 ops/s
Max Throughput wait-until-merges-finish 25.42 ops/s
100th percentile latency wait-until-merges-finish 22.5579 ms
100th percentile service time wait-until-merges-finish 22.5579 ms
error rate wait-until-merges-finish 0 %
Min Throughput match-all 8.01 ops/s
Mean Throughput match-all 8.01 ops/s
Median Throughput match-all 8.01 ops/s
Max Throughput match-all 8.01 ops/s
50th percentile latency match-all 17.0015 ms
90th percentile latency match-all 17.9046 ms
99th percentile latency match-all 18.3004 ms
100th percentile latency match-all 18.3956 ms
50th percentile service time match-all 16.113 ms
90th percentile service time match-all 17.0139 ms
99th percentile service time match-all 17.5952 ms
100th percentile service time match-all 17.6697 ms
error rate match-all 0 %
Min Throughput term 49.82 ops/s
Mean Throughput term 49.82 ops/s
Median Throughput term 49.82 ops/s
Max Throughput term 49.83 ops/s
50th percentile latency term 16.9474 ms
90th percentile latency term 17.6058 ms
99th percentile latency term 19.2842 ms
100th percentile latency term 19.3835 ms
50th percentile service time term 16.185 ms
90th percentile service time term 16.985 ms
99th percentile service time term 18.5059 ms
100th percentile service time term 18.8013 ms
error rate term 0 %
Min Throughput range 1 ops/s
Mean Throughput range 1.01 ops/s
Median Throughput range 1.01 ops/s
Max Throughput range 1.01 ops/s
50th percentile latency range 21.4294 ms
90th percentile latency range 22.3486 ms
99th percentile latency range 23.6517 ms
100th percentile latency range 24.8873 ms
50th percentile service time range 19.7006 ms
90th percentile service time range 20.5867 ms
99th percentile service time range 22.0718 ms
100th percentile service time range 23.2794 ms
error rate range 0 %
Min Throughput status-200s-in-range 32.93 ops/s
Mean Throughput status-200s-in-range 32.93 ops/s
Median Throughput status-200s-in-range 32.93 ops/s
Max Throughput status-200s-in-range 32.94 ops/s
50th percentile latency status-200s-in-range 17.979 ms
90th percentile latency status-200s-in-range 19.7066 ms
99th percentile latency status-200s-in-range 20.4558 ms
100th percentile latency status-200s-in-range 21.8033 ms
50th percentile service time status-200s-in-range 17.0036 ms
90th percentile service time status-200s-in-range 17.922 ms
99th percentile service time status-200s-in-range 18.6479 ms
100th percentile service time status-200s-in-range 20.1874 ms
error rate status-200s-in-range 0 %
Min Throughput status-400s-in-range 49.93 ops/s
Mean Throughput status-400s-in-range 49.93 ops/s
Median Throughput status-400s-in-range 49.93 ops/s
Max Throughput status-400s-in-range 49.94 ops/s
50th percentile latency status-400s-in-range 15.3968 ms
90th percentile latency status-400s-in-range 16.0575 ms
99th percentile latency status-400s-in-range 16.7118 ms
100th percentile latency status-400s-in-range 18.2704 ms
50th percentile service time status-400s-in-range 14.6785 ms
90th percentile service time status-400s-in-range 15.3808 ms
99th percentile service time status-400s-in-range 15.8547 ms
100th percentile service time status-400s-in-range 17.6657 ms
error rate status-400s-in-range 0 %
Min Throughput hourly_agg 0.2 ops/s
Mean Throughput hourly_agg 0.2 ops/s
Median Throughput hourly_agg 0.2 ops/s
Max Throughput hourly_agg 0.2 ops/s
50th percentile latency hourly_agg 65.6548 ms
90th percentile latency hourly_agg 69.1869 ms
99th percentile latency hourly_agg 72.83 ms
100th percentile latency hourly_agg 82.1259 ms
50th percentile service time hourly_agg 59.7563 ms
90th percentile service time hourly_agg 63.3034 ms
99th percentile service time hourly_agg 66.8686 ms
100th percentile service time hourly_agg 78.3005 ms
error rate hourly_agg 0 %
Min Throughput multi_term_agg 0.2 ops/s
Mean Throughput multi_term_agg 0.2 ops/s
Median Throughput multi_term_agg 0.2 ops/s
Max Throughput multi_term_agg 0.2 ops/s
50th percentile latency multi_term_agg 1277.87 ms
90th percentile latency multi_term_agg 1334.9 ms
99th percentile latency multi_term_agg 1380.24 ms
100th percentile latency multi_term_agg 1390.82 ms
50th percentile service time multi_term_agg 1272.96 ms
90th percentile service time multi_term_agg 1330.23 ms
99th percentile service time multi_term_agg 1376.16 ms
100th percentile service time multi_term_agg 1386.64 ms
error rate multi_term_agg 0 %
Min Throughput scroll 25.04 pages/s
Mean Throughput scroll 25.06 pages/s
Median Throughput scroll 25.06 pages/s
Max Throughput scroll 25.11 pages/s
50th percentile latency scroll 522.258 ms
90th percentile latency scroll 531.462 ms
99th percentile latency scroll 552.482 ms
100th percentile latency scroll 575.066 ms
50th percentile service time scroll 520.602 ms
90th percentile service time scroll 529.81 ms
99th percentile service time scroll 551.044 ms
100th percentile service time scroll 573.946 ms
error rate scroll 0 %
Min Throughput desc_sort_size 0.5 ops/s
Mean Throughput desc_sort_size 0.5 ops/s
Median Throughput desc_sort_size 0.5 ops/s
Max Throughput desc_sort_size 0.5 ops/s
50th percentile latency desc_sort_size 28.2804 ms
90th percentile latency desc_sort_size 29.3685 ms
99th percentile latency desc_sort_size 54.3324 ms
100th percentile latency desc_sort_size 337.418 ms
50th percentile service time desc_sort_size 25.4703 ms
90th percentile service time desc_sort_size 26.6225 ms
99th percentile service time desc_sort_size 51.9672 ms
100th percentile service time desc_sort_size 334.719 ms
error rate desc_sort_size 0 %
Min Throughput asc_sort_size 0.5 ops/s
Mean Throughput asc_sort_size 0.5 ops/s
Median Throughput asc_sort_size 0.5 ops/s
Max Throughput asc_sort_size 0.5 ops/s
50th percentile latency asc_sort_size 22.6551 ms
90th percentile latency asc_sort_size 23.9143 ms
99th percentile latency asc_sort_size 34.3852 ms
100th percentile latency asc_sort_size 40.6543 ms
50th percentile service time asc_sort_size 19.886 ms
90th percentile service time asc_sort_size 21.1486 ms
99th percentile service time asc_sort_size 31.2808 ms
100th percentile service time asc_sort_size 38.2434 ms
error rate asc_sort_size 0 %
Min Throughput desc_sort_timestamp 0.5 ops/s
Mean Throughput desc_sort_timestamp 0.5 ops/s
Median Throughput desc_sort_timestamp 0.5 ops/s
Max Throughput desc_sort_timestamp 0.5 ops/s
50th percentile latency desc_sort_timestamp 30.3512 ms
90th percentile latency desc_sort_timestamp 35.8746 ms
99th percentile latency desc_sort_timestamp 38.4444 ms
100th percentile latency desc_sort_timestamp 46.3747 ms
50th percentile service time desc_sort_timestamp 27.6058 ms
90th percentile service time desc_sort_timestamp 33.0537 ms
99th percentile service time desc_sort_timestamp 35.3399 ms
100th percentile service time desc_sort_timestamp 44.0768 ms
error rate desc_sort_timestamp 0 %
Min Throughput asc_sort_timestamp 0.5 ops/s
Mean Throughput asc_sort_timestamp 0.5 ops/s
Median Throughput asc_sort_timestamp 0.5 ops/s
Max Throughput asc_sort_timestamp 0.5 ops/s
50th percentile latency asc_sort_timestamp 20.7055 ms
90th percentile latency asc_sort_timestamp 21.7795 ms
99th percentile latency asc_sort_timestamp 23.0622 ms
100th percentile latency asc_sort_timestamp 36.3752 ms
50th percentile service time asc_sort_timestamp 17.923 ms
90th percentile service time asc_sort_timestamp 19.0201 ms
99th percentile service time asc_sort_timestamp 20.3382 ms
100th percentile service time asc_sort_timestamp 33.8191 ms
error rate asc_sort_timestamp 0 %
Min Throughput desc_sort_with_after_timestamp 0.5 ops/s
Mean Throughput desc_sort_with_after_timestamp 0.51 ops/s
Median Throughput desc_sort_with_after_timestamp 0.51 ops/s
Max Throughput desc_sort_with_after_timestamp 0.55 ops/s
50th percentile latency desc_sort_with_after_timestamp 35.3925 ms
90th percentile latency desc_sort_with_after_timestamp 41.2477 ms
99th percentile latency desc_sort_with_after_timestamp 48.632 ms
100th percentile latency desc_sort_with_after_timestamp 52.6728 ms
50th percentile service time desc_sort_with_after_timestamp 32.5331 ms
90th percentile service time desc_sort_with_after_timestamp 38.5146 ms
99th percentile service time desc_sort_with_after_timestamp 45.5259 ms
100th percentile service time desc_sort_with_after_timestamp 50.0765 ms
error rate desc_sort_with_after_timestamp 0 %
Min Throughput asc_sort_with_after_timestamp 0.5 ops/s
Mean Throughput asc_sort_with_after_timestamp 0.51 ops/s
Median Throughput asc_sort_with_after_timestamp 0.51 ops/s
Max Throughput asc_sort_with_after_timestamp 0.55 ops/s
50th percentile latency asc_sort_with_after_timestamp 27.5522 ms
90th percentile latency asc_sort_with_after_timestamp 30.626 ms
99th percentile latency asc_sort_with_after_timestamp 33.8269 ms
100th percentile latency asc_sort_with_after_timestamp 36.9733 ms
50th percentile service time asc_sort_with_after_timestamp 24.7261 ms
90th percentile service time asc_sort_with_after_timestamp 27.53 ms
99th percentile service time asc_sort_with_after_timestamp 31.1726 ms
100th percentile service time asc_sort_with_after_timestamp 34.1794 ms
error rate asc_sort_with_after_timestamp 0 %
Min Throughput wait-until-merges-1-seg-finish 29.67 ops/s
Mean Throughput wait-until-merges-1-seg-finish 29.67 ops/s
Median Throughput wait-until-merges-1-seg-finish 29.67 ops/s
Max Throughput wait-until-merges-1-seg-finish 29.67 ops/s
100th percentile latency wait-until-merges-1-seg-finish 17.6908 ms
100th percentile service time wait-until-merges-1-seg-finish 17.6908 ms
error rate wait-until-merges-1-seg-finish 0 %
Min Throughput desc-sort-timestamp-after-force-merge-1-seg 2 ops/s
Mean Throughput desc-sort-timestamp-after-force-merge-1-seg 2.01 ops/s
Median Throughput desc-sort-timestamp-after-force-merge-1-seg 2.01 ops/s
Max Throughput desc-sort-timestamp-after-force-merge-1-seg 2.01 ops/s
50th percentile latency desc-sort-timestamp-after-force-merge-1-seg 104.675 ms
90th percentile latency desc-sort-timestamp-after-force-merge-1-seg 144.498 ms
99th percentile latency desc-sort-timestamp-after-force-merge-1-seg 157.488 ms
100th percentile latency desc-sort-timestamp-after-force-merge-1-seg 159.61 ms
50th percentile service time desc-sort-timestamp-after-force-merge-1-seg 103.501 ms
90th percentile service time desc-sort-timestamp-after-force-merge-1-seg 143.135 ms
99th percentile service time desc-sort-timestamp-after-force-merge-1-seg 156.466 ms
100th percentile service time desc-sort-timestamp-after-force-merge-1-seg 158.116 ms
error rate desc-sort-timestamp-after-force-merge-1-seg 0 %
Min Throughput asc-sort-timestamp-after-force-merge-1-seg 2.01 ops/s
Mean Throughput asc-sort-timestamp-after-force-merge-1-seg 2.01 ops/s
Median Throughput asc-sort-timestamp-after-force-merge-1-seg 2.01 ops/s
Max Throughput asc-sort-timestamp-after-force-merge-1-seg 2.01 ops/s
50th percentile latency asc-sort-timestamp-after-force-merge-1-seg 18.4515 ms
90th percentile latency asc-sort-timestamp-after-force-merge-1-seg 19.3093 ms
99th percentile latency asc-sort-timestamp-after-force-merge-1-seg 21.2961 ms
100th percentile latency asc-sort-timestamp-after-force-merge-1-seg 22.5063 ms
50th percentile service time asc-sort-timestamp-after-force-merge-1-seg 16.9727 ms
90th percentile service time asc-sort-timestamp-after-force-merge-1-seg 17.9009 ms
99th percentile service time asc-sort-timestamp-after-force-merge-1-seg 19.5876 ms
100th percentile service time asc-sort-timestamp-after-force-merge-1-seg 21.6253 ms
error rate asc-sort-timestamp-after-force-merge-1-seg 0 %
Min Throughput desc-sort-with-after-timestamp-after-force-merge-1-seg 0.5 ops/s
Mean Throughput desc-sort-with-after-timestamp-after-force-merge-1-seg 0.51 ops/s
Median Throughput desc-sort-with-after-timestamp-after-force-merge-1-seg 0.51 ops/s
Max Throughput desc-sort-with-after-timestamp-after-force-merge-1-seg 0.55 ops/s
50th percentile latency desc-sort-with-after-timestamp-after-force-merge-1-seg 85.098 ms
90th percentile latency desc-sort-with-after-timestamp-after-force-merge-1-seg 92.1183 ms
99th percentile latency desc-sort-with-after-timestamp-after-force-merge-1-seg 117.455 ms
100th percentile latency desc-sort-with-after-timestamp-after-force-merge-1-seg 118.668 ms
50th percentile service time desc-sort-with-after-timestamp-after-force-merge-1-seg 81.7333 ms
90th percentile service time desc-sort-with-after-timestamp-after-force-merge-1-seg 88.5172 ms
99th percentile service time desc-sort-with-after-timestamp-after-force-merge-1-seg 113.376 ms
100th percentile service time desc-sort-with-after-timestamp-after-force-merge-1-seg 114.434 ms
error rate desc-sort-with-after-timestamp-after-force-merge-1-seg 0 %
Min Throughput asc-sort-with-after-timestamp-after-force-merge-1-seg 0.5 ops/s
Mean Throughput asc-sort-with-after-timestamp-after-force-merge-1-seg 0.51 ops/s
Median Throughput asc-sort-with-after-timestamp-after-force-merge-1-seg 0.51 ops/s
Max Throughput asc-sort-with-after-timestamp-after-force-merge-1-seg 0.55 ops/s
50th percentile latency asc-sort-with-after-timestamp-after-force-merge-1-seg 42.8923 ms
90th percentile latency asc-sort-with-after-timestamp-after-force-merge-1-seg 53.2539 ms
99th percentile latency asc-sort-with-after-timestamp-after-force-merge-1-seg 62.7906 ms
100th percentile latency asc-sort-with-after-timestamp-after-force-merge-1-seg 311.659 ms
50th percentile service time asc-sort-with-after-timestamp-after-force-merge-1-seg 40.0562 ms
90th percentile service time asc-sort-with-after-timestamp-after-force-merge-1-seg 50.5698 ms
99th percentile service time asc-sort-with-after-timestamp-after-force-merge-1-seg 59.7319 ms
100th percentile service time asc-sort-with-after-timestamp-after-force-merge-1-seg 308.774 ms
error rate asc-sort-with-after-timestamp-after-force-merge-1-seg 0 %

QOL
Signed-off-by: Gulshan <kumargu@amazon.com>
@kumargu
Copy link
Copy Markdown
Collaborator

kumargu commented Jun 16, 2025

@salyh looks like opensearch-project/OpenSearch#18085 is ready. I will rebase by Opensearch core against it and try out replacing OpenSSL parts with SunJCE.

@salyh
Copy link
Copy Markdown
Contributor

salyh commented Jun 22, 2025

@salyh looks like opensearch-project/OpenSearch#18085 is ready. I will rebase by Opensearch core against it and try out replacing OpenSSL parts with SunJCE.

The issue with the Java standard Cipher architecture is that it can get hard to do a real in-place decryption. Had some problems with passing native/direct ByteBuffers into the doFinal() or update() methods. Maybe you have more luck :-)

}

@SuppressWarnings("unused")
private static void decryptAndProtectPageByPage(
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@kumargu decryptAndProtectPageByPage() this is yet unused

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is decryptAndProtect() faster?

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yes decryptAndProtect is slightly faster because it can decrypt contiguous range of pages in one-shot. I still need to figure out a proper error handling for it.

But decryptAndProtectPageByPage is much safer as unsetting the bits is much easier on an exception.

MemorySegment dst = arena.allocate(length);
MemorySegment outLen = arena.allocate(ValueLayout.JAVA_INT);

rc = (int) EVP_EncryptUpdate.invoke(ctx, dst, outLen, src, (int) length);
Copy link
Copy Markdown
Contributor

@salyh salyh Jun 23, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@kumargu (int) length may lead to overflow. There are a lot of potentially unsafe casts to int in this file and in others. I suggest whenever a cast is inevitable to use a method which checks for boundaries

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

will be tracked at #19

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It is also adviseable to use invokeExact() for performance, because we know the exact signature and no adaption is required.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

thanks

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think the casting to int is fine here, because we know that the decoding buffer is always smaller, it is just nowere enforced. IMHO the length parameter of the decryptInto method should be int from the beginning - and if not it should be checked around line 236 (0<=x<=Integer.MAX_VALUE).

Of course for such accesses the check should not be done on every access in tight loops. Therefore in the original MMapDirectory we have many try-catch blocks catching IllegalArgument, ArrayIndexOutOfBounds and NullPointerException because we do not check on every access and for the rare case that someone changes to another segment while reading we do the logic in the catch block (also to check if Input was already closed).

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

IMHO the length parameter of the decryptInto method should be int from the beginning - and if not it should be checked around line 236 (0<=x<=Integer.MAX_VALUE)

yeah agreed. this is a strong enforcement.

Signed-off-by: Gulshan <kumargu@amazon.com>
@salyh
Copy link
Copy Markdown
Contributor

salyh commented Jun 24, 2025

@salyh looks like opensearch-project/OpenSearch#18085 is ready. I will rebase by Opensearch core against it and try out replacing OpenSSL parts with SunJCE.

The issue with the Java standard Cipher architecture is that it can get hard to do a real in-place decryption. Had some problems with passing native/direct ByteBuffers into the doFinal() or update() methods. Maybe you have more luck :-)

@kumargu Watch out for this netty/netty#15324 (comment) openjdk/jdk#25324 when dealing with ByteBuffers derived from MemorySegments in doFinal()/update() in Java <25

@kumargu
Copy link
Copy Markdown
Collaborator

kumargu commented Jun 24, 2025

@salyh looks like opensearch-project/OpenSearch#18085 is ready. I will rebase by Opensearch core against it and try out replacing OpenSSL parts with SunJCE.

The issue with the Java standard Cipher architecture is that it can get hard to do a real in-place decryption. Had some problems with passing native/direct ByteBuffers into the doFinal() or update() methods. Maybe you have more luck :-)

@kumargu Watch out for this netty/netty#15324 (comment) openjdk/jdk#25324 when dealing with ByteBuffers derived from MemorySegments in doFinal()/update() in Java <25

we are already doing it here. Am i missing something?

@salyh
Copy link
Copy Markdown
Contributor

salyh commented Jun 24, 2025

@salyh looks like opensearch-project/OpenSearch#18085 is ready. I will rebase by Opensearch core against it and try out replacing OpenSSL parts with SunJCE.

The issue with the Java standard Cipher architecture is that it can get hard to do a real in-place decryption. Had some problems with passing native/direct ByteBuffers into the doFinal() or update() methods. Maybe you have more luck :-)

@kumargu Watch out for this netty/netty#15324 (comment) openjdk/jdk#25324 when dealing with ByteBuffers derived from MemorySegments in doFinal()/update() in Java <25

we are already doing it here. Am i missing something?

Depends on how the MemorySegment is created/scoped. The issue arise when its a shared one. Global and confined seems working.

@kumargu
Copy link
Copy Markdown
Collaborator

kumargu commented Jun 24, 2025

Ok. I will check with shared arena again, currently we are using confined which works. Shared arena hasn't be super performant (i need to figure out why), but AFAIR, i had worked for me.

@salyh
Copy link
Copy Markdown
Contributor

salyh commented Jun 24, 2025

Ok. I will check with shared arena again, currently we are using confined which works. Shared arena hasn't be super performant (i need to figure out why), but AFAIR, i had worked for me.

and i just noticed you copy the bytes first to byte[] instead of using the bytebuffer directly in update(bytebuffer, bytebuffer)

@kumargu
Copy link
Copy Markdown
Collaborator

kumargu commented Jun 24, 2025

This PR will be still open for comments but I think it's time to merge this so that others can start contributing on top of it and address comments.Next week a member from my team will add CI flows and figure out how we can run Opensearch core tests with enc directory.

I will create issues from comments which are already not addressed in this PR and we will work upon them in parralel. But it's time to get this merged because of its growing size of changes.

I have few more ideas on MMAP directory, so I am gonna restrain from unit tests for an another week and see how it shapes eventually.

@kumargu kumargu merged commit 7a63d97 into opensearch-project:main Jun 25, 2025
1 check passed
* - READONCE is just DEFAULT with SEQUENTIAL
*/

public static int getMAdviseFlags(IOContext context, String fileName) {
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are we extending Lucene's IOContext here?

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yes. but we will also talk to Lucene on the best way to consume Lucene IO context, given MADVISE_RANDOM had some problems recenlty.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think the madvise has no real value here, because you consume using a copy-on-write private segment. I'd remove that completely.

If you move to your own, hand written buffer cache as suggested in other issue, then you can implement readahead and madvise on your own.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

On The Fly Encryption Feature Proposal

6 participants