diff --git a/.env b/.env
index e00b705a83968..c74af55f76181 100644
--- a/.env
+++ b/.env
@@ -5,11 +5,11 @@ IMAGE_ARCH=amd64
OS_NAME=ubuntu22.04
# for services.builder.image in docker-compose.yml
-DATE_VERSION=20240620-5be9929
-LATEST_DATE_VERSION=20240620-5be9929
+DATE_VERSION=20240816-1275005
+LATEST_DATE_VERSION=20240816-1275005
# for services.gpubuilder.image in docker-compose.yml
-GPU_DATE_VERSION=20240520-c35eaaa
-LATEST_GPU_DATE_VERSION=20240520-c35eaaa
+GPU_DATE_VERSION=20240806-d8668fe
+LATEST_GPU_DATE_VERSION=20240806-d8668fe
# for other services in docker-compose.yml
MINIO_ADDRESS=minio:9000
diff --git a/.github/actions/cache-save/action.yaml b/.github/actions/cache-save/action.yaml
index 89d973b32adcd..73e95f6f35d80 100644
--- a/.github/actions/cache-save/action.yaml
+++ b/.github/actions/cache-save/action.yaml
@@ -12,13 +12,6 @@ inputs:
runs:
using: "composite"
steps:
- - name: Generate CCache Hash
- env:
- CORE_HASH: ${{ hashFiles( 'internal/core/**/*.cpp', 'internal/core/**/*.cc', 'internal/core/**/*.c', 'internal/core/**/*.h', 'internal/core/**/*.hpp', 'internal/core/**/CMakeLists.txt') }}
- run: |
- echo "corehash=${CORE_HASH}" >> $GITHUB_ENV
- echo "Set CCache hash to ${CORE_HASH}"
- shell: bash
- name: Cache CCache Volumes
if: ${{ inputs.kind == 'all' || inputs.kind == 'cpp' }}
uses: actions/cache/save@v4
diff --git a/.github/actions/macos-cache-restore/action.yaml b/.github/actions/macos-cache-restore/action.yaml
new file mode 100644
index 0000000000000..e515bd9f02018
--- /dev/null
+++ b/.github/actions/macos-cache-restore/action.yaml
@@ -0,0 +1,30 @@
+name: 'Milvus Cache'
+description: ''
+runs:
+ using: "composite"
+ steps:
+ - name: 'Generate CCache Hash'
+ env:
+ CORE_HASH: ${{ hashFiles( 'internal/core/**/*.cpp', 'internal/core/**/*.cc', 'internal/core/**/*.c', 'internal/core/**/*.h', 'internal/core/**/*.hpp', 'internal/core/**/CMakeLists.txt') }}
+ run: |
+ echo "corehash=${CORE_HASH}" >> $GITHUB_ENV
+ echo "Set CCache hash to ${CORE_HASH}"
+ shell: bash
+ - name: Mac Cache CCache Volumes
+ uses: actions/cache/restore@v4
+ with:
+ path: /var/tmp/ccache
+ key: macos-ccache-${{ env.corehash }}
+ restore-keys: macos-ccache-
+ - name: Mac Cache Go Mod Volumes
+ uses: actions/cache/restore@v4
+ with:
+ path: ~/go/pkg/mod
+ key: macos-go-mod-${{ hashFiles('**/go.sum') }}
+ restore-keys: macos-go-mod-
+ - name: Mac Cache Conan Packages
+ uses: actions/cache/restore@v4
+ with:
+ path: ~/.conan
+ key: macos-conan-${{ hashFiles('internal/core/conanfile.*') }}
+ restore-keys: macos-conan-
diff --git a/.github/actions/macos-cache-save/action.yaml b/.github/actions/macos-cache-save/action.yaml
new file mode 100644
index 0000000000000..e7da248414146
--- /dev/null
+++ b/.github/actions/macos-cache-save/action.yaml
@@ -0,0 +1,40 @@
+name: 'Milvus Cache'
+description: ''
+inputs:
+ os:
+ description: 'OS name'
+ required: true
+ default: 'ubuntu20.04'
+ kind:
+ description: 'Cache kind'
+ required: false
+ default: 'all'
+runs:
+ using: "composite"
+ steps:
+ - name: Generate CCache Hash
+ env:
+ CORE_HASH: ${{ hashFiles( 'internal/core/**/*.cpp', 'internal/core/**/*.cc', 'internal/core/**/*.c', 'internal/core/**/*.h', 'internal/core/**/*.hpp', 'internal/core/**/CMakeLists.txt') }}
+ run: |
+ echo "corehash=${CORE_HASH}" >> $GITHUB_ENV
+ echo "Set CCache hash to ${CORE_HASH}"
+ shell: bash
+ - name: Mac Cache CCache Volumes
+ uses: actions/cache/save@v4
+ with:
+ path: /var/tmp/ccache
+ key: macos-ccache-${{ env.corehash }}
+ restore-keys: macos-ccache-
+ - name: Mac Cache Go Mod Volumes
+ uses: actions/cache/save@v4
+ with:
+ path: ~/go/pkg/mod
+ key: macos-go-mod-${{ hashFiles('**/go.sum') }}
+ restore-keys: macos-go-mod-
+ - name: Mac Cache Conan Packages
+ uses: actions/cache/save@v4
+ with:
+ path: ~/.conan
+ key: macos-conan-${{ hashFiles('internal/core/conanfile.*') }}
+ restore-keys: macos-conan-
+
diff --git a/.github/mergify.yml b/.github/mergify.yml
index 9b67142e47b39..d3d8d3b8e5802 100644
--- a/.github/mergify.yml
+++ b/.github/mergify.yml
@@ -1,4 +1,4 @@
-shared:
+misc:
- &source_code_files files~=^(?=.*((\.(go|h|cpp)|go.sum|go.mod|CMakeLists.txt|conanfile\.*))).*$
- &no_source_code_files -files~=^(?=.*((\.(go|h|cpp)|go.sum|go.mod|CMakeLists.txt|conanfile\.*))).*$
- when_build_and_test_status_successs: &Build_AND_TEST_STATUS_SUCESS_ON_UBUNTU_20_OR_UBUNTU_22
@@ -7,14 +7,20 @@ shared:
- when_build_and_test_status_failed: &Build_AND_TEST_STATUS_FAILED_ON_UBUNTU_20_OR_UBUNTU_22
- &failed_on_ubuntu_20 'check-failure=Build and test AMD64 Ubuntu 20.04'
- &failed_on_ubuntu_22 'check-failure=Build and test AMD64 Ubuntu 22.04'
+ - when_go_sdk_status_success: &WHEN_GO_SDK_STATUS_SUCCESS
+ - 'status-success=go-sdk'
+ - 'status-success=milvus-sdk-go '
+ - branch: &BRANCHES
+ # In this pull request, the changes are based on the master branch
+ - &MASTER_BRANCH base=master
+ # In this pull request, the changes are based on the 2.x(or 2.x.x) branch
+ - &2X_BRANCH base~=^2(\.\d+){1,2}$
pull_request_rules:
- name: Add needs-dco label when DCO check failed
conditions:
- - or:
- - base=master
- - base=sql_beta
- - base~=^2(\.\d+){1,2}$
+ # branch condition: in this pull request, the changes are based on any branch referenced by BRANCHES
+ - or: *BRANCHES
- -status-success=DCO
actions:
label:
@@ -28,10 +34,8 @@ pull_request_rules:
- name: Add dco-passed label when DCO check passed
conditions:
- - or:
- - base=master
- - base~=^2(\.\d+){1,2}$
- - base=sql_beta
+ # branch condition: in this pull request, the changes are based on any branch referenced by BRANCHES
+ - or: *BRANCHES
- status-success=DCO
actions:
label:
@@ -40,17 +44,15 @@ pull_request_rules:
add:
- dco-passed
- - name: Test passed for code changed-master
+ - name: Test passed for code changed on master
conditions:
- - or:
- - base=sql_beta
- - base=master
- - base~=^2(\.\d+){1,2}$
+ - *MASTER_BRANCH
- or: *Build_AND_TEST_STATUS_SUCESS_ON_UBUNTU_20_OR_UBUNTU_22
+ - or: *WHEN_GO_SDK_STATUS_SUCCESS
- 'status-success=UT for Cpp'
- 'status-success=UT for Go'
- 'status-success=Integration Test'
- # - 'status-success=Code Checker AMD64 Ubuntu 22.04'
+ - 'status-success=Code Checker AMD64 Ubuntu 22.04'
# - 'status-success=Code Checker MacOS 12'
# - 'status-success=Code Checker Amazonlinux 2023'
- 'status-success=cpu-e2e'
@@ -60,10 +62,10 @@ pull_request_rules:
label:
add:
- ci-passed
- - name: Test passed for code changed -2.*.*
+ - name: Test passed for code changed on 2.* branch
conditions:
- - base~=^2(\.\d+){2}$
- # - 'status-success=Code Checker AMD64 Ubuntu 22.04'
+ - *2X_BRANCH
+ - 'status-success=Code Checker AMD64 Ubuntu 22.04'
- or: *Build_AND_TEST_STATUS_SUCESS_ON_UBUNTU_20_OR_UBUNTU_22
- 'status-success=UT for Cpp'
- 'status-success=UT for Go'
@@ -80,10 +82,8 @@ pull_request_rules:
- name: Test passed for tests changed
conditions:
- - or:
- - base=master
- - base=sql_beta
- - base~=^2(\.\d+){1,2}$
+ # branch condition: in this pull request, the changes are based on any branch referenced by BRANCHES
+ - or: *BRANCHES
- -files~=^(?!tests\/python_client).+
- 'status-success=cpu-e2e'
actions:
@@ -93,10 +93,8 @@ pull_request_rules:
- name: Test passed for docs changed only
conditions:
- - or:
- - base=master
- - base=sql_beta
- - base~=^2(\.\d+){1,2}$
+ # branch condition: in this pull request, the changes are based on any branch referenced by BRANCHES
+ - or: *BRANCHES
- -files~=^(?!.*\.(md)).*$
actions:
label:
@@ -105,10 +103,8 @@ pull_request_rules:
- name: Test passed for non go or c++ code changed
conditions:
- - or:
- - base=master
- - base=sql_beta
- - base~=^2(\.\d+){1,2}$
+ # branch condition: in this pull request, the changes are based on any branch referenced by BRANCHES
+ - or: *BRANCHES
- 'status-success=cpu-e2e'
- *no_source_code_files
actions:
@@ -118,12 +114,10 @@ pull_request_rules:
- name: Test passed for go unittest code changed-master
conditions:
- - or:
- - base=master
- - base=sql_beta
- - base~=^2(\.\d+){1,2}$
+ # branch condition: in this pull request, the changes are based on any branch referenced by BRANCHES
+ - or: *BRANCHES
- or: *Build_AND_TEST_STATUS_SUCESS_ON_UBUNTU_20_OR_UBUNTU_22
- # - 'status-success=Code Checker AMD64 Ubuntu 22.04'
+ - 'status-success=Code Checker AMD64 Ubuntu 22.04'
# - 'status-success=Code Checker MacOS 12'
# - 'status-success=Code Checker Amazonlinux 2023'
- 'status-success=UT for Go'
@@ -137,9 +131,9 @@ pull_request_rules:
- name: Test passed for go unittest code changed -2.2.*
conditions:
+ - *2X_BRANCH
- or: *Build_AND_TEST_STATUS_SUCESS_ON_UBUNTU_20_OR_UBUNTU_22
- - base~=^2\.2\.\d+$
- # - 'status-success=Code Checker AMD64 Ubuntu 22.04'
+ - 'status-success=Code Checker AMD64 Ubuntu 22.04'
# - 'status-success=Code Checker MacOS 12'
- -files~=^(?!internal\/.*_test\.go).*$
actions:
@@ -149,10 +143,8 @@ pull_request_rules:
- name: Test passed for mergify changed
conditions:
- - or:
- - base=master
- - base=sql_beta
- - base~=^2(\.\d+){1,2}$
+ # branch condition: in this pull request, the changes are based on any branch referenced by BRANCHES
+ - or: *BRANCHES
- -files~=^(?!\.github\/mergify\.yml).*$
actions:
label:
@@ -161,10 +153,8 @@ pull_request_rules:
- name: Test passed for title skip e2e
conditions:
- - or:
- - base=master
- - base=sql_beta
- - base~=^2(\.\d+){1,2}$
+ # branch condition: in this pull request, the changes are based on any branch referenced by BRANCHES
+ - or: *BRANCHES
- title~=\[skip e2e\]
- label=kind/enhancement
- *no_source_code_files
@@ -175,10 +165,8 @@ pull_request_rules:
- name: Blocking PR if missing a related issue or doesn't have kind/enhancement label
conditions:
- - or:
- - base=master
- - base=sql_beta
- - base~=^2(\.\d+){1,2}$
+ # branch condition: in this pull request, the changes are based on any branch referenced by BRANCHES
+ - or: *BRANCHES
- and:
- -body~=\#[0-9]{1,6}(\s+|$)
- -body~=https://github.com/milvus-io/milvus/issues/[0-9]{1,6}(\s+|$)
@@ -206,10 +194,8 @@ pull_request_rules:
- name: Dismiss block label if related issue be added into PR
conditions:
- and:
- - or:
- - base=master
- - base=sql_beta
- - base~=^2(\.\d+){1,2}$
+ # branch condition: in this pull request, the changes are based on any branch referenced by BRANCHES
+ - or: *BRANCHES
- or:
- body~=\#[0-9]{1,6}(\s+|$)
- body~=https://github.com/milvus-io/milvus/issues/[0-9]{1,6}(\s+|$)
@@ -220,7 +206,7 @@ pull_request_rules:
- name: Blocking PR if missing a related master PR or doesn't have kind/branch-feature label
conditions:
- - base~=^2(\.\d+){1,2}$
+ - *2X_BRANCH
- and:
- -body~=pr\:\ \#[0-9]{1,6}(\s+|$)
- -body~=https://github.com/milvus-io/milvus/pull/[0-9]{1,6}(\s+|$)
@@ -236,7 +222,7 @@ pull_request_rules:
- name: Dismiss block label if related pr be added into PR
conditions:
- - base~=^2(\.\d+){1,2}$
+ - *2X_BRANCH
- or:
- body~=pr\:\ \#[0-9]{1,6}(\s+|$)
- body~=https://github.com/milvus-io/milvus/pull/[0-9]{1,6}(\s+|$)
@@ -248,10 +234,8 @@ pull_request_rules:
- name: Dismiss block label if automated create PR
conditions:
- - or:
- - base=master
- - base=sql_beta
- - base~=^2(\.\d+){1,2}$
+ # branch condition: in this pull request, the changes are based on any branch referenced by BRANCHES
+ - or: *BRANCHES
- title~=\[automated\]
actions:
label:
@@ -261,13 +245,11 @@ pull_request_rules:
- name: Test passed for skip e2e-master
conditions:
- - or:
- - base=master
- - base=sql_beta
- - base~=^2(\.\d+){1,2}$
+ # branch condition: in this pull request, the changes are based on any branch referenced by BRANCHES
+ - or: *BRANCHES
- or: *Build_AND_TEST_STATUS_SUCESS_ON_UBUNTU_20_OR_UBUNTU_22
- title~=\[skip e2e\]
- # - 'status-success=Code Checker AMD64 Ubuntu 22.04'
+ - 'status-success=Code Checker AMD64 Ubuntu 22.04'
- 'status-success=UT for Cpp'
- 'status-success=UT for Go'
- 'status-success=Integration Test'
@@ -281,8 +263,8 @@ pull_request_rules:
- name: Test passed for skip e2e - 2.2.*
conditions:
+ - *2X_BRANCH
- or: *Build_AND_TEST_STATUS_SUCESS_ON_UBUNTU_20_OR_UBUNTU_22
- - base~=^2\.2\.\d+$
- title~=\[skip e2e\]
# - 'status-success=Code Checker AMD64 Ubuntu 20.04'
- 'status-success=UT for Cpp'
@@ -297,10 +279,8 @@ pull_request_rules:
- name: Assign the 'lgtm' and 'approved' labels following the successful testing of the 'Update Knowhere Commit'
conditions:
- - or:
- - base=master
- - base=sql_beta
- - base~=^2(\.\d+){1,2}$
+ # branch condition: in this pull request, the changes are based on any branch referenced by BRANCHES
+ - or: *BRANCHES
- 'title~=Update Knowhere Commit'
- label=ci-passed
actions:
@@ -311,16 +291,14 @@ pull_request_rules:
- name: Remove ci-passed label when status for code checker or ut is not success-master
conditions:
+ # branch condition: in this pull request, the changes are based on any branch referenced by BRANCHES
+ - or: *BRANCHES
- label!=manual-pass
- - or:
- - base=master
- - base=sql_beta
- - base~=^2(\.\d+){1,2}$
- *source_code_files
- or:
- *failed_on_ubuntu_20
- *failed_on_ubuntu_22
- # - 'status-success!=Code Checker AMD64 Ubuntu 22.04'
+ - 'status-success!=Code Checker AMD64 Ubuntu 22.04'
- 'status-success!=UT for Cpp'
- 'status-success!=UT for Go'
- 'status-success!=Integration Test'
@@ -352,11 +330,9 @@ pull_request_rules:
- name: Remove ci-passed label when status for jenkins job is not success
conditions:
+ # branch condition: in this pull request, the changes are based on any branch referenced by BRANCHES
+ - or: *BRANCHES
- label!=manual-pass
- - or:
- - base=master
- - base=sql_beta
- - base~=^2(\.\d+){1,2}$
- -title~=\[skip e2e\]
- files~=^(?!(.*_test\.go|.*\.md)).*$
- 'status-success!=cpu-e2e'
@@ -367,22 +343,28 @@ pull_request_rules:
- name: Add comment when jenkins job failed
conditions:
- - or:
- - base=master
- - base=sql_beta
- - base~=^2(\.\d+){1,2}$
+ # branch condition: in this pull request, the changes are based on any branch referenced by BRANCHES
+ - or: *BRANCHES
- 'check-failure=cpu-e2e'
actions:
comment:
message: |
@{{author}} E2e jenkins job failed, comment `/run-cpu-e2e` can trigger the job again.
+ - name: Add comment when go-sdk check failed
+ conditions:
+ # branch condition: in this pull request, the changes are based on any branch referenced by BRANCHES
+ - or: *BRANCHES
+ - 'check-failure=go-sdk'
+ actions:
+ comment:
+ message: |
+ @{{author}} go-sdk check failed, comment `rerun go-sdk` can trigger the job again.
+
- name: Add comment when code checker or ut failed -master
conditions:
- - or:
- - base=master
- - base~=^2(\.\d+){1,2}$
- - base=sql_beta
+ # branch condition: in this pull request, the changes are based on any branch referenced by BRANCHES
+ - or: *BRANCHES
- or:
# - 'check-failure=Code Checker AMD64 Ubuntu 20.04'
- 'check-failure=Build and test AMD64 Ubuntu 20.04'
@@ -393,7 +375,7 @@ pull_request_rules:
- name: Add comment when code checker or ut failed -2.2.*
conditions:
- - base~=^2\.2\.\d+$
+ - *2X_BRANCH
- or:
# - 'check-failure=Code Checker AMD64 Ubuntu 20.04'
- 'check-failure=Build and test AMD64 Ubuntu 20.04'
@@ -404,9 +386,8 @@ pull_request_rules:
- name: Add 'do-not-merge/invalid-pr-format' label for invalid PR titles
conditions:
- - or:
- - base=master
- - base~=^2(\.\d+){1,2}$
+ # branch condition: in this pull request, the changes are based on any branch referenced by BRANCHES
+ - or: *BRANCHES
- or:
- '-title~=^(feat:|enhance:|fix:|test:|doc:|auto:|\[automated\])'
- body=^$
@@ -449,9 +430,8 @@ pull_request_rules:
- name: Remove 'do-not-merge/invalid-pr-format' label for valid PRs
conditions:
- - or:
- - base=master
- - base~=^2(\.\d+){1,2}$
+ # branch condition: in this pull request, the changes are based on any branch referenced by BRANCHES
+ - or: *BRANCHES
- 'title~=^(feat:|enhance:|fix:|test:|doc:|auto:|\[automated\])'
- '-body=^$'
- 'label=do-not-merge/invalid-pr-format'
@@ -462,9 +442,8 @@ pull_request_rules:
- name: Label bug fix PRs
conditions:
- - or:
- - base=master
- - base~=^2(\.\d+){1,2}$
+ # branch condition: in this pull request, the changes are based on any branch referenced by BRANCHES
+ - or: *BRANCHES
- 'title~=^fix:'
actions:
label:
@@ -473,9 +452,8 @@ pull_request_rules:
- name: Label feature PRs
conditions:
- - or:
- - base=master
- - base~=^2(\.\d+){1,2}$
+ # branch condition: in this pull request, the changes are based on any branch referenced by BRANCHES
+ - or: *BRANCHES
- 'title~=^feat:'
actions:
label:
@@ -484,9 +462,8 @@ pull_request_rules:
- name: Label enhancement PRs
conditions:
- - or:
- - base=master
- - base~=^2(\.\d+){1,2}$
+ # branch condition: in this pull request, the changes are based on any branch referenced by BRANCHES
+ - or: *BRANCHES
- 'title~=^enhance:'
actions:
label:
@@ -495,9 +472,8 @@ pull_request_rules:
- name: Label test PRs
conditions:
- - or:
- - base=master
- - base~=^2(\.\d+){1,2}$
+ # branch condition: in this pull request, the changes are based on any branch referenced by BRANCHES
+ - or: *BRANCHES
- 'title~=^test:'
actions:
label:
@@ -506,9 +482,8 @@ pull_request_rules:
- name: Label doc PRs
conditions:
- - or:
- - base=master
- - base~=^2(\.\d+){1,2}$
+ # branch condition: in this pull request, the changes are based on any branch referenced by BRANCHES
+ - or: *BRANCHES
- 'title~=^doc:'
actions:
label:
diff --git a/.github/workflows/check-issue.yaml b/.github/workflows/check-issue.yaml
index 952c07641b91c..bdce82e174261 100644
--- a/.github/workflows/check-issue.yaml
+++ b/.github/workflows/check-issue.yaml
@@ -10,6 +10,7 @@ jobs:
runs-on: ubuntu-latest
env:
TITLE_PASSED: "T"
+ ISSUE_TITLE: ${{ github.event.issue.title }}
permissions:
issues: write
timeout-minutes: 20
@@ -19,7 +20,8 @@ jobs:
- name: Check Issue
shell: bash
run: |
- echo Issue title: ${{ github.event.issue.title }}
+ echo "Issue title: ${ISSUE_TITLE//\"/\\\"}"
+
cat >> check_title.py << EOF
import re
import sys
@@ -32,7 +34,7 @@ jobs:
print("TITLE_PASSED=T")
EOF
- python3 check_title.py "${{ github.event.issue.title }}" >> "$GITHUB_ENV"
+ python3 check_title.py "${ISSUE_TITLE//\"/\\\"}" >> "$GITHUB_ENV"
cat $GITHUB_ENV
- name: Check env
diff --git a/.github/workflows/code-checker.yaml b/.github/workflows/code-checker.yaml
index 0f49d40b93cfb..2a622366d6eaa 100644
--- a/.github/workflows/code-checker.yaml
+++ b/.github/workflows/code-checker.yaml
@@ -16,6 +16,7 @@ on:
- 'cmd/**'
- 'build/**'
- 'tests/integration/**'
+ - 'tests/go_client/**'
- '.github/workflows/code-checker.yaml'
- '.env'
- docker-compose.yml
@@ -52,16 +53,22 @@ jobs:
- name: Checkout
uses: actions/checkout@v2
- name: Download Caches
- uses: ./.github/actions/cache
+ uses: ./.github/actions/cache-restore
with:
os: 'ubuntu22.04'
- name: Code Check
env:
OS_NAME: 'ubuntu22.04'
run: |
- ./build/builder.sh /bin/bash -c "make check-proto-product && make verifiers"
+ ./build/builder.sh /bin/bash -c "git config --global --add safe.directory /go/src/github.com/milvus-io/milvus && make check-proto-product && make verifiers"
+ - name: Save Caches
+ uses: ./.github/actions/cache-save
+ if: github.event_name != 'pull_request'
+ with:
+ os: 'ubuntu22.04'
amazonlinux:
+ if: ${{ false }} # skip for now
name: Code Checker Amazonlinux 2023
# Run in amazonlinux docker
runs-on: ubuntu-latest
@@ -79,15 +86,21 @@ jobs:
- name: Checkout
uses: actions/checkout@v2
- name: Download Caches
- uses: ./.github/actions/cache
+ uses: ./.github/actions/cache-restore
with:
os: 'amazonlinux2023'
- name: Code Check
run: |
sed -i 's/ubuntu22.04/amazonlinux2023/g' .env
./build/builder.sh /bin/bash -c "make install"
+ - name: Save Caches
+ uses: ./.github/actions/cache-save
+ if: github.event_name != 'pull_request'
+ with:
+ os: 'amazonlinux2023'
rockylinux:
+ if: ${{ false }} # skip for now
name: Code Checker rockylinux8
# Run in amazonlinux docker
runs-on: ubuntu-latest
@@ -105,10 +118,15 @@ jobs:
- name: Checkout
uses: actions/checkout@v2
- name: Download Caches
- uses: ./.github/actions/cache
+ uses: ./.github/actions/cache-restore
with:
os: 'rockylinux8'
- name: Code Check
run: |
sed -i 's/ubuntu22.04/rockylinux8/g' .env
./build/builder.sh /bin/bash -c "make install"
+ - name: Save Caches
+ uses: ./.github/actions/cache-save
+ if: github.event_name != 'pull_request'
+ with:
+ os: 'rockylinux8'
diff --git a/.github/workflows/delete_comments.yaml b/.github/workflows/delete_comments.yaml
new file mode 100644
index 0000000000000..a7943b0c7af71
--- /dev/null
+++ b/.github/workflows/delete_comments.yaml
@@ -0,0 +1,34 @@
+# via https://github.com/zed-industries/zed/blob/main/.github/workflows/delete_comments.yml
+name: Delete Mediafire Comments
+
+on:
+ issue_comment:
+ types: [created]
+
+permissions:
+ issues: write
+
+jobs:
+ delete_comment:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Check for specific strings in comment
+ id: check_comment
+ uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7
+ with:
+ script: |
+ const comment = context.payload.comment.body;
+ const triggerStrings = ['www.mediafire.com'];
+ return triggerStrings.some(triggerString => comment.includes(triggerString));
+
+ - name: Delete comment if it contains any of the specific strings
+ if: steps.check_comment.outputs.result == 'true'
+ uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7
+ with:
+ script: |
+ const commentId = context.payload.comment.id;
+ await github.rest.issues.deleteComment({
+ owner: context.repo.owner,
+ repo: context.repo.repo,
+ comment_id: commentId
+ });
\ No newline at end of file
diff --git a/.github/workflows/deploy-test.yaml b/.github/workflows/deploy-test.yaml
index 7271b9feede6e..c5e8750d82171 100644
--- a/.github/workflows/deploy-test.yaml
+++ b/.github/workflows/deploy-test.yaml
@@ -102,9 +102,9 @@ jobs:
wget https://github.com/milvus-io/milvus/releases/download/${{ env.PREVIOUS_RELEASE_VERSION }}/milvus-${{ matrix.mode }}-docker-compose.yml -O docker-compose.yml;
replace_image_tag ${{ env.OLD_IMAGE_REPO }} ${{ env.OLD_IMAGE_TAG }};
fi
- docker-compose up -d
+ docker compose up -d
bash ../check_healthy.sh
- docker-compose ps -a
+ docker compose ps -a
sleep 10s
- name: Run first test
timeout-minutes: 15
@@ -130,7 +130,7 @@ jobs:
shell: bash
working-directory: tests/python_client/deploy/${{ matrix.mode }}
run: |
- docker-compose ps -a || true
+ docker compose ps -a || true
mkdir -p logs/first_deploy
bash ../../../scripts/export_log_docker.sh ./logs/first_deploy || echo "export logs failed"
- name: Second Milvus deployment
@@ -140,15 +140,15 @@ jobs:
run: |
source ../utils.sh
if [ ${{ matrix.task }} == "reinstall" ]; then
- docker-compose restart
+ docker compose restart
fi
if [ ${{ matrix.task }} == "upgrade" ]; then
wget https://raw.githubusercontent.com/milvus-io/milvus/master/deployments/docker/${{ matrix.mode }}/docker-compose.yml -O docker-compose.yml;
replace_image_tag ${{ env.NEW_IMAGE_REPO }} ${{ env.NEW_IMAGE_TAG }};
- docker-compose up -d;
+ docker compose up -d;
fi
bash ../check_healthy.sh
- docker-compose ps -a
+ docker compose ps -a
echo "sleep 120s for the second deployment to be ready"
sleep 120s
@@ -169,7 +169,7 @@ jobs:
shell: bash
working-directory: tests/python_client/deploy/${{ matrix.mode }}
run: |
- docker-compose ps -a || true
+ docker compose ps -a || true
mkdir -p logs/second_deploy
bash ../../../scripts/export_log_docker.sh ./logs/second_deploy || echo "export logs failed"
@@ -181,9 +181,9 @@ jobs:
echo "restart docker service"
sudo systemctl restart docker
sleep 20s
- docker-compose up -d
+ docker compose up -d
bash ../check_healthy.sh
- docker-compose ps -a
+ docker compose ps -a
echo "sleep 120s for the deployment to be ready after docker restart"
sleep 120s
@@ -206,7 +206,7 @@ jobs:
shell: bash
working-directory: tests/python_client/deploy/${{ matrix.mode }}
run: |
- docker-compose ps -a || true
+ docker compose ps -a || true
mkdir -p logs/second_deploy
bash ../../../scripts/export_log_docker.sh ./logs/third_deploy || echo "export logs failed"
diff --git a/.github/workflows/mac.yaml b/.github/workflows/mac.yaml
index ccb21ebaab5af..561ae78e67a22 100644
--- a/.github/workflows/mac.yaml
+++ b/.github/workflows/mac.yaml
@@ -15,6 +15,7 @@ on:
- 'cmd/**'
- 'build/**'
- 'tests/integration/**'
+ - 'tests/go_client/**'
- '.github/workflows/mac.yaml'
- '.env'
- docker-compose.yml
@@ -37,18 +38,6 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v2
- - name: 'Generate CCache Hash'
- env:
- CORE_HASH: ${{ hashFiles( 'internal/core/**/*.cpp', 'internal/core/**/*.cc', 'internal/core/**/*.c', 'internal/core/**/*.h', 'internal/core/**/*.hpp', 'internal/core/**/CMakeLists.txt') }}
- run: |
- echo "corehash=${CORE_HASH}" >> $GITHUB_ENV
- echo "Set CCache hash to ${CORE_HASH}"
- - name: Mac Cache CCache Volumes
- uses: actions/cache@v3
- with:
- path: /var/tmp/ccache
- key: macos-ccache-${{ env.corehash }}
- restore-keys: macos-ccache-
- name: Setup Python environment
uses: actions/setup-python@v4
with:
@@ -56,19 +45,9 @@ jobs:
- name: Setup Go environment
uses: actions/setup-go@v2.2.0
with:
- go-version: '~1.21.10'
- - name: Mac Cache Go Mod Volumes
- uses: actions/cache@v3
- with:
- path: ~/go/pkg/mod
- key: macos-go-mod-${{ hashFiles('**/go.sum') }}
- restore-keys: macos-go-mod-
- - name: Mac Cache Conan Packages
- uses: actions/cache@v3
- with:
- path: ~/.conan
- key: macos-conan-${{ hashFiles('internal/core/conanfile.*') }}
- restore-keys: macos-conan-
+ go-version: '~1.21.11'
+ - name: Download Caches
+ uses: ./.github/actions/macos-cache-restore
- name: Code Check
env:
CCACHE_DIR: /var/tmp/ccache
@@ -82,7 +61,7 @@ jobs:
fi
ls -alh /var/tmp/ccache
brew install libomp ninja openblas ccache pkg-config
- pip3 install conan==1.61.0
+ pip3 install conan==1.64.1
if [[ ! -d "/usr/local/opt/llvm" ]]; then
ln -s /usr/local/opt/llvm@14 /usr/local/opt/llvm
fi
@@ -93,3 +72,6 @@ jobs:
with:
name: cmake-log
path: cmake_build/CMakeFiles/*.log
+ - name: Save Caches
+ uses: ./.github/actions/macos-cache-save
+ if: github.event_name != 'pull_request'
diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml
index 41b1ead93c935..24257d183cc6f 100644
--- a/.github/workflows/main.yaml
+++ b/.github/workflows/main.yaml
@@ -87,7 +87,7 @@ jobs:
- name: 'Setup Use USE_ASAN'
if: steps.changed-files-cpp.outputs.any_changed == 'true'
run: |
- echo "useasan=ON" >> $GITHUB_ENV
+ echo "useasan=OFF" >> $GITHUB_ENV
echo "Setup USE_ASAN to true since cpp file(s) changed"
- name: Download Caches
uses: ./.github/actions/cache-restore
@@ -141,7 +141,7 @@ jobs:
- name: Start Service
shell: bash
run: |
- docker-compose up -d azurite
+ docker compose up -d azurite
- name: UT
run: |
chmod +x build/builder.sh
@@ -167,7 +167,7 @@ jobs:
name: UT for Go
needs: Build
runs-on: ubuntu-latest
- timeout-minutes: 60
+ timeout-minutes: 90
steps:
- name: Maximize build space
uses: easimon/maximize-build-space@master
@@ -193,7 +193,7 @@ jobs:
- name: Start Service
shell: bash
run: |
- docker-compose up -d pulsar etcd minio azurite
+ docker compose up -d pulsar etcd minio azurite
- name: UT
run: |
chmod +x build/builder.sh
@@ -245,7 +245,7 @@ jobs:
- name: Start Service
shell: bash
run: |
- docker-compose up -d pulsar etcd minio
+ docker compose up -d pulsar etcd minio
- name: IntegrationTest
run: |
chmod +x build/builder.sh
diff --git a/.github/workflows/publish-builder.yaml b/.github/workflows/publish-builder.yaml
index 573b8bf352173..2a47f2d2c5abd 100644
--- a/.github/workflows/publish-builder.yaml
+++ b/.github/workflows/publish-builder.yaml
@@ -28,7 +28,7 @@ jobs:
strategy:
fail-fast: false
matrix:
- os: [ubuntu22.04, amazonlinux2023, rockylinux8]
+ os: [ubuntu20.04, ubuntu22.04, amazonlinux2023, rockylinux8]
env:
OS_NAME: ${{ matrix.os }}
IMAGE_ARCH: ${{ matrix.arch }}
diff --git a/.github/workflows/publish-test-images.yaml b/.github/workflows/publish-test-images.yaml
index 5587389d63f42..83a4838e48936 100644
--- a/.github/workflows/publish-test-images.yaml
+++ b/.github/workflows/publish-test-images.yaml
@@ -39,14 +39,14 @@ jobs:
shell: bash
working-directory: tests/docker
run: |
- docker-compose pull --ignore-pull-failures pytest
+ docker compose pull pytest
- name: Docker Build
shell: bash
working-directory: tests/docker
run: |
- IMAGE_TAG=${{ steps.extracter.outputs.version }}-${{ steps.extracter.outputs.sha_short }} docker-compose build pytest
+ IMAGE_TAG=${{ steps.extracter.outputs.version }}-${{ steps.extracter.outputs.sha_short }} docker compose build pytest
export LATEST_IMAGE_TAG=${{ steps.extracter.outputs.version }}-${{ steps.extracter.outputs.sha_short }}
- IMAGE_TAG=latest docker-compose build pytest
+ IMAGE_TAG=latest docker compose build pytest
- name: Docker Push
if: success() && github.event_name == 'push' && github.repository == 'milvus-io/milvus'
continue-on-error: true
@@ -55,8 +55,8 @@ jobs:
run: |
docker login -u ${{ secrets.DOCKERHUB_USER }} \
-p ${{ secrets.DOCKERHUB_TOKEN }}
- IMAGE_TAG=${{ steps.extracter.outputs.version }}-${{ steps.extracter.outputs.sha_short }} docker-compose push pytest
- IMAGE_TAG=latest docker-compose push pytest
+ IMAGE_TAG=${{ steps.extracter.outputs.version }}-${{ steps.extracter.outputs.sha_short }} docker compose push pytest
+ IMAGE_TAG=latest docker compose push pytest
echo "Push pytest image Succeeded"
- name: Update Pytest Image Changes
if: success() && github.event_name == 'push' && github.repository == 'milvus-io/milvus'
diff --git a/.golangci.yml b/.golangci.yml
index 991826354d388..f6cf44dc6a097 100644
--- a/.golangci.yml
+++ b/.golangci.yml
@@ -123,6 +123,8 @@ linters-settings:
desc: not allowed, use github.com/tikv/client-go/v2/txnkv
- pkg: "github.com/gogo/protobuf"
desc: "not allowed, gogo protobuf is deprecated"
+ - pkg: "github.com/golang/protobuf/proto"
+ desc: "not allowed, protobuf v1 is deprecated, use google.golang.org/protobuf/proto instead"
forbidigo:
forbid:
- '^time\.Tick$'
diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md
index 99bfc0f1546ae..4904f976de966 100644
--- a/DEVELOPMENT.md
+++ b/DEVELOPMENT.md
@@ -71,22 +71,22 @@ You can use Vscode to integrate C++ and Go together. Please replace user.setting
```bash
{
"go.toolsEnvVars": {
- "PKG_CONFIG_PATH": "/Users/zilliz/milvus/internal/core/output/lib/pkgconfig:/Users/zilliz/workspace/milvus/internal/core/output/lib64/pkgconfig",
- "LD_LIBRARY_PATH": "/Users/zilliz/workspace/milvus/internal/core/output/lib:/Users/zilliz/workspace/milvus/internal/core/output/lib64",
- "RPATH": "/Users/zilliz/workspace/milvus/internal/core/output/lib:/Users/zilliz/workspace/milvus/internal/core/output/lib64"
+ "PKG_CONFIG_PATH": "${env:PKG_CONFIG_PATH}:${workspaceFolder}/internal/core/output/lib/pkgconfig:${workspaceFolder}/internal/core/output/lib64/pkgconfig",
+ "LD_LIBRARY_PATH": "${env:LD_LIBRARY_PATH}:${workspaceFolder}/internal/core/output/lib:${workspaceFolder}/internal/core/output/lib64",
+ "RPATH": "${env:RPATH}:${workspaceFolder}/internal/core/output/lib:${workspaceFolder}/internal/core/output/lib64",
},
"go.testEnvVars": {
- "PKG_CONFIG_PATH": "/Users/zilliz/workspace/milvus/internal/core/output/lib/pkgconfig:/Users/zilliz/workspace/milvus/internal/core/output/lib64/pkgconfig",
- "LD_LIBRARY_PATH": "/Users/zilliz/workspace/milvus/internal/core/output/lib:/Users/zilliz/workspace/milvus/internal/core/output/lib64",
- "RPATH": "/Users/zilliz/workspace/milvus/internal/core/output/lib:/Users/zilliz/workspace/milvus/internal/core/output/lib64"
+ "PKG_CONFIG_PATH": "${env:PKG_CONFIG_PATH}:${workspaceFolder}/internal/core/output/lib/pkgconfig:${workspaceFolder}/internal/core/output/lib64/pkgconfig",
+ "LD_LIBRARY_PATH": "${env:LD_LIBRARY_PATH}:${workspaceFolder}/internal/core/output/lib:${workspaceFolder}/internal/core/output/lib64",
+ "RPATH": "${env:RPATH}:${workspaceFolder}/internal/core/output/lib:${workspaceFolder}/internal/core/output/lib64",
},
"go.buildFlags": [
- "-ldflags=-r /Users/zilliz/workspace/milvus/internal/core/output/lib"
+ "-ldflags=-r=/Users/zilliz/workspace/milvus/internal/core/output/lib"
],
"terminal.integrated.env.linux": {
- "PKG_CONFIG_PATH": "/Users/zilliz/workspace/milvus/internal/core/output/lib/pkgconfig:/Users/zilliz/workspace/milvus/internal/core/output/lib64/pkgconfig",
- "LD_LIBRARY_PATH": "/Users/zilliz/workspace/milvus/internal/core/output/lib:/Users/zilliz/workspace/milvus/internal/core/output/lib64",
- "RPATH": "/Users/zilliz/workspace/milvus/internal/core/output/lib:/Users/zilliz/workspace/milvus/internal/core/output/lib64"
+ "PKG_CONFIG_PATH": "${env:PKG_CONFIG_PATH}:${workspaceFolder}/internal/core/output/lib/pkgconfig:${workspaceFolder}/internal/core/output/lib64/pkgconfig",
+ "LD_LIBRARY_PATH": "${env:LD_LIBRARY_PATH}:${workspaceFolder}/internal/core/output/lib:${workspaceFolder}/internal/core/output/lib64",
+ "RPATH": "${env:RPATH}:${workspaceFolder}/internal/core/output/lib:${workspaceFolder}/internal/core/output/lib64",
},
"go.useLanguageServer": true,
"gopls": {
@@ -94,7 +94,7 @@ You can use Vscode to integrate C++ and Go together. Please replace user.setting
},
"go.formatTool": "gofumpt",
"go.lintTool": "golangci-lint",
- "go.testTags": "dynamic",
+ "go.testTags": "test,dynamic",
"go.testTimeout": "10m"
}
```
@@ -164,7 +164,7 @@ Milvus uses Conan to manage third-party dependencies for c++.
Install Conan
```shell
-pip install conan==1.61.0
+pip install conan==1.64.1
```
Note: Conan version 2.x is not currently supported, please use version 1.61.
@@ -195,6 +195,12 @@ To build the Milvus project, run the following command:
$ make
```
+Milvus uses `conan` to manage 3rd-party dependencies. `conan` will check the consistency of these dependencies every time you run `make`. This process can take a considerable amount of time, especially if the network is poor. If you make sure that the 3rd-party dependencies are consistent, you can use the following command to skip this step:
+
+```shell
+$ make SKIP_3RDPARTY=1
+```
+
If this command succeeds, you will now have an executable at `bin/milvus` in your Milvus project directory.
If you want to run the `bin/milvus` executable on the host machine, you need to set `LD_LIBRARY_PATH` temporarily:
@@ -238,15 +244,15 @@ sudo apt install -y clang-format clang-tidy ninja-build gcc g++ curl zip unzip t
```bash
# Verify python3 version, need python3 version > 3.8 and version <= 3.11
python3 --version
-# pip install conan 1.61.0
-pip3 install conan==1.61.0
+# pip install conan 1.64.1
+pip3 install conan==1.64.1
```
#### Install GO 1.80
```bash
-wget https://go.dev/dl/go1.21.10.linux-arm64.tar.gz
-tar zxf go1.21.10.linux-arm64.tar.gz
+wget https://go.dev/dl/go1.21.11.linux-arm64.tar.gz
+tar zxf go1.21.11.linux-arm64.tar.gz
mv ./go /usr/local
vi /etc/profile
export PATH=$PATH:/usr/local/go/bin
@@ -389,7 +395,7 @@ For Apple Silicon users (Apple M1):
```shell
$ cd deployments/docker/dev
-$ docker-compose -f docker-compose-apple-silicon.yml up -d
+$ docker compose -f docker-compose-apple-silicon.yml up -d
$ cd ../../../
$ make unittest
```
@@ -398,7 +404,7 @@ For others:
```shell
$ cd deployments/docker/dev
-$ docker-compose up -d
+$ docker compose up -d
$ cd ../../../
$ make unittest
```
@@ -467,13 +473,13 @@ Milvus Cluster includes further component — Pulsar, to be distributed through
```shell
# Running Milvus cluster
$ cd deployments/docker/dev
-$ docker-compose up -d
+$ docker compose up -d
$ cd ../../../
$ ./scripts/start_cluster.sh
# Or running Milvus standalone
$ cd deployments/docker/dev
-$ docker-compose up -d
+$ docker compose up -d
$ cd ../../../
$ ./scripts/start_standalone.sh
```
diff --git a/Makefile b/Makefile
index f0b4ae9170c73..6443de2604f98 100644
--- a/Makefile
+++ b/Makefile
@@ -14,6 +14,7 @@ PWD := $(shell pwd)
GOPATH := $(shell $(GO) env GOPATH)
SHELL := /bin/bash
OBJPREFIX := "github.com/milvus-io/milvus/cmd/milvus"
+MILVUS_GO_BUILD_TAGS := "dynamic,sonic"
INSTALL_PATH := $(PWD)/bin
LIBRARY_PATH := $(PWD)/lib
@@ -29,6 +30,9 @@ endif
use_asan = OFF
ifdef USE_ASAN
use_asan =${USE_ASAN}
+ CGO_LDFLAGS := $(shell go env CGO_LDFLAGS) -fsanitize=address -fno-omit-frame-pointer
+ CGO_CFLAGS := $(shell go env CGO_CFLAGS) -fsanitize=address -fno-omit-frame-pointer
+ MILVUS_GO_BUILD_TAGS := $(MILVUS_GO_BUILD_TAGS),use_asan
endif
use_dynamic_simd = ON
@@ -60,6 +64,14 @@ INSTALL_GOFUMPT := $(findstring $(GOFUMPT_VERSION),$(GOFUMPT_OUTPUT))
GOTESTSUM_VERSION := 1.11.0
GOTESTSUM_OUTPUT := $(shell $(INSTALL_PATH)/gotestsum --version 2>/dev/null)
INSTALL_GOTESTSUM := $(findstring $(GOTESTSUM_VERSION),$(GOTESTSUM_OUTPUT))
+# protoc-gen-go
+PROTOC_GEN_GO_VERSION := 1.33.0
+PROTOC_GEN_GO_OUTPUT := $(shell echo | $(INSTALL_PATH)/protoc-gen-go --version 2>/dev/null)
+INSTALL_PROTOC_GEN_GO := $(findstring $(PROTOC_GEN_GO_VERSION),$(PROTOC_GEN_GO_OUTPUT))
+# protoc-gen-go-grpc
+PROTOC_GEN_GO_GRPC_VERSION := 1.3.0
+PROTOC_GEN_GO_GRPC_OUTPUT := $(shell echo | $(INSTALL_PATH)/protoc-gen-go-grpc --version 2>/dev/null)
+INSTALL_PROTOC_GEN_GO_GRPC := $(findstring $(PROTOC_GEN_GO_GRPC_VERSION),$(PROTOC_GEN_GO_GRPC_OUTPUT))
index_engine = knowhere
@@ -69,19 +81,21 @@ ifeq (${ENABLE_AZURE}, false)
AZURE_OPTION := -Z
endif
-milvus: build-cpp print-build-info
+milvus: build-cpp print-build-info build-go
+
+build-go:
@echo "Building Milvus ..."
@source $(PWD)/scripts/setenv.sh && \
mkdir -p $(INSTALL_PATH) && go env -w CGO_ENABLED="1" && \
- GO111MODULE=on $(GO) build -pgo=$(PGO_PATH)/default.pgo -ldflags="-r $${RPATH} -X '$(OBJPREFIX).BuildTags=$(BUILD_TAGS)' -X '$(OBJPREFIX).BuildTime=$(BUILD_TIME)' -X '$(OBJPREFIX).GitCommit=$(GIT_COMMIT)' -X '$(OBJPREFIX).GoVersion=$(GO_VERSION)'" \
- -tags dynamic -o $(INSTALL_PATH)/milvus $(PWD)/cmd/main.go 1>/dev/null
+ CGO_LDFLAGS="$(CGO_LDFLAGS)" CGO_CFLAGS="$(CGO_CFLAGS)" GO111MODULE=on $(GO) build -pgo=$(PGO_PATH)/default.pgo -ldflags="-r $${RPATH} -X '$(OBJPREFIX).BuildTags=$(BUILD_TAGS)' -X '$(OBJPREFIX).BuildTime=$(BUILD_TIME)' -X '$(OBJPREFIX).GitCommit=$(GIT_COMMIT)' -X '$(OBJPREFIX).GoVersion=$(GO_VERSION)'" \
+ -tags $(MILVUS_GO_BUILD_TAGS) -o $(INSTALL_PATH)/milvus $(PWD)/cmd/main.go 1>/dev/null
milvus-gpu: build-cpp-gpu print-gpu-build-info
@echo "Building Milvus-gpu ..."
@source $(PWD)/scripts/setenv.sh && \
mkdir -p $(INSTALL_PATH) && go env -w CGO_ENABLED="1" && \
- GO111MODULE=on $(GO) build -pgo=$(PGO_PATH)/default.pgo -ldflags="-r $${RPATH} -X '$(OBJPREFIX).BuildTags=$(BUILD_TAGS_GPU)' -X '$(OBJPREFIX).BuildTime=$(BUILD_TIME)' -X '$(OBJPREFIX).GitCommit=$(GIT_COMMIT)' -X '$(OBJPREFIX).GoVersion=$(GO_VERSION)'" \
- -tags dynamic -o $(INSTALL_PATH)/milvus $(PWD)/cmd/main.go 1>/dev/null
+ CGO_LDFLAGS="$(CGO_LDFLAGS)" CGO_CFLAGS="$(CGO_CFLAGS)" GO111MODULE=on $(GO) build -pgo=$(PGO_PATH)/default.pgo -ldflags="-r $${RPATH} -X '$(OBJPREFIX).BuildTags=$(BUILD_TAGS_GPU)' -X '$(OBJPREFIX).BuildTime=$(BUILD_TIME)' -X '$(OBJPREFIX).GitCommit=$(GIT_COMMIT)' -X '$(OBJPREFIX).GoVersion=$(GO_VERSION)'" \
+ -tags $(MILVUS_GO_BUILD_TAGS) -o $(INSTALL_PATH)/milvus $(PWD)/cmd/main.go 1>/dev/null
get-build-deps:
@(env bash $(PWD)/scripts/install_deps.sh)
@@ -105,6 +119,19 @@ getdeps:
echo "gotestsum v$(GOTESTSUM_VERSION) already installed";\
fi
+get-proto-deps:
+ @mkdir -p $(INSTALL_PATH) # make sure directory exists
+ @if [ -z "$(INSTALL_PROTOC_GEN_GO)" ]; then \
+ echo "install protoc-gen-go $(PROTOC_GEN_GO_VERSION) to $(INSTALL_PATH)" && GOBIN=$(INSTALL_PATH) go install google.golang.org/protobuf/cmd/protoc-gen-go@v$(PROTOC_GEN_GO_VERSION); \
+ else \
+ echo "protoc-gen-go@v$(PROTOC_GEN_GO_VERSION) already installed";\
+ fi
+ @if [ -z "$(INSTALL_PROTOC_GEN_GO_GRPC)" ]; then \
+ echo "install protoc-gen-go-grpc $(PROTOC_GEN_GO_GRPC_VERSION) to $(INSTALL_PATH)" && GOBIN=$(INSTALL_PATH) go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v$(PROTOC_GEN_GO_GRPC_VERSION); \
+ else \
+ echo "protoc-gen-go-grpc@v$(PROTOC_GEN_GO_GRPC_VERSION) already installed";\
+ fi
+
tools/bin/revive: tools/check/go.mod
cd tools/check; \
$(GO) build -pgo=$(PGO_PATH)/default.pgo -o ../bin/revive github.com/mgechev/revive
@@ -161,13 +188,13 @@ lint-fix: getdeps
static-check: getdeps
@echo "Running $@ check"
@echo "Start check core packages"
- @source $(PWD)/scripts/setenv.sh && GO111MODULE=on $(INSTALL_PATH)/golangci-lint run --build-tags dynamic,test --timeout=30m --config $(PWD)/.golangci.yml
+ @source $(PWD)/scripts/setenv.sh && GO111MODULE=on GOFLAGS=-buildvcs=false $(INSTALL_PATH)/golangci-lint run --build-tags dynamic,test --timeout=30m --config $(PWD)/.golangci.yml
@echo "Start check pkg package"
- @source $(PWD)/scripts/setenv.sh && cd pkg && GO111MODULE=on $(INSTALL_PATH)/golangci-lint run --build-tags dynamic,test --timeout=30m --config $(PWD)/.golangci.yml
+ @source $(PWD)/scripts/setenv.sh && cd pkg && GO111MODULE=on GOFLAGS=-buildvcs=false $(INSTALL_PATH)/golangci-lint run --build-tags dynamic,test --timeout=30m --config $(PWD)/.golangci.yml
@echo "Start check client package"
- @source $(PWD)/scripts/setenv.sh && cd client && GO111MODULE=on $(INSTALL_PATH)/golangci-lint run --timeout=30m --config $(PWD)/client/.golangci.yml
+ @source $(PWD)/scripts/setenv.sh && cd client && GO111MODULE=on GOFLAGS=-buildvcs=false $(INSTALL_PATH)/golangci-lint run --timeout=30m --config $(PWD)/client/.golangci.yml
@echo "Start check go_client e2e package"
- @source $(PWD)/scripts/setenv.sh && cd tests/go_client && GO111MODULE=on $(INSTALL_PATH)/golangci-lint run --timeout=30m --config $(PWD)/client/.golangci.yml
+ @source $(PWD)/scripts/setenv.sh && cd tests/go_client && GO111MODULE=on GOFLAGS=-buildvcs=false $(INSTALL_PATH)/golangci-lint run --build-tags L0,L1,L2,test --timeout=30m --config $(PWD)/tests/go_client/.golangci.yml
verifiers: build-cpp getdeps cppcheck fmt static-check
@@ -223,21 +250,17 @@ build-3rdparty:
@echo "Build 3rdparty ..."
@(env bash $(PWD)/scripts/3rdparty_build.sh -o ${use_opendal})
-generated-proto-without-cpp: download-milvus-proto
+generated-proto-without-cpp: download-milvus-proto get-proto-deps
@echo "Generate proto ..."
- @mkdir -p ${GOPATH}/bin
- @which protoc-gen-go 1>/dev/null || (echo "Installing protoc-gen-go" && cd /tmp && go install github.com/golang/protobuf/protoc-gen-go@v1.3.2)
- @(env bash $(PWD)/scripts/generate_proto.sh)
+ @(env bash $(PWD)/scripts/generate_proto.sh ${INSTALL_PATH})
-generated-proto: download-milvus-proto build-3rdparty
+generated-proto: download-milvus-proto build-3rdparty get-proto-deps
@echo "Generate proto ..."
- @mkdir -p ${GOPATH}/bin
- @which protoc-gen-go 1>/dev/null || (echo "Installing protoc-gen-go" && cd /tmp && go install github.com/golang/protobuf/protoc-gen-go@v1.3.2)
- @(env bash $(PWD)/scripts/generate_proto.sh)
+ @(env bash $(PWD)/scripts/generate_proto.sh ${INSTALL_PATH})
build-cpp: generated-proto
@echo "Building Milvus cpp library ..."
- @(env bash $(PWD)/scripts/core_build.sh -t ${mode} -n ${use_disk_index} -y ${use_dynamic_simd} ${AZURE_OPTION} -x ${index_engine} -o ${use_opendal})
+ @(env bash $(PWD)/scripts/core_build.sh -t ${mode} -a ${use_asan} -n ${use_disk_index} -y ${use_dynamic_simd} ${AZURE_OPTION} -x ${index_engine} -o ${use_opendal})
build-cpp-gpu: generated-proto
@echo "Building Milvus cpp gpu library ... "
@@ -334,6 +357,12 @@ test-cpp: build-cpp-with-unittest
@echo "Running cpp unittests..."
@(env bash $(PWD)/scripts/run_cpp_unittest.sh)
+run-test-cpp:
+ @echo "Running cpp unittests..."
+ @echo $(PWD)/scripts/run_cpp_unittest.sh arg=${filter}
+ @(env bash $(PWD)/scripts/run_cpp_unittest.sh arg=${filter})
+
+
# Run code coverage.
codecov: codecov-go codecov-cpp
@@ -355,20 +384,12 @@ codecov-cpp: build-cpp-with-coverage
# Build each component and install binary to $GOPATH/bin.
install: milvus
@echo "Installing binary to './bin'"
- @mkdir -p $(GOPATH)/bin && cp -f $(PWD)/bin/milvus $(GOPATH)/bin/milvus
- @mkdir -p $(LIBRARY_PATH)
- -cp -r -P $(PWD)/internal/core/output/lib/*.dylib* $(LIBRARY_PATH) 2>/dev/null
- -cp -r -P $(PWD)/internal/core/output/lib/*.so* $(LIBRARY_PATH) 2>/dev/null
- -cp -r -P $(PWD)/internal/core/output/lib64/*.so* $(LIBRARY_PATH) 2>/dev/null
+ @(env USE_ASAN=$(USE_ASAN) GOPATH=$(GOPATH) LIBRARY_PATH=$(LIBRARY_PATH) bash $(PWD)/scripts/install_milvus.sh)
@echo "Installation successful."
gpu-install: milvus-gpu
@echo "Installing binary to './bin'"
- @mkdir -p $(GOPATH)/bin && cp -f $(PWD)/bin/milvus $(GOPATH)/bin/milvus
- @mkdir -p $(LIBRARY_PATH)
- -cp -r -P $(PWD)/internal/core/output/lib/*.dylib* $(LIBRARY_PATH) 2>/dev/null
- -cp -r -P $(PWD)/internal/core/output/lib/*.so* $(LIBRARY_PATH) 2>/dev/null
- -cp -r -P $(PWD)/internal/core/output/lib64/*.so* $(LIBRARY_PATH) 2>/dev/null
+ @(env USE_ASAN=$(USE_ASAN) GOPATH=$(GOPATH) LIBRARY_PATH=$(LIBRARY_PATH) bash $(PWD)/scripts/install_milvus.sh)
@echo "Installation successful."
clean:
@@ -381,7 +402,7 @@ clean:
milvus-tools: print-build-info
@echo "Building tools ..."
- @mkdir -p $(INSTALL_PATH)/tools && go env -w CGO_ENABLED="1" && GO111MODULE=on $(GO) build \
+ @. $(PWD)/scripts/setenv.sh && mkdir -p $(INSTALL_PATH)/tools && go env -w CGO_ENABLED="1" && GO111MODULE=on $(GO) build \
-pgo=$(PGO_PATH)/default.pgo -ldflags="-X 'main.BuildTags=$(BUILD_TAGS)' -X 'main.BuildTime=$(BUILD_TIME)' -X 'main.GitCommit=$(GIT_COMMIT)' -X 'main.GoVersion=$(GO_VERSION)'" \
-o $(INSTALL_PATH)/tools $(PWD)/cmd/tools/* 1>/dev/null
@@ -464,34 +485,37 @@ generate-mockery-querynode: getdeps build-cpp
generate-mockery-datacoord: getdeps
$(INSTALL_PATH)/mockery --name=compactionPlanContext --dir=internal/datacoord --filename=mock_compaction_plan_context.go --output=internal/datacoord --structname=MockCompactionPlanContext --with-expecter --inpackage
$(INSTALL_PATH)/mockery --name=Handler --dir=internal/datacoord --filename=mock_handler.go --output=internal/datacoord --structname=NMockHandler --with-expecter --inpackage
- $(INSTALL_PATH)/mockery --name=allocator --dir=internal/datacoord --filename=mock_allocator_test.go --output=internal/datacoord --structname=NMockAllocator --with-expecter --inpackage
+ $(INSTALL_PATH)/mockery --name=Allocator --dir=internal/datacoord/allocator --filename=mock_allocator.go --output=internal/datacoord/allocator --structname=MockAllocator --with-expecter --inpackage
+ $(INSTALL_PATH)/mockery --name=DataNodeManager --dir=internal/datacoord/session --filename=mock_datanode_manager.go --output=internal/datacoord/session --structname=MockDataNodeManager --with-expecter --inpackage
$(INSTALL_PATH)/mockery --name=RWChannelStore --dir=internal/datacoord --filename=mock_channel_store.go --output=internal/datacoord --structname=MockRWChannelStore --with-expecter --inpackage
$(INSTALL_PATH)/mockery --name=IndexEngineVersionManager --dir=internal/datacoord --filename=mock_index_engine_version_manager.go --output=internal/datacoord --structname=MockVersionManager --with-expecter --inpackage
$(INSTALL_PATH)/mockery --name=TriggerManager --dir=internal/datacoord --filename=mock_trigger_manager.go --output=internal/datacoord --structname=MockTriggerManager --with-expecter --inpackage
$(INSTALL_PATH)/mockery --name=Cluster --dir=internal/datacoord --filename=mock_cluster.go --output=internal/datacoord --structname=MockCluster --with-expecter --inpackage
- $(INSTALL_PATH)/mockery --name=SessionManager --dir=internal/datacoord --filename=mock_session_manager.go --output=internal/datacoord --structname=MockSessionManager --with-expecter --inpackage
$(INSTALL_PATH)/mockery --name=compactionPlanContext --dir=internal/datacoord --filename=mock_compaction_plan_context.go --output=internal/datacoord --structname=MockCompactionPlanContext --with-expecter --inpackage
$(INSTALL_PATH)/mockery --name=CompactionMeta --dir=internal/datacoord --filename=mock_compaction_meta.go --output=internal/datacoord --structname=MockCompactionMeta --with-expecter --inpackage
$(INSTALL_PATH)/mockery --name=ChannelManager --dir=internal/datacoord --filename=mock_channelmanager.go --output=internal/datacoord --structname=MockChannelManager --with-expecter --inpackage
$(INSTALL_PATH)/mockery --name=SubCluster --dir=internal/datacoord --filename=mock_subcluster.go --output=internal/datacoord --structname=MockSubCluster --with-expecter --inpackage
$(INSTALL_PATH)/mockery --name=Broker --dir=internal/datacoord/broker --filename=mock_coordinator_broker.go --output=internal/datacoord/broker --structname=MockBroker --with-expecter --inpackage
- $(INSTALL_PATH)/mockery --name=WorkerManager --dir=internal/datacoord --filename=mock_worker_manager.go --output=internal/datacoord --structname=MockWorkerManager --with-expecter --inpackage
+ $(INSTALL_PATH)/mockery --name=WorkerManager --dir=internal/datacoord/session --filename=mock_worker_manager.go --output=internal/datacoord/session --structname=MockWorkerManager --with-expecter --inpackage
+ $(INSTALL_PATH)/mockery --name=Manager --dir=internal/datacoord --filename=mock_segment_manager.go --output=internal/datacoord --structname=MockManager --with-expecter --inpackage
generate-mockery-datanode: getdeps
$(INSTALL_PATH)/mockery --name=Allocator --dir=$(PWD)/internal/datanode/allocator --output=$(PWD)/internal/datanode/allocator --filename=mock_allocator.go --with-expecter --structname=MockAllocator --outpkg=allocator --inpackage
- $(INSTALL_PATH)/mockery --name=Broker --dir=$(PWD)/internal/datanode/broker --output=$(PWD)/internal/datanode/broker/ --filename=mock_broker.go --with-expecter --structname=MockBroker --outpkg=broker --inpackage
- $(INSTALL_PATH)/mockery --name=MetaCache --dir=$(PWD)/internal/datanode/metacache --output=$(PWD)/internal/datanode/metacache --filename=mock_meta_cache.go --with-expecter --structname=MockMetaCache --outpkg=metacache --inpackage
- $(INSTALL_PATH)/mockery --name=SyncManager --dir=$(PWD)/internal/datanode/syncmgr --output=$(PWD)/internal/datanode/syncmgr --filename=mock_sync_manager.go --with-expecter --structname=MockSyncManager --outpkg=syncmgr --inpackage
- $(INSTALL_PATH)/mockery --name=MetaWriter --dir=$(PWD)/internal/datanode/syncmgr --output=$(PWD)/internal/datanode/syncmgr --filename=mock_meta_writer.go --with-expecter --structname=MockMetaWriter --outpkg=syncmgr --inpackage
- $(INSTALL_PATH)/mockery --name=Serializer --dir=$(PWD)/internal/datanode/syncmgr --output=$(PWD)/internal/datanode/syncmgr --filename=mock_serializer.go --with-expecter --structname=MockSerializer --outpkg=syncmgr --inpackage
- $(INSTALL_PATH)/mockery --name=Task --dir=$(PWD)/internal/datanode/syncmgr --output=$(PWD)/internal/datanode/syncmgr --filename=mock_task.go --with-expecter --structname=MockTask --outpkg=syncmgr --inpackage
- $(INSTALL_PATH)/mockery --name=WriteBuffer --dir=$(PWD)/internal/datanode/writebuffer --output=$(PWD)/internal/datanode/writebuffer --filename=mock_write_buffer.go --with-expecter --structname=MockWriteBuffer --outpkg=writebuffer --inpackage
- $(INSTALL_PATH)/mockery --name=BufferManager --dir=$(PWD)/internal/datanode/writebuffer --output=$(PWD)/internal/datanode/writebuffer --filename=mock_mananger.go --with-expecter --structname=MockBufferManager --outpkg=writebuffer --inpackage
- $(INSTALL_PATH)/mockery --name=BinlogIO --dir=$(PWD)/internal/datanode/io --output=$(PWD)/internal/datanode/io --filename=mock_binlogio.go --with-expecter --structname=MockBinlogIO --outpkg=io --inpackage
- $(INSTALL_PATH)/mockery --name=FlowgraphManager --dir=$(PWD)/internal/datanode/pipeline --output=$(PWD)/internal/datanode/pipeline --filename=mock_fgmanager.go --with-expecter --structname=MockFlowgraphManager --outpkg=pipeline --inpackage
$(INSTALL_PATH)/mockery --name=ChannelManager --dir=$(PWD)/internal/datanode/channel --output=$(PWD)/internal/datanode/channel --filename=mock_channelmanager.go --with-expecter --structname=MockChannelManager --outpkg=channel --inpackage
$(INSTALL_PATH)/mockery --name=Compactor --dir=$(PWD)/internal/datanode/compaction --output=$(PWD)/internal/datanode/compaction --filename=mock_compactor.go --with-expecter --structname=MockCompactor --outpkg=compaction --inpackage
+generate-mockery-flushcommon: getdeps
+ $(INSTALL_PATH)/mockery --name=Broker --dir=$(PWD)/internal/flushcommon/broker --output=$(PWD)/internal/flushcommon/broker/ --filename=mock_broker.go --with-expecter --structname=MockBroker --outpkg=broker --inpackage
+ $(INSTALL_PATH)/mockery --name=MetaCache --dir=$(PWD)/internal/flushcommon/metacache --output=$(PWD)/internal/flushcommon/metacache --filename=mock_meta_cache.go --with-expecter --structname=MockMetaCache --outpkg=metacache --inpackage
+ $(INSTALL_PATH)/mockery --name=SyncManager --dir=$(PWD)/internal/flushcommon/syncmgr --output=$(PWD)/internal/flushcommon/syncmgr --filename=mock_sync_manager.go --with-expecter --structname=MockSyncManager --outpkg=syncmgr --inpackage
+ $(INSTALL_PATH)/mockery --name=MetaWriter --dir=$(PWD)/internal/flushcommon/syncmgr --output=$(PWD)/internal/flushcommon/syncmgr --filename=mock_meta_writer.go --with-expecter --structname=MockMetaWriter --outpkg=syncmgr --inpackage
+ $(INSTALL_PATH)/mockery --name=Serializer --dir=$(PWD)/internal/flushcommon/syncmgr --output=$(PWD)/internal/flushcommon/syncmgr --filename=mock_serializer.go --with-expecter --structname=MockSerializer --outpkg=syncmgr --inpackage
+ $(INSTALL_PATH)/mockery --name=Task --dir=$(PWD)/internal/flushcommon/syncmgr --output=$(PWD)/internal/flushcommon/syncmgr --filename=mock_task.go --with-expecter --structname=MockTask --outpkg=syncmgr --inpackage
+ $(INSTALL_PATH)/mockery --name=WriteBuffer --dir=$(PWD)/internal/flushcommon/writebuffer --output=$(PWD)/internal/flushcommon/writebuffer --filename=mock_write_buffer.go --with-expecter --structname=MockWriteBuffer --outpkg=writebuffer --inpackage
+ $(INSTALL_PATH)/mockery --name=BufferManager --dir=$(PWD)/internal/flushcommon/writebuffer --output=$(PWD)/internal/flushcommon/writebuffer --filename=mock_manager.go --with-expecter --structname=MockBufferManager --outpkg=writebuffer --inpackage
+ $(INSTALL_PATH)/mockery --name=BinlogIO --dir=$(PWD)/internal/flushcommon/io --output=$(PWD)/internal/flushcommon/io --filename=mock_binlogio.go --with-expecter --structname=MockBinlogIO --outpkg=io --inpackage
+ $(INSTALL_PATH)/mockery --name=FlowgraphManager --dir=$(PWD)/internal/flushcommon/pipeline --output=$(PWD)/internal/flushcommon/pipeline --filename=mock_fgmanager.go --with-expecter --structname=MockFlowgraphManager --outpkg=pipeline --inpackage
+
generate-mockery-metastore: getdeps
$(INSTALL_PATH)/mockery --name=RootCoordCatalog --dir=$(PWD)/internal/metastore --output=$(PWD)/internal/metastore/mocks --filename=mock_rootcoord_catalog.go --with-expecter --structname=RootCoordCatalog --outpkg=mocks
$(INSTALL_PATH)/mockery --name=DataCoordCatalog --dir=$(PWD)/internal/metastore --output=$(PWD)/internal/metastore/mocks --filename=mock_datacoord_catalog.go --with-expecter --structname=DataCoordCatalog --outpkg=mocks
@@ -509,11 +533,11 @@ generate-mockery-utils: getdeps
$(INSTALL_PATH)/mockery --name=ProxyWatcherInterface --dir=$(PWD)/internal/util/proxyutil --output=$(PWD)/internal/util/proxyutil --filename=mock_proxy_watcher.go --with-expecter --structname=MockProxyWatcher --inpackage
generate-mockery-kv: getdeps
- $(INSTALL_PATH)/mockery --name=TxnKV --dir=$(PWD)/internal/kv --output=$(PWD)/internal/kv/mocks --filename=txn_kv.go --with-expecter
- $(INSTALL_PATH)/mockery --name=MetaKv --dir=$(PWD)/internal/kv --output=$(PWD)/internal/kv/mocks --filename=meta_kv.go --with-expecter
- $(INSTALL_PATH)/mockery --name=WatchKV --dir=$(PWD)/internal/kv --output=$(PWD)/internal/kv/mocks --filename=watch_kv.go --with-expecter
- $(INSTALL_PATH)/mockery --name=SnapShotKV --dir=$(PWD)/internal/kv --output=$(PWD)/internal/kv/mocks --filename=snapshot_kv.go --with-expecter
- $(INSTALL_PATH)/mockery --name=Predicate --dir=$(PWD)/internal/kv/predicates --output=$(PWD)/internal/kv/predicates --filename=mock_predicate.go --with-expecter --inpackage
+ $(INSTALL_PATH)/mockery --name=TxnKV --dir=$(PWD)/pkg/kv --output=$(PWD)/internal/kv/mocks --filename=txn_kv.go --with-expecter
+ $(INSTALL_PATH)/mockery --name=MetaKv --dir=$(PWD)/pkg/kv --output=$(PWD)/internal/kv/mocks --filename=meta_kv.go --with-expecter
+ $(INSTALL_PATH)/mockery --name=WatchKV --dir=$(PWD)/pkg/kv --output=$(PWD)/internal/kv/mocks --filename=watch_kv.go --with-expecter
+ $(INSTALL_PATH)/mockery --name=SnapShotKV --dir=$(PWD)/pkg/kv --output=$(PWD)/internal/kv/mocks --filename=snapshot_kv.go --with-expecter
+ $(INSTALL_PATH)/mockery --name=Predicate --dir=$(PWD)/pkg/kv/predicates --output=$(PWD)/internal/kv/predicates --filename=mock_predicate.go --with-expecter --inpackage
generate-mockery-chunk-manager: getdeps
$(INSTALL_PATH)/mockery --name=ChunkManager --dir=$(PWD)/internal/storage --output=$(PWD)/internal/mocks --filename=mock_chunk_manager.go --with-expecter
@@ -521,7 +545,7 @@ generate-mockery-chunk-manager: getdeps
generate-mockery-pkg:
$(MAKE) -C pkg generate-mockery
-generate-mockery-internal:
+generate-mockery-internal: getdeps
$(INSTALL_PATH)/mockery --config $(PWD)/internal/.mockery.yaml
generate-mockery: generate-mockery-types generate-mockery-kv generate-mockery-rootcoord generate-mockery-proxy generate-mockery-querycoord generate-mockery-querynode generate-mockery-datacoord generate-mockery-pkg generate-mockery-internal
diff --git a/README.md b/README.md
index 31319378655e6..716c20f11687e 100644
--- a/README.md
+++ b/README.md
@@ -76,7 +76,7 @@ Linux systems (Ubuntu 20.04 or later recommended):
```bash
go: >= 1.21
cmake: >= 3.26.4
-gcc: 7.5
+gcc: 9.5
python: > 3.8 and <= 3.11
```
@@ -174,7 +174,7 @@ Contributions to Milvus are welcome from everyone. See [Guidelines for Contribut
### All contributors
-
+
@@ -217,6 +217,7 @@ Contributions to Milvus are welcome from everyone. See [Guidelines for Contribut
+
@@ -236,6 +237,7 @@ Contributions to Milvus are welcome from everyone. See [Guidelines for Contribut
+
@@ -245,6 +247,7 @@ Contributions to Milvus are welcome from everyone. See [Guidelines for Contribut
+
@@ -268,6 +271,7 @@ Contributions to Milvus are welcome from everyone. See [Guidelines for Contribut
+
@@ -276,11 +280,13 @@ Contributions to Milvus are welcome from everyone. See [Guidelines for Contribut
+
+
@@ -349,7 +355,9 @@ Contributions to Milvus are welcome from everyone. See [Guidelines for Contribut
+
+
@@ -384,6 +392,7 @@ Contributions to Milvus are welcome from everyone. See [Guidelines for Contribut
+
@@ -436,6 +445,7 @@ Contributions to Milvus are welcome from everyone. See [Guidelines for Contribut
+
@@ -487,6 +497,7 @@ Contributions to Milvus are welcome from everyone. See [Guidelines for Contribut
+
@@ -557,6 +568,7 @@ Contributions to Milvus are welcome from everyone. See [Guidelines for Contribut
+
diff --git a/README_CN.md b/README_CN.md
index c6f980990fb66..6fd6f3d4c52a1 100644
--- a/README_CN.md
+++ b/README_CN.md
@@ -156,7 +156,7 @@ Milvus [训练营](https://github.com/milvus-io/bootcamp)能够帮助你了解
### All contributors
-
+
@@ -199,6 +199,7 @@ Milvus [训练营](https://github.com/milvus-io/bootcamp)能够帮助你了解
+
@@ -218,6 +219,7 @@ Milvus [训练营](https://github.com/milvus-io/bootcamp)能够帮助你了解
+
@@ -227,6 +229,7 @@ Milvus [训练营](https://github.com/milvus-io/bootcamp)能够帮助你了解
+
@@ -250,6 +253,7 @@ Milvus [训练营](https://github.com/milvus-io/bootcamp)能够帮助你了解
+
@@ -258,11 +262,13 @@ Milvus [训练营](https://github.com/milvus-io/bootcamp)能够帮助你了解
+
+
@@ -331,7 +337,9 @@ Milvus [训练营](https://github.com/milvus-io/bootcamp)能够帮助你了解
+
+
@@ -366,6 +374,7 @@ Milvus [训练营](https://github.com/milvus-io/bootcamp)能够帮助你了解
+
@@ -418,6 +427,7 @@ Milvus [训练营](https://github.com/milvus-io/bootcamp)能够帮助你了解
+
@@ -469,6 +479,7 @@ Milvus [训练营](https://github.com/milvus-io/bootcamp)能够帮助你了解
+
@@ -539,6 +550,7 @@ Milvus [训练营](https://github.com/milvus-io/bootcamp)能够帮助你了解
+
diff --git a/build/README.md b/build/README.md
index 1801e1a8d51d3..2b70349156e4e 100644
--- a/build/README.md
+++ b/build/README.md
@@ -95,7 +95,7 @@ Creating milvus_builder_1 ... done
Check running state of Dev Container:
```shell
-$ docker-compose -f docker-compose-devcontainer.yml ps
+$ docker compose -f docker-compose-devcontainer.yml ps
Name Command State Ports
---------------------------------------------------------------------------------------------------------------------------------------
@@ -135,7 +135,7 @@ Milvus uses Python SDK to write test cases to verify the correctness of Milvus f
```shell
cd deployments/docker/dev
-docker-compose up -d
+docker compose up -d
cd ../../../
build/builder.sh /bin/bash -c "export ROCKSMQ_PATH='/tmp/milvus/rdb_data' && ./scripts/start_standalone.sh && cat"
```
@@ -149,9 +149,9 @@ build/builder.sh /bin/bash -c "./scripts/start_cluster.sh && cat"
To run E2E tests, use these commands:
```shell
-MILVUS_SERVICE_IP=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker-compose ps -q builder))
+MILVUS_SERVICE_IP=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker compose ps -q builder))
cd tests/docker
-docker-compose run --rm pytest /bin/bash -c "pytest --host ${MILVUS_SERVICE_IP}"
+docker compose run --rm pytest /bin/bash -c "pytest --host ${MILVUS_SERVICE_IP}"
```
## Basic Flow
diff --git a/build/builder.sh b/build/builder.sh
index fdb323ab47f7f..5ed8c962a98c9 100755
--- a/build/builder.sh
+++ b/build/builder.sh
@@ -2,6 +2,8 @@
set -eo pipefail
+source ./build/util.sh
+
# Absolute path to the toplevel milvus directory.
toplevel=$(dirname "$(cd "$(dirname "${0}")"; pwd)")
@@ -18,12 +20,12 @@ fi
pushd "${toplevel}"
if [[ "${1-}" == "pull" ]]; then
- docker-compose pull --ignore-pull-failures builder
+ $DOCKER_COMPOSE_COMMAND pull builder
exit 0
fi
if [[ "${1-}" == "down" ]]; then
- docker-compose down
+ $DOCKER_COMPOSE_COMMAND down
exit 0
fi
@@ -37,11 +39,11 @@ mkdir -p "${DOCKER_VOLUME_DIRECTORY:-.docker}/${IMAGE_ARCH}-${OS_NAME}-vscode-ex
mkdir -p "${DOCKER_VOLUME_DIRECTORY:-.docker}/${IMAGE_ARCH}-${OS_NAME}-conan"
chmod -R 777 "${DOCKER_VOLUME_DIRECTORY:-.docker}"
-docker-compose pull --ignore-pull-failures builder
+$DOCKER_COMPOSE_COMMAND pull builder
if [[ "${CHECK_BUILDER:-}" == "1" ]]; then
- docker-compose build builder
+ $DOCKER_COMPOSE_COMMAND build builder
fi
-docker-compose run --no-deps --rm builder "$@"
+$DOCKER_COMPOSE_COMMAND run --no-deps --rm builder "$@"
popd
diff --git a/build/builder_gpu.sh b/build/builder_gpu.sh
index 8b3c6ba30560f..0b7102e0558cd 100755
--- a/build/builder_gpu.sh
+++ b/build/builder_gpu.sh
@@ -2,6 +2,8 @@
set -euo pipefail
+source ./build/util.sh
+
# Absolute path to the toplevel milvus directory.
toplevel=$(dirname "$(cd "$(dirname "${0}")"; pwd)")
@@ -14,12 +16,12 @@ export OS_NAME="${OS_NAME:-ubuntu22.04}"
pushd "${toplevel}"
if [[ "${1-}" == "pull" ]]; then
- docker-compose pull --ignore-pull-failures gpubuilder
+ $DOCKER_COMPOSE_COMMAND pull gpubuilder
exit 0
fi
if [[ "${1-}" == "down" ]]; then
- docker-compose down
+ $DOCKER_COMPOSE_COMMAND down
exit 0
fi
@@ -42,15 +44,15 @@ mkdir -p "${DOCKER_VOLUME_DIRECTORY:-.docker-gpu}/amd64-${OS_NAME}-vscode-extens
mkdir -p "${DOCKER_VOLUME_DIRECTORY:-.docker-gpu}/amd64-${OS_NAME}-conan"
chmod -R 777 "${DOCKER_VOLUME_DIRECTORY:-.docker-gpu}"
-docker-compose pull --ignore-pull-failures gpubuilder
+docker compose pull gpubuilder
if [[ "${CHECK_BUILDER:-}" == "1" ]]; then
- docker-compose build gpubuilder
+ $DOCKER_COMPOSE_COMMAND build gpubuilder
fi
if [[ "$(id -u)" != "0" ]]; then
- docker-compose run --no-deps --rm -u "$uid:$gid" gpubuilder "$@"
+ $DOCKER_COMPOSE_COMMAND run --no-deps --rm -u "$uid:$gid" gpubuilder "$@"
else
- docker-compose run --no-deps --rm gpubuilder "$@"
+ $DOCKER_COMPOSE_COMMAND run --no-deps --rm gpubuilder "$@"
fi
popd
diff --git a/build/docker/builder/cpu/amazonlinux2023/Dockerfile b/build/docker/builder/cpu/amazonlinux2023/Dockerfile
index d052c37755b73..82b1f7a60eae7 100644
--- a/build/docker/builder/cpu/amazonlinux2023/Dockerfile
+++ b/build/docker/builder/cpu/amazonlinux2023/Dockerfile
@@ -22,12 +22,12 @@ ENV GOPATH /go
ENV GOROOT /usr/local/go
ENV GO111MODULE on
ENV PATH $GOPATH/bin:$GOROOT/bin:$PATH
-RUN mkdir -p /usr/local/go && wget -qO- "https://go.dev/dl/go1.21.10.linux-$TARGETARCH.tar.gz" | tar --strip-components=1 -xz -C /usr/local/go && \
+RUN mkdir -p /usr/local/go && wget -qO- "https://go.dev/dl/go1.21.11.linux-$TARGETARCH.tar.gz" | tar --strip-components=1 -xz -C /usr/local/go && \
mkdir -p "$GOPATH/src" "$GOPATH/bin" && \
go clean --modcache && \
chmod -R 777 "$GOPATH" && chmod -R a+w $(go env GOTOOLDIR)
-RUN pip3 install conan==1.61.0
+RUN pip3 install conan==1.64.1
RUN echo "target arch $TARGETARCH"
RUN wget -qO- "https://cmake.org/files/v3.27/cmake-3.27.5-linux-`uname -m`.tar.gz" | tar --strip-components=1 -xz -C /usr/local
@@ -52,7 +52,7 @@ RUN mkdir /tmp/ccache && cd /tmp/ccache &&\
# refer: https://code.visualstudio.com/docs/remote/containers-advanced#_avoiding-extension-reinstalls-on-container-rebuild
RUN mkdir -p /home/milvus/.vscode-server/extensions \
- /home/milvus/.vscode-server-insiders/extensions \
+ /home/milvus/.vscode-server-insiders/extensions \
&& chmod -R 777 /home/milvus
COPY --chown=0:0 build/docker/builder/entrypoint.sh /
diff --git a/build/docker/builder/cpu/rockylinux8/Dockerfile b/build/docker/builder/cpu/rockylinux8/Dockerfile
index ec1ea089035c3..44a75517de7de 100644
--- a/build/docker/builder/cpu/rockylinux8/Dockerfile
+++ b/build/docker/builder/cpu/rockylinux8/Dockerfile
@@ -1,8 +1,8 @@
FROM rockylinux/rockylinux:8 as vcpkg-installer
RUN dnf -y install curl wget tar zip unzip git \
- gcc gcc-c++ make cmake \
- perl-IPC-Cmd perl-Digest-SHA
+ gcc gcc-c++ make cmake \
+ perl-IPC-Cmd perl-Digest-SHA
# install ninjia
RUN dnf -y update && \
@@ -32,8 +32,8 @@ FROM rockylinux/rockylinux:8
ARG TARGETARCH
RUN dnf install -y make cmake automake gcc gcc-c++ curl zip unzip tar git which \
- libaio libuuid-devel wget python3 python3-pip \
- pkg-config perl-IPC-Cmd perl-Digest-SHA libatomic libtool
+ libaio libuuid-devel wget python3 python3-pip \
+ pkg-config perl-IPC-Cmd perl-Digest-SHA libatomic libtool
# install openblas-devel texinfo ninja
RUN dnf -y update && \
@@ -42,8 +42,8 @@ RUN dnf -y update && \
dnf -y install texinfo openblas-devel ninja-build
-RUN pip3 install conan==1.61.0
-RUN mkdir -p /usr/local/go && wget -qO- "https://go.dev/dl/go1.21.10.linux-$TARGETARCH.tar.gz" | tar --strip-components=1 -xz -C /usr/local/go
+RUN pip3 install conan==1.64.1
+RUN mkdir -p /usr/local/go && wget -qO- "https://go.dev/dl/go1.21.11.linux-$TARGETARCH.tar.gz" | tar --strip-components=1 -xz -C /usr/local/go
RUN curl https://sh.rustup.rs -sSf | \
sh -s -- --default-toolchain=1.73 -y
diff --git a/build/docker/builder/cpu/ubuntu20.04/Dockerfile b/build/docker/builder/cpu/ubuntu20.04/Dockerfile
index 8e7f98ee89cf1..8f36ce6dc5b69 100644
--- a/build/docker/builder/cpu/ubuntu20.04/Dockerfile
+++ b/build/docker/builder/cpu/ubuntu20.04/Dockerfile
@@ -20,7 +20,7 @@ RUN apt-get update && apt-get install -y --no-install-recommends wget curl ca-ce
apt-get remove --purge -y && \
rm -rf /var/lib/apt/lists/*
-RUN pip3 install conan==1.61.0
+RUN pip3 install conan==1.64.1
RUN echo "target arch $TARGETARCH"
RUN wget -qO- "https://cmake.org/files/v3.27/cmake-3.27.5-linux-`uname -m`.tar.gz" | tar --strip-components=1 -xz -C /usr/local
@@ -40,14 +40,14 @@ ENV GOPATH /go
ENV GOROOT /usr/local/go
ENV GO111MODULE on
ENV PATH $GOPATH/bin:$GOROOT/bin:$PATH
-RUN mkdir -p /usr/local/go && wget -qO- "https://go.dev/dl/go1.21.10.linux-$TARGETARCH.tar.gz" | tar --strip-components=1 -xz -C /usr/local/go && \
+RUN mkdir -p /usr/local/go && wget -qO- "https://go.dev/dl/go1.21.11.linux-$TARGETARCH.tar.gz" | tar --strip-components=1 -xz -C /usr/local/go && \
mkdir -p "$GOPATH/src" "$GOPATH/bin" && \
go clean --modcache && \
chmod -R 777 "$GOPATH" && chmod -R a+w $(go env GOTOOLDIR)
# refer: https://code.visualstudio.com/docs/remote/containers-advanced#_avoiding-extension-reinstalls-on-container-rebuild
RUN mkdir -p /home/milvus/.vscode-server/extensions \
- /home/milvus/.vscode-server-insiders/extensions \
+ /home/milvus/.vscode-server-insiders/extensions \
&& chmod -R 777 /home/milvus
COPY --chown=0:0 build/docker/builder/entrypoint.sh /
diff --git a/build/docker/builder/cpu/ubuntu22.04/Dockerfile b/build/docker/builder/cpu/ubuntu22.04/Dockerfile
index be108908caf1b..7802c97519b58 100644
--- a/build/docker/builder/cpu/ubuntu22.04/Dockerfile
+++ b/build/docker/builder/cpu/ubuntu22.04/Dockerfile
@@ -26,7 +26,7 @@ RUN apt-get update && apt-get install -y gcc-12 g++-12 && cd /usr/bin \
&& unlink g++ && ln -s g++-12 g++ \
&& unlink gcov && ln -s gcov-12 gcov
-RUN pip3 install conan==1.61.0
+RUN pip3 install conan==1.64.1
RUN echo "target arch $TARGETARCH"
RUN wget -qO- "https://cmake.org/files/v3.27/cmake-3.27.5-linux-`uname -m`.tar.gz" | tar --strip-components=1 -xz -C /usr/local
@@ -46,14 +46,14 @@ ENV GOPATH /go
ENV GOROOT /usr/local/go
ENV GO111MODULE on
ENV PATH $GOPATH/bin:$GOROOT/bin:$PATH
-RUN mkdir -p /usr/local/go && wget -qO- "https://go.dev/dl/go1.21.10.linux-$TARGETARCH.tar.gz" | tar --strip-components=1 -xz -C /usr/local/go && \
+RUN mkdir -p /usr/local/go && wget -qO- "https://go.dev/dl/go1.21.11.linux-$TARGETARCH.tar.gz" | tar --strip-components=1 -xz -C /usr/local/go && \
mkdir -p "$GOPATH/src" "$GOPATH/bin" && \
go clean --modcache && \
chmod -R 777 "$GOPATH" && chmod -R a+w $(go env GOTOOLDIR)
# refer: https://code.visualstudio.com/docs/remote/containers-advanced#_avoiding-extension-reinstalls-on-container-rebuild
RUN mkdir -p /home/milvus/.vscode-server/extensions \
- /home/milvus/.vscode-server-insiders/extensions \
+ /home/milvus/.vscode-server-insiders/extensions \
&& chmod -R 777 /home/milvus
COPY --chown=0:0 build/docker/builder/entrypoint.sh /
diff --git a/build/docker/builder/gpu/ubuntu20.04/Dockerfile b/build/docker/builder/gpu/ubuntu20.04/Dockerfile
index 9378b3fd861b1..b8765bce380f5 100644
--- a/build/docker/builder/gpu/ubuntu20.04/Dockerfile
+++ b/build/docker/builder/gpu/ubuntu20.04/Dockerfile
@@ -22,7 +22,7 @@ RUN apt-get update && apt-get install -y --no-install-recommends wget curl ca-ce
apt-get remove --purge -y && \
rm -rf /var/lib/apt/lists/*
-RUN pip3 install conan==1.61.0
+RUN pip3 install conan==1.64.1
RUN mkdir /opt/vcpkg && \
wget -qO- vcpkg.tar.gz https://github.com/microsoft/vcpkg/archive/master.tar.gz | tar --strip-components=1 -xz -C /opt/vcpkg && \
@@ -51,7 +51,7 @@ ENV GOPATH /go
ENV GOROOT /usr/local/go
ENV GO111MODULE on
ENV PATH $GOPATH/bin:$GOROOT/bin:$PATH
-RUN mkdir -p /usr/local/go && wget -qO- "https://go.dev/dl/go1.21.10.linux-$TARGETARCH.tar.gz" | tar --strip-components=1 -xz -C /usr/local/go && \
+RUN mkdir -p /usr/local/go && wget -qO- "https://go.dev/dl/go1.21.11.linux-$TARGETARCH.tar.gz" | tar --strip-components=1 -xz -C /usr/local/go && \
mkdir -p "$GOPATH/src" "$GOPATH/bin" && \
curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b ${GOROOT}/bin v1.46.2 && \
# export GO111MODULE=on && go get github.com/quasilyte/go-ruleguard/cmd/ruleguard@v0.2.1 && \
@@ -74,7 +74,7 @@ RUN echo 'root:root' | chpasswd
# refer: https://code.visualstudio.com/docs/remote/containers-advanced#_avoiding-extension-reinstalls-on-container-rebuild
RUN mkdir -p /home/milvus/.vscode-server/extensions \
- /home/milvus/.vscode-server-insiders/extensions \
+ /home/milvus/.vscode-server-insiders/extensions \
&& chmod -R 777 /home/milvus
COPY --chown=0:0 build/docker/builder/entrypoint.sh /
diff --git a/build/docker/builder/gpu/ubuntu22.04/Dockerfile b/build/docker/builder/gpu/ubuntu22.04/Dockerfile
index b27a917d584e3..10470300860f0 100644
--- a/build/docker/builder/gpu/ubuntu22.04/Dockerfile
+++ b/build/docker/builder/gpu/ubuntu22.04/Dockerfile
@@ -13,9 +13,9 @@ RUN apt-get update && apt-get install -y --no-install-recommends wget curl ca-ce
# Install go
-RUN mkdir -p /usr/local/go && wget -qO- "https://go.dev/dl/go1.21.10.linux-$TARGETARCH.tar.gz" | tar --strip-components=1 -xz -C /usr/local/go
+RUN mkdir -p /usr/local/go && wget -qO- "https://go.dev/dl/go1.21.11.linux-$TARGETARCH.tar.gz" | tar --strip-components=1 -xz -C /usr/local/go
# Install conan
-RUN pip3 install conan==1.61.0
+RUN pip3 install conan==1.64.1
# Install rust
RUN curl https://sh.rustup.rs -sSf | \
sh -s -- --default-toolchain=1.73 -y
@@ -31,7 +31,7 @@ RUN vcpkg install azure-identity-cpp azure-storage-blobs-cpp gtest
# refer: https://code.visualstudio.com/docs/remote/containers-advanced#_avoiding-extension-reinstalls-on-container-rebuild
RUN mkdir -p /home/milvus/.vscode-server/extensions \
- /home/milvus/.vscode-server-insiders/extensions \
+ /home/milvus/.vscode-server-insiders/extensions \
&& chmod -R 777 /home/milvus
diff --git a/build/docker/meta-migration/builder/Dockerfile b/build/docker/meta-migration/builder/Dockerfile
index f102266fcfc44..f299854cb60c9 100644
--- a/build/docker/meta-migration/builder/Dockerfile
+++ b/build/docker/meta-migration/builder/Dockerfile
@@ -1,2 +1,2 @@
-FROM golang:1.21.10-alpine3.19
+FROM golang:1.21.11-alpine3.19
RUN apk add --no-cache make bash
\ No newline at end of file
diff --git a/build/docker/milvus/amazonlinux2023/Dockerfile b/build/docker/milvus/amazonlinux2023/Dockerfile
index 4ff24dfb4529d..2f0b01abf5877 100644
--- a/build/docker/milvus/amazonlinux2023/Dockerfile
+++ b/build/docker/milvus/amazonlinux2023/Dockerfile
@@ -16,6 +16,10 @@ ARG TARGETARCH
RUN yum install -y wget libgomp libaio libatomic openblas-devel && \
rm -rf /var/cache/yum/*
+# Add Tini
+RUN curl -L -o /tini https://github.com/krallin/tini/releases/download/v0.19.0/tini-$TARGETARCH && \
+ chmod +x /tini
+
COPY --chown=root:root --chmod=774 ./bin/ /milvus/bin/
COPY --chown=root:root --chmod=774 ./configs/ /milvus/configs/
@@ -28,9 +32,6 @@ ENV LD_LIBRARY_PATH=/milvus/lib:$LD_LIBRARY_PATH:/usr/lib
ENV LD_PRELOAD=/milvus/lib/libjemalloc.so
ENV MALLOC_CONF=background_thread:true
-# Add Tini
-ADD https://github.com/krallin/tini/releases/download/v0.19.0/tini-$TARGETARCH /tini
-RUN chmod +x /tini
ENTRYPOINT ["/tini", "--"]
WORKDIR /milvus
diff --git a/build/docker/milvus/gpu/ubuntu22.04/Dockerfile b/build/docker/milvus/gpu/ubuntu22.04/Dockerfile
index fc6a74f54781c..c045c357fa25a 100644
--- a/build/docker/milvus/gpu/ubuntu22.04/Dockerfile
+++ b/build/docker/milvus/gpu/ubuntu22.04/Dockerfile
@@ -7,6 +7,10 @@ RUN apt-get update && \
apt-get remove --purge -y && \
rm -rf /var/lib/apt/lists/*
+# Add Tini
+RUN curl -L -o /tini https://github.com/krallin/tini/releases/download/v0.19.0/tini-$TARGETARCH && \
+ chmod +x /tini
+
COPY --chown=root:root --chmod=774 ./bin/ /milvus/bin/
COPY --chown=root:root --chmod=774 ./configs/ /milvus/configs/
COPY --chown=root:root --chmod=774 ./lib/ /milvus/lib/
@@ -16,9 +20,6 @@ ENV LD_LIBRARY_PATH=/milvus/lib:$LD_LIBRARY_PATH:/usr/lib
ENV LD_PRELOAD=/milvus/lib/libjemalloc.so
ENV MALLOC_CONF=background_thread:true
-# Add Tini
-ADD https://github.com/krallin/tini/releases/download/v0.19.0/tini-$TARGETARCH /tini
-RUN chmod +x /tini
ENTRYPOINT ["/tini", "--"]
WORKDIR /milvus
diff --git a/build/docker/milvus/rockylinux8/Dockerfile b/build/docker/milvus/rockylinux8/Dockerfile
index 0862e215e8f76..1fe43ae1ff83a 100644
--- a/build/docker/milvus/rockylinux8/Dockerfile
+++ b/build/docker/milvus/rockylinux8/Dockerfile
@@ -21,6 +21,10 @@ RUN dnf -y install dnf-plugins-core && \
dnf config-manager --set-enabled powertools && \
dnf -y install openblas-devel
+# Add Tini
+RUN curl -L -o /tini https://github.com/krallin/tini/releases/download/v0.19.0/tini-$TARGETARCH && \
+ chmod +x /tini
+
COPY ./bin/ /milvus/bin/
COPY ./configs/ /milvus/configs/
@@ -32,9 +36,6 @@ ENV LD_LIBRARY_PATH=/milvus/lib:$LD_LIBRARY_PATH:/usr/lib
ENV LD_PRELOAD=/milvus/lib/libjemalloc.so
ENV MALLOC_CONF=background_thread:true
-# Add Tini
-ADD https://github.com/krallin/tini/releases/download/v0.19.0/tini-$TARGETARCH /tini
-RUN chmod +x /tini
ENTRYPOINT ["/tini", "--"]
WORKDIR /milvus
diff --git a/build/docker/milvus/ubuntu20.04/Dockerfile b/build/docker/milvus/ubuntu20.04/Dockerfile
index 670f89b3d2042..6d43668c88da3 100644
--- a/build/docker/milvus/ubuntu20.04/Dockerfile
+++ b/build/docker/milvus/ubuntu20.04/Dockerfile
@@ -18,6 +18,10 @@ RUN apt-get update && \
apt-get remove --purge -y && \
rm -rf /var/lib/apt/lists/*
+# Add Tini
+RUN curl -L -o /tini https://github.com/krallin/tini/releases/download/v0.19.0/tini-$TARGETARCH && \
+ chmod +x /tini
+
COPY --chown=root:root --chmod=774 ./bin/ /milvus/bin/
COPY --chown=root:root --chmod=774 ./configs/ /milvus/configs/
@@ -29,9 +33,6 @@ ENV LD_LIBRARY_PATH=/milvus/lib:$LD_LIBRARY_PATH:/usr/lib
ENV LD_PRELOAD=/milvus/lib/libjemalloc.so
ENV MALLOC_CONF=background_thread:true
-# Add Tini
-ADD https://github.com/krallin/tini/releases/download/v0.19.0/tini-$TARGETARCH /tini
-RUN chmod +x /tini
ENTRYPOINT ["/tini", "--"]
WORKDIR /milvus/
diff --git a/build/docker/milvus/ubuntu22.04/Dockerfile b/build/docker/milvus/ubuntu22.04/Dockerfile
index 40a4e9e0fa79f..44999ad1a861b 100644
--- a/build/docker/milvus/ubuntu22.04/Dockerfile
+++ b/build/docker/milvus/ubuntu22.04/Dockerfile
@@ -18,6 +18,10 @@ RUN apt-get update && \
apt-get remove --purge -y && \
rm -rf /var/lib/apt/lists/*
+# Add Tini
+RUN curl -L -o /tini https://github.com/krallin/tini/releases/download/v0.19.0/tini-$TARGETARCH && \
+ chmod +x /tini
+
COPY --chown=root:root --chmod=774 ./bin/ /milvus/bin/
COPY --chown=root:root --chmod=774 ./configs/ /milvus/configs/
@@ -29,9 +33,6 @@ ENV LD_LIBRARY_PATH=/milvus/lib:$LD_LIBRARY_PATH:/usr/lib
ENV LD_PRELOAD=/milvus/lib/libjemalloc.so
ENV MALLOC_CONF=background_thread:true
-# Add Tini
-ADD https://github.com/krallin/tini/releases/download/v0.19.0/tini-$TARGETARCH /tini
-RUN chmod +x /tini
ENTRYPOINT ["/tini", "--"]
WORKDIR /milvus/
diff --git a/build/rpm/milvus.spec b/build/rpm/milvus.spec
index eb5b9cd1f1ec3..2520549c3b43c 100644
--- a/build/rpm/milvus.spec
+++ b/build/rpm/milvus.spec
@@ -38,9 +38,7 @@ install -m 755 bin/minio %{buildroot}/usr/bin/milvus-minio
# lib
install -m 755 lib/libknowhere.so %{buildroot}/lib64/milvus/libknowhere.so
-install -m 755 lib/libmilvus_common.so %{buildroot}/lib64/milvus/libmilvus_common.so
-install -m 755 lib/libmilvus_indexbuilder.so %{buildroot}/lib64/milvus/libmilvus_indexbuilder.so
-install -m 755 lib/libmilvus_segcore.so %{buildroot}/lib64/milvus/libmilvus_segcore.so
+install -m 755 lib/libmilvus_core.so %{buildroot}/lib64/milvus/libmilvus_core.so
install -m 755 /usr/lib/libopenblas-r0.3.9.so %{buildroot}/lib64/milvus/libopenblas.so.0
install -m 755 lib/libngt.so.1.12.0 %{buildroot}/lib64/milvus/libngt.so.1
install -m 755 /usr/lib64/libgfortran.so.4.0.0 %{buildroot}/lib64/milvus/libgfortran.so.4
@@ -82,9 +80,7 @@ systemctl daemon-reload
/usr/bin/milvus-minio
/lib64/milvus/libknowhere.so
-/lib64/milvus/libmilvus_common.so
-/lib64/milvus/libmilvus_indexbuilder.so
-/lib64/milvus/libmilvus_segcore.so
+/lib64/milvus/libmilvus_core.so
/lib64/milvus/libopenblas.so.0
/lib64/milvus/libngt.so.1
/lib64/milvus/libgfortran.so.4
diff --git a/build/util.sh b/build/util.sh
new file mode 100644
index 0000000000000..b63c916903944
--- /dev/null
+++ b/build/util.sh
@@ -0,0 +1,14 @@
+
+# Function to check if a command exists
+command_exists() {
+ command -v "$1" >/dev/null 2>&1
+}
+
+# Check if docker-compose exists
+if command_exists docker-compose; then
+ echo "Using docker-compose"
+ DOCKER_COMPOSE_COMMAND="docker-compose"
+else
+ echo "Using docker compose"
+ DOCKER_COMPOSE_COMMAND="docker compose"
+fi
diff --git a/ci/jenkins/Nightly2.groovy b/ci/jenkins/Nightly2.groovy
new file mode 100644
index 0000000000000..3344f5e74b6ec
--- /dev/null
+++ b/ci/jenkins/Nightly2.groovy
@@ -0,0 +1,138 @@
+@Library('jenkins-shared-library@v0.46.0') _
+
+def pod = libraryResource 'io/milvus/pod/tekton-4am.yaml'
+
+String cron_timezone = 'TZ=Asia/Shanghai'
+String cron_string = BRANCH_NAME == 'master' ? '50 1 * * * ' : ''
+
+// Make timeout 4 hours so that we can run two nightly during the ci
+int total_timeout_minutes = 7 * 60
+
+def milvus_helm_chart_version = '4.2.8'
+
+pipeline {
+ triggers {
+ cron """${cron_timezone}
+ ${cron_string}"""
+ }
+ options {
+ skipDefaultCheckout true
+ timeout(time: total_timeout_minutes, unit: 'MINUTES')
+ // parallelsAlwaysFailFast()
+ buildDiscarder logRotator(artifactDaysToKeepStr: '30')
+ preserveStashes(buildCount: 5)
+ disableConcurrentBuilds(abortPrevious: true)
+ }
+ agent {
+ kubernetes {
+ cloud '4am'
+ yaml pod
+ }
+ }
+ stages {
+ stage('meta') {
+ steps {
+ container('jnlp') {
+ script {
+ isPr = env.CHANGE_ID != null
+ gitMode = isPr ? 'merge' : 'fetch'
+ gitBaseRef = isPr ? "$env.CHANGE_TARGET" : "$env.BRANCH_NAME"
+
+ get_helm_release_name = tekton.helm_release_name client: 'py',
+ ciMode: 'nightly',
+ changeId: "${isPr ? env.CHANGE_ID : env.BRANCH_NAME }",
+ buildId:"${env.BUILD_ID}"
+ }
+ }
+ }
+ }
+ stage('build') {
+ steps {
+ container('tkn') {
+ script {
+
+ def job_name = tekton.run arch: 'amd64',
+ isPr: isPr,
+ gitMode: gitMode ,
+ gitBaseRef: gitBaseRef,
+ pullRequestNumber: "$env.CHANGE_ID",
+ suppress_suffix_of_image_tag: true,
+ images: '["milvus","pytest","helm"]',
+ tekton_log_timeout: '30m'
+
+ milvus_image_tag = tekton.query_result job_name, 'milvus-image-tag'
+ pytest_image = tekton.query_result job_name, 'pytest-image-fqdn'
+ helm_image = tekton.query_result job_name, 'helm-image-fqdn'
+ }
+ }
+ }
+ post {
+ always {
+ container('tkn') {
+ script {
+ tekton.sure_stop()
+ }
+ }
+ }
+ }
+ }
+ stage('E2E Test') {
+ matrix {
+ agent {
+ kubernetes {
+ cloud '4am'
+ yaml pod
+ }
+ }
+ axes {
+ axis {
+ name 'milvus_deployment_option'
+ values 'standalone', 'distributed-pulsar', 'distributed-kafka', 'standalone-authentication', 'standalone-one-pod', 'distributed-streaming-service'
+ }
+ }
+ stages {
+ stage('E2E Test') {
+ steps {
+ container('tkn') {
+ script {
+ def helm_release_name = get_helm_release_name milvus_deployment_option
+
+ tekton.pytest helm_release_name: helm_release_name,
+ milvus_helm_version: milvus_helm_chart_version,
+ ciMode: 'nightly',
+ milvus_image_tag: milvus_image_tag,
+ pytest_image: pytest_image,
+ helm_image: helm_image,
+ milvus_deployment_option: milvus_deployment_option,
+ tekton_log_timeout: '30m',
+ verbose: 'false'
+ }
+ }
+ }
+
+ post {
+ always {
+ container('tkn') {
+ script {
+ tekton.sure_stop()
+ }
+ }
+
+ container('archive') {
+ script {
+ def helm_release_name = get_helm_release_name milvus_deployment_option
+
+ tekton.archive milvus_deployment_option: milvus_deployment_option,
+ release_name: helm_release_name ,
+ change_id: env.CHANGE_ID,
+ build_id: env.BUILD_ID
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/ci/jenkins/PR-for-go-sdk.groovy b/ci/jenkins/PR-for-go-sdk.groovy
new file mode 100644
index 0000000000000..1a81aa82573d0
--- /dev/null
+++ b/ci/jenkins/PR-for-go-sdk.groovy
@@ -0,0 +1,125 @@
+@Library('jenkins-shared-library@v0.46.0') _
+
+def pod = libraryResource 'io/milvus/pod/tekton-4am.yaml'
+
+def milvus_helm_chart_version = '4.2.8'
+
+pipeline {
+ options {
+ skipDefaultCheckout true
+ parallelsAlwaysFailFast()
+ buildDiscarder logRotator(artifactDaysToKeepStr: '30')
+ preserveStashes(buildCount: 5)
+ disableConcurrentBuilds(abortPrevious: true)
+ }
+ agent {
+ kubernetes {
+ cloud '4am'
+ yaml pod
+ }
+ }
+ stages {
+ stage('meta') {
+ steps {
+ container('jnlp') {
+ script {
+ isPr = env.CHANGE_ID != null
+ gitMode = isPr ? 'merge' : 'fetch'
+ gitBaseRef = isPr ? "$env.CHANGE_TARGET" : "$env.BRANCH_NAME"
+
+ get_helm_release_name = tekton.helm_release_name ciMode: 'e2e',
+ client: 'gotestsum',
+ changeId: "${env.CHANGE_ID}",
+ buildId:"${env.BUILD_ID}"
+ }
+ }
+ }
+ }
+ stage('build') {
+ steps {
+ container('tkn') {
+ script {
+
+ job_name = tekton.run arch: 'amd64',
+ isPr: isPr,
+ gitMode: gitMode ,
+ gitBaseRef: gitBaseRef,
+ pullRequestNumber: "$env.CHANGE_ID",
+ suppress_suffix_of_image_tag: true,
+ images: '["milvus","gotestsum","helm"]'
+
+ milvus_image_tag = tekton.query_result job_name, 'milvus-image-tag'
+ milvus_sdk_go_image = tekton.query_result job_name, 'gotestsum-image-fqdn'
+ helm_image = tekton.query_result job_name, 'helm-image-fqdn'
+ }
+ }
+ }
+ post {
+ always {
+ container('tkn') {
+ script {
+ tekton.sure_stop()
+ }
+ }
+ }
+ }
+ }
+ stage('E2E Test') {
+ matrix {
+ agent {
+ kubernetes {
+ cloud '4am'
+ yaml pod
+ }
+ }
+ axes {
+ axis {
+ name 'milvus_deployment_option'
+ values 'standalone', 'distributed'
+ }
+ }
+ stages {
+ stage('E2E Test') {
+ steps {
+ container('tkn') {
+ script {
+ def helm_release_name = get_helm_release_name milvus_deployment_option
+
+ job_name = tekton.gotestsum helm_release_name: helm_release_name,
+ milvus_helm_version: milvus_helm_chart_version,
+ ciMode: 'e2e',
+ milvus_image_tag: milvus_image_tag,
+ milvus_sdk_go_image: milvus_sdk_go_image,
+ helm_image: helm_image,
+ milvus_deployment_option: milvus_deployment_option,
+ verbose: 'false'
+ }
+ }
+ }
+
+ post {
+ always {
+ container('tkn') {
+ script {
+ tekton.sure_stop()
+ }
+ }
+
+ container('archive') {
+ script {
+ def helm_release_name = get_helm_release_name milvus_deployment_option
+
+ tekton.archive milvus_deployment_option: milvus_deployment_option,
+ release_name: helm_release_name ,
+ change_id: env.CHANGE_ID,
+ build_id: env.BUILD_ID
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/ci/jenkins/PR2.groovy b/ci/jenkins/PR2.groovy
new file mode 100644
index 0000000000000..423c6a0629038
--- /dev/null
+++ b/ci/jenkins/PR2.groovy
@@ -0,0 +1,137 @@
+@Library('jenkins-shared-library@v0.46.0') _
+
+def pod = libraryResource 'io/milvus/pod/tekton-4am.yaml'
+def milvus_helm_chart_version = '4.2.8'
+
+pipeline {
+ options {
+ skipDefaultCheckout true
+ parallelsAlwaysFailFast()
+ buildDiscarder logRotator(artifactDaysToKeepStr: '30')
+ preserveStashes(buildCount: 5)
+ disableConcurrentBuilds(abortPrevious: true)
+ }
+ agent {
+ kubernetes {
+ cloud '4am'
+ yaml pod
+ }
+ }
+ stages {
+ stage('meta') {
+ steps {
+ container('jnlp') {
+ script {
+ isPr = env.CHANGE_ID != null
+ gitMode = isPr ? 'merge' : 'fetch'
+ gitBaseRef = isPr ? "$env.CHANGE_TARGET" : "$env.BRANCH_NAME"
+
+ get_helm_release_name = tekton.helm_release_name client: 'py',
+ changeId: "${env.CHANGE_ID}",
+ buildId:"${env.BUILD_ID}"
+ }
+ }
+ }
+ }
+ stage('build') {
+ steps {
+ container('tkn') {
+ script {
+ def job_name = tekton.run arch: 'amd64',
+ isPr: isPr,
+ gitMode: gitMode ,
+ gitBaseRef: gitBaseRef,
+ pullRequestNumber: "$env.CHANGE_ID",
+ suppress_suffix_of_image_tag: true,
+ images: '["milvus","pytest","helm"]'
+
+ milvus_image_tag = tekton.query_result job_name, 'milvus-image-tag'
+ pytest_image = tekton.query_result job_name, 'pytest-image-fqdn'
+ helm_image = tekton.query_result job_name, 'helm-image-fqdn'
+ }
+ }
+ }
+ post {
+ always {
+ container('tkn') {
+ script {
+ tekton.sure_stop()
+ }
+ }
+ }
+ }
+ }
+ stage('E2E Test') {
+ matrix {
+ agent {
+ kubernetes {
+ cloud '4am'
+ yaml pod
+ }
+ }
+ axes {
+ axis {
+ name 'milvus_deployment_option'
+ values 'standalone', 'distributed', 'standalone-kafka', 'distributed-streaming-service'
+ }
+ }
+ stages {
+ stage('E2E Test') {
+ steps {
+ container('tkn') {
+ script {
+ def helm_release_name = get_helm_release_name milvus_deployment_option
+
+ if (milvus_deployment_option == 'distributed-streaming-service') {
+ try {
+ tekton.pytest helm_release_name: helm_release_name,
+ milvus_helm_version: milvus_helm_chart_version,
+ ciMode: 'e2e',
+ milvus_image_tag: milvus_image_tag,
+ pytest_image: pytest_image,
+ helm_image: helm_image,
+ milvus_deployment_option: milvus_deployment_option,
+ verbose: 'false'
+ } catch (Exception e) {
+ println e
+ }
+ } else {
+ tekton.pytest helm_release_name: helm_release_name,
+ milvus_helm_version: milvus_helm_chart_version,
+ ciMode: 'e2e',
+ milvus_image_tag: milvus_image_tag,
+ pytest_image: pytest_image,
+ helm_image: helm_image,
+ milvus_deployment_option: milvus_deployment_option,
+ verbose: 'false'
+ }
+ }
+ }
+ }
+
+ post {
+ always {
+ container('tkn') {
+ script {
+ tekton.sure_stop()
+ }
+ }
+
+ container('archive') {
+ script {
+ def helm_release_name = get_helm_release_name milvus_deployment_option
+
+ tekton.archive milvus_deployment_option: milvus_deployment_option,
+ release_name: helm_release_name ,
+ change_id: env.CHANGE_ID,
+ build_id: env.BUILD_ID
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/ci/jenkins/pod/e2e.yaml b/ci/jenkins/pod/e2e.yaml
index f82260ac48103..6fc175348b7b5 100644
--- a/ci/jenkins/pod/e2e.yaml
+++ b/ci/jenkins/pod/e2e.yaml
@@ -9,7 +9,7 @@ spec:
enableServiceLinks: false
containers:
- name: pytest
- image: harbor.milvus.io/dockerhub/milvusdb/pytest:20240517-0d0eda2
+ image: harbor.milvus.io/dockerhub/milvusdb/pytest:20240904-40d34f7
resources:
limits:
cpu: "6"
diff --git a/ci/jenkins/pod/rte.yaml b/ci/jenkins/pod/rte.yaml
index 13263f6d84805..2cb415a154d86 100644
--- a/ci/jenkins/pod/rte.yaml
+++ b/ci/jenkins/pod/rte.yaml
@@ -49,7 +49,7 @@ spec:
- mountPath: /ci-logs
name: ci-logs
- name: pytest
- image: harbor.milvus.io/dockerhub/milvusdb/pytest:20240517-0d0eda2
+ image: harbor.milvus.io/dockerhub/milvusdb/pytest:20240904-40d34f7
resources:
limits:
cpu: "6"
diff --git a/client/client.go b/client/client.go
index 803ef4935ad6e..18e76bf96658f 100644
--- a/client/client.go
+++ b/client/client.go
@@ -26,12 +26,12 @@ import (
"sync"
"time"
- "github.com/gogo/status"
grpc_retry "github.com/grpc-ecosystem/go-grpc-middleware/retry"
"google.golang.org/grpc"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/credentials"
"google.golang.org/grpc/credentials/insecure"
+ "google.golang.org/grpc/status"
"github.com/milvus-io/milvus-proto/go-api/v2/commonpb"
"github.com/milvus-io/milvus-proto/go-api/v2/milvuspb"
@@ -202,6 +202,9 @@ func (c *Client) connectInternal(ctx context.Context) error {
c.config.setServerInfo(resp.GetServerInfo().GetBuildTags())
c.setIdentifier(strconv.FormatInt(resp.GetIdentifier(), 10))
+ if c.collCache != nil {
+ c.collCache.Reset()
+ }
return nil
}
diff --git a/client/collection_options.go b/client/collection_options.go
index b4eb9a6d2b180..046a2d21c5027 100644
--- a/client/collection_options.go
+++ b/client/collection_options.go
@@ -17,7 +17,7 @@
package client
import (
- "github.com/golang/protobuf/proto"
+ "google.golang.org/protobuf/proto"
"github.com/milvus-io/milvus-proto/go-api/v2/commonpb"
"github.com/milvus-io/milvus-proto/go-api/v2/milvuspb"
diff --git a/client/collection_test.go b/client/collection_test.go
index 2a55a786b8501..0bab40f48335c 100644
--- a/client/collection_test.go
+++ b/client/collection_test.go
@@ -21,10 +21,10 @@ import (
"fmt"
"testing"
- "github.com/golang/protobuf/proto"
"github.com/samber/lo"
"github.com/stretchr/testify/mock"
"github.com/stretchr/testify/suite"
+ "google.golang.org/protobuf/proto"
"github.com/milvus-io/milvus-proto/go-api/v2/commonpb"
"github.com/milvus-io/milvus-proto/go-api/v2/milvuspb"
diff --git a/client/column/columns.go b/client/column/columns.go
index b8a3f1cf43408..905cc8c2d9ca1 100644
--- a/client/column/columns.go
+++ b/client/column/columns.go
@@ -71,9 +71,6 @@ func IDColumns(schema *entity.Schema, ids *schemapb.IDs, begin, end int) (Column
if pkField == nil {
return nil, errors.New("PK Field not found")
}
- if ids == nil {
- return nil, errors.New("nil Ids from response")
- }
switch pkField.DataType {
case entity.FieldTypeInt64:
data := ids.GetIntId().GetData()
diff --git a/client/common.go b/client/common.go
index 91987eea95c46..e03e8f3773391 100644
--- a/client/common.go
+++ b/client/common.go
@@ -32,6 +32,11 @@ func (c *CollectionCache) GetCollection(ctx context.Context, collName string) (*
return coll, err
}
+// Reset clears all cached info, used when client switching env.
+func (c *CollectionCache) Reset() {
+ c.collections = typeutil.NewConcurrentMap[string, *entity.Collection]()
+}
+
func NewCollectionCache(fetcher func(context.Context, string) (*entity.Collection, error)) *CollectionCache {
return &CollectionCache{
collections: typeutil.NewConcurrentMap[string, *entity.Collection](),
diff --git a/client/entity/schema.go b/client/entity/schema.go
index 8225ba6c2fd3c..ab8878d7bbf9c 100644
--- a/client/entity/schema.go
+++ b/client/entity/schema.go
@@ -151,33 +151,35 @@ func (s *Schema) PKField() *Field {
// Field represent field schema in milvus
type Field struct {
- ID int64 // field id, generated when collection is created, input value is ignored
- Name string // field name
- PrimaryKey bool // is primary key
- AutoID bool // is auto id
- Description string
- DataType FieldType
- TypeParams map[string]string
- IndexParams map[string]string
- IsDynamic bool
- IsPartitionKey bool
- ElementType FieldType
+ ID int64 // field id, generated when collection is created, input value is ignored
+ Name string // field name
+ PrimaryKey bool // is primary key
+ AutoID bool // is auto id
+ Description string
+ DataType FieldType
+ TypeParams map[string]string
+ IndexParams map[string]string
+ IsDynamic bool
+ IsPartitionKey bool
+ IsClusteringKey bool
+ ElementType FieldType
}
// ProtoMessage generates corresponding FieldSchema
func (f *Field) ProtoMessage() *schemapb.FieldSchema {
return &schemapb.FieldSchema{
- FieldID: f.ID,
- Name: f.Name,
- Description: f.Description,
- IsPrimaryKey: f.PrimaryKey,
- AutoID: f.AutoID,
- DataType: schemapb.DataType(f.DataType),
- TypeParams: MapKvPairs(f.TypeParams),
- IndexParams: MapKvPairs(f.IndexParams),
- IsDynamic: f.IsDynamic,
- IsPartitionKey: f.IsPartitionKey,
- ElementType: schemapb.DataType(f.ElementType),
+ FieldID: f.ID,
+ Name: f.Name,
+ Description: f.Description,
+ IsPrimaryKey: f.PrimaryKey,
+ AutoID: f.AutoID,
+ DataType: schemapb.DataType(f.DataType),
+ TypeParams: MapKvPairs(f.TypeParams),
+ IndexParams: MapKvPairs(f.IndexParams),
+ IsDynamic: f.IsDynamic,
+ IsPartitionKey: f.IsPartitionKey,
+ IsClusteringKey: f.IsClusteringKey,
+ ElementType: schemapb.DataType(f.ElementType),
}
}
@@ -224,6 +226,11 @@ func (f *Field) WithIsPartitionKey(isPartitionKey bool) *Field {
return f
}
+func (f *Field) WithIsClusteringKey(isClusteringKey bool) *Field {
+ f.IsClusteringKey = isClusteringKey
+ return f
+}
+
/*
func (f *Field) WithDefaultValueBool(defaultValue bool) *Field {
f.DefaultValue = &schemapb.ValueField{
@@ -340,6 +347,7 @@ func (f *Field) ReadProto(p *schemapb.FieldSchema) *Field {
f.IndexParams = KvPairsMap(p.GetIndexParams())
f.IsDynamic = p.GetIsDynamic()
f.IsPartitionKey = p.GetIsPartitionKey()
+ f.IsClusteringKey = p.GetIsClusteringKey()
f.ElementType = FieldType(p.GetElementType())
return f
diff --git a/client/entity/schema_test.go b/client/entity/schema_test.go
index 4f32f5b68a3a3..ed81c39e5074d 100644
--- a/client/entity/schema_test.go
+++ b/client/entity/schema_test.go
@@ -43,6 +43,7 @@ func TestFieldSchema(t *testing.T) {
NewField().WithName("string_field").WithDataType(FieldTypeString).WithIsAutoID(false).WithIsPrimaryKey(true).WithIsDynamic(false).WithTypeParams("max_len", "32").WithDescription("string_field desc"),
NewField().WithName("partition_key").WithDataType(FieldTypeInt32).WithIsPartitionKey(true),
NewField().WithName("array_field").WithDataType(FieldTypeArray).WithElementType(FieldTypeBool).WithMaxCapacity(128),
+ NewField().WithName("clustering_key").WithDataType(FieldTypeInt32).WithIsClusteringKey(true),
/*
NewField().WithName("default_value_bool").WithDataType(FieldTypeBool).WithDefaultValueBool(true),
NewField().WithName("default_value_int").WithDataType(FieldTypeInt32).WithDefaultValueInt(1),
@@ -60,6 +61,7 @@ func TestFieldSchema(t *testing.T) {
assert.Equal(t, field.AutoID, fieldSchema.GetAutoID())
assert.Equal(t, field.PrimaryKey, fieldSchema.GetIsPrimaryKey())
assert.Equal(t, field.IsPartitionKey, fieldSchema.GetIsPartitionKey())
+ assert.Equal(t, field.IsClusteringKey, fieldSchema.GetIsClusteringKey())
assert.Equal(t, field.IsDynamic, fieldSchema.GetIsDynamic())
assert.Equal(t, field.Description, fieldSchema.GetDescription())
assert.Equal(t, field.TypeParams, KvPairsMap(fieldSchema.GetTypeParams()))
@@ -75,6 +77,7 @@ func TestFieldSchema(t *testing.T) {
assert.Equal(t, field.Description, nf.Description)
assert.Equal(t, field.IsDynamic, nf.IsDynamic)
assert.Equal(t, field.IsPartitionKey, nf.IsPartitionKey)
+ assert.Equal(t, field.IsClusteringKey, nf.IsClusteringKey)
assert.EqualValues(t, field.TypeParams, nf.TypeParams)
assert.EqualValues(t, field.ElementType, nf.ElementType)
}
diff --git a/client/go.mod b/client/go.mod
index 57793cb5ed9ef..6645153fa324b 100644
--- a/client/go.mod
+++ b/client/go.mod
@@ -5,24 +5,24 @@ go 1.21
require (
github.com/blang/semver/v4 v4.0.0
github.com/cockroachdb/errors v1.9.1
- github.com/gogo/status v1.1.0
- github.com/golang/protobuf v1.5.4
github.com/grpc-ecosystem/go-grpc-middleware v1.3.0
- github.com/milvus-io/milvus-proto/go-api/v2 v2.3.4-0.20240613032350-814e4bddd264
- github.com/milvus-io/milvus/pkg v0.0.2-0.20240317152703-17b4938985f3
+ github.com/milvus-io/milvus-proto/go-api/v2 v2.3.4-0.20240815123953-6dab6fcd6454
+ github.com/milvus-io/milvus/pkg v0.0.2-0.20240801085213-a642a26ed4c6
github.com/quasilyte/go-ruleguard/dsl v0.3.22
github.com/samber/lo v1.27.0
- github.com/stretchr/testify v1.8.4
+ github.com/stretchr/testify v1.9.0
github.com/tidwall/gjson v1.17.1
go.uber.org/atomic v1.10.0
- google.golang.org/grpc v1.57.1
+ golang.org/x/exp v0.0.0-20230224173230-c95f2b4c22f2
+ google.golang.org/grpc v1.65.0
+ google.golang.org/protobuf v1.34.2
)
require (
github.com/benbjohnson/clock v1.1.0 // indirect
github.com/beorn7/perks v1.0.1 // indirect
- github.com/cenkalti/backoff/v4 v4.2.0 // indirect
- github.com/cespare/xxhash/v2 v2.2.0 // indirect
+ github.com/cenkalti/backoff/v4 v4.2.1 // indirect
+ github.com/cespare/xxhash/v2 v2.3.0 // indirect
github.com/cilium/ebpf v0.11.0 // indirect
github.com/cockroachdb/logtags v0.0.0-20211118104740-dabe8e521a4f // indirect
github.com/cockroachdb/redact v1.1.3 // indirect
@@ -35,17 +35,18 @@ require (
github.com/form3tech-oss/jwt-go v3.2.3+incompatible // indirect
github.com/fsnotify/fsnotify v1.4.9 // indirect
github.com/getsentry/sentry-go v0.12.0 // indirect
- github.com/go-logr/logr v1.3.0 // indirect
+ github.com/go-logr/logr v1.4.2 // indirect
github.com/go-logr/stdr v1.2.2 // indirect
github.com/go-ole/go-ole v1.2.6 // indirect
github.com/godbus/dbus/v5 v5.0.4 // indirect
- github.com/gogo/googleapis v1.4.1 // indirect
github.com/gogo/protobuf v1.3.2 // indirect
+ github.com/golang/protobuf v1.5.4 // indirect
github.com/google/btree v1.1.2 // indirect
+ github.com/google/uuid v1.6.0 // indirect
github.com/gorilla/websocket v1.4.2 // indirect
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 // indirect
github.com/grpc-ecosystem/grpc-gateway v1.16.0 // indirect
- github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0 // indirect
+ github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0 // indirect
github.com/hashicorp/hcl v1.0.0 // indirect
github.com/jonboulle/clockwork v0.2.2 // indirect
github.com/json-iterator/go v1.1.12 // indirect
@@ -77,7 +78,7 @@ require (
github.com/spf13/jwalterweatherman v1.1.0 // indirect
github.com/spf13/pflag v1.0.5 // indirect
github.com/spf13/viper v1.8.1 // indirect
- github.com/stretchr/objx v0.5.0 // indirect
+ github.com/stretchr/objx v0.5.2 // indirect
github.com/subosito/gotenv v1.2.0 // indirect
github.com/tidwall/match v1.1.1 // indirect
github.com/tidwall/pretty v1.2.0 // indirect
@@ -85,6 +86,7 @@ require (
github.com/tklauser/numcpus v0.4.0 // indirect
github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 // indirect
github.com/uber/jaeger-client-go v2.30.0+incompatible // indirect
+ github.com/x448/float16 v0.8.4 // indirect
github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 // indirect
github.com/yusufpapurcu/wmi v1.2.2 // indirect
go.etcd.io/bbolt v1.3.6 // indirect
@@ -95,29 +97,26 @@ require (
go.etcd.io/etcd/pkg/v3 v3.5.5 // indirect
go.etcd.io/etcd/raft/v3 v3.5.5 // indirect
go.etcd.io/etcd/server/v3 v3.5.5 // indirect
- go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.38.0 // indirect
- go.opentelemetry.io/otel v1.13.0 // indirect
- go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.13.0 // indirect
- go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.13.0 // indirect
- go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.13.0 // indirect
- go.opentelemetry.io/otel/metric v0.35.0 // indirect
- go.opentelemetry.io/otel/sdk v1.13.0 // indirect
- go.opentelemetry.io/otel/trace v1.13.0 // indirect
- go.opentelemetry.io/proto/otlp v0.19.0 // indirect
- go.uber.org/automaxprocs v1.5.2 // indirect
+ go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 // indirect
+ go.opentelemetry.io/otel v1.28.0 // indirect
+ go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.20.0 // indirect
+ go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.20.0 // indirect
+ go.opentelemetry.io/otel/metric v1.28.0 // indirect
+ go.opentelemetry.io/otel/sdk v1.28.0 // indirect
+ go.opentelemetry.io/otel/trace v1.28.0 // indirect
+ go.opentelemetry.io/proto/otlp v1.0.0 // indirect
+ go.uber.org/automaxprocs v1.5.3 // indirect
go.uber.org/multierr v1.7.0 // indirect
go.uber.org/zap v1.20.0 // indirect
- golang.org/x/crypto v0.22.0 // indirect
- golang.org/x/exp v0.0.0-20230224173230-c95f2b4c22f2 // indirect
- golang.org/x/net v0.24.0 // indirect
- golang.org/x/sync v0.1.0 // indirect
- golang.org/x/sys v0.20.0 // indirect
- golang.org/x/text v0.15.0 // indirect
- golang.org/x/time v0.3.0 // indirect
- google.golang.org/genproto v0.0.0-20230526161137-0005af68ea54 // indirect
- google.golang.org/genproto/googleapis/api v0.0.0-20230525234035-dd9d682886f9 // indirect
- google.golang.org/genproto/googleapis/rpc v0.0.0-20230525234030-28d5490b6b19 // indirect
- google.golang.org/protobuf v1.33.0 // indirect
+ golang.org/x/crypto v0.25.0 // indirect
+ golang.org/x/net v0.27.0 // indirect
+ golang.org/x/sync v0.7.0 // indirect
+ golang.org/x/sys v0.22.0 // indirect
+ golang.org/x/text v0.16.0 // indirect
+ golang.org/x/time v0.5.0 // indirect
+ google.golang.org/genproto v0.0.0-20231106174013-bbf56f31fb17 // indirect
+ google.golang.org/genproto/googleapis/api v0.0.0-20240528184218-531527333157 // indirect
+ google.golang.org/genproto/googleapis/rpc v0.0.0-20240730163845-b1a4ccb954bf // indirect
gopkg.in/inf.v0 v0.9.1 // indirect
gopkg.in/ini.v1 v1.62.0 // indirect
gopkg.in/natefinch/lumberjack.v2 v2.0.0 // indirect
diff --git a/client/go.sum b/client/go.sum
index 5f7281f966b73..8e98106412057 100644
--- a/client/go.sum
+++ b/client/go.sum
@@ -18,17 +18,12 @@ cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmW
cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg=
cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8=
cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0=
-cloud.google.com/go v0.110.0 h1:Zc8gqp3+a9/Eyph2KDmcGaPtbKRIoqq4YTlL4NMD0Ys=
cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o=
cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE=
cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc=
cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg=
cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc=
cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ=
-cloud.google.com/go/compute v1.19.1 h1:am86mquDUgjGNWxiGn+5PGLbmgiWXlE/yNWpIpNvuXY=
-cloud.google.com/go/compute v1.19.1/go.mod h1:6ylj3a05WF8leseCdIf77NK0g1ey+nj5IKd5/kvShxE=
-cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY=
-cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA=
cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE=
cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk=
cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk=
@@ -76,15 +71,15 @@ github.com/bketelsen/crypt v0.0.4/go.mod h1:aI6NrJ0pMGgvZKL1iVgXLnfIFJtfV+bKCoqO
github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM=
github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ=
github.com/cenkalti/backoff/v4 v4.1.1/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw=
-github.com/cenkalti/backoff/v4 v4.2.0 h1:HN5dHm3WBOgndBH6E8V0q2jIYIR3s9yglV8k/+MN3u4=
-github.com/cenkalti/backoff/v4 v4.2.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE=
+github.com/cenkalti/backoff/v4 v4.2.1 h1:y4OZtCnogmCPw98Zjyt5a6+QwPLGkiQsYW5oUqylYbM=
+github.com/cenkalti/backoff/v4 v4.2.1/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE=
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
github.com/certifi/gocertifi v0.0.0-20191021191039-0944d244cd40/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA=
github.com/certifi/gocertifi v0.0.0-20200922220541-2c3bb06c6054/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA=
github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc=
github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
-github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44=
-github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
+github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=
+github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
@@ -94,13 +89,8 @@ github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDk
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
-github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI=
github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
-github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
-github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
-github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4 h1:/inchEIKaYC1Akx+H+gqO04wryn5h75LSazbRlnya1k=
-github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
github.com/cockroachdb/datadriven v0.0.0-20200714090401-bf6692d28da5/go.mod h1:h6jFvWxBdQXxjopDMZyH2UVceIRfR84bdzbkoKrsWNo=
github.com/cockroachdb/datadriven v1.0.2 h1:H9MtNqVoVhvd9nCBwOyDjUEdZCREqbIdCJD93PBm/jA=
github.com/cockroachdb/datadriven v1.0.2/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU=
@@ -151,8 +141,6 @@ github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.m
github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ=
github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0=
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
-github.com/envoyproxy/protoc-gen-validate v0.10.1 h1:c0g45+xCJhdgFGw7a5QAfdS4byAbud7miNWJ1WwEVf8=
-github.com/envoyproxy/protoc-gen-validate v0.10.1/go.mod h1:DRjgyB0I43LtJapqN6NiRwroiAU2PaFuvk/vjgh61ss=
github.com/etcd-io/bbolt v1.3.3/go.mod h1:ZF2nL25h33cCyBtcyWeZ2/I3HQOfTP+0PIEvHjkjCrw=
github.com/fasthttp-contrib/websocket v0.0.0-20160511215533-1f3b11f56072/go.mod h1:duJ4Jxv5lDcvg4QuQr0oowTf7dz4/CR8NtyCooz9HL8=
github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
@@ -184,8 +172,8 @@ github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9
github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk=
github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A=
github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
-github.com/go-logr/logr v1.3.0 h1:2y3SDp0ZXuc6/cjLSZ+Q3ir+QB9T/iG5yYRXqsagWSY=
-github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
+github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY=
+github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
github.com/go-martini/martini v0.0.0-20170121215854-22fa46961aab/go.mod h1:/P9AEU963A2AYjv4d1V5eVL1CQbEJq6aCNHDDjibzu8=
@@ -198,7 +186,6 @@ github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/E
github.com/godbus/dbus/v5 v5.0.4 h1:9349emZab16e7zQvpmsbtjc18ykshndd8y2PG3sgJbA=
github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
github.com/gogo/googleapis v0.0.0-20180223154316-0cd9801be74a/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s=
-github.com/gogo/googleapis v1.4.1 h1:1Yx4Myt7BxzvUr5ldGSbwYiZG6t9wGBZ+8/fX3Wvtq0=
github.com/gogo/googleapis v1.4.1/go.mod h1:2lpHqI5OcWCtVElxXnPt+s8oJvMpySlOyM6xDCrzib4=
github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
@@ -206,13 +193,11 @@ github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zV
github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o=
github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
-github.com/gogo/status v1.1.0 h1:+eIkrewn5q6b30y+g/BJINVVdi2xH7je5MPJ3ZPK3JA=
github.com/gogo/status v1.1.0/go.mod h1:BFv9nrluPLmrS0EmGVvLaPNmRosr9KapBYd5/hpY1WM=
github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I=
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
-github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4=
-github.com/golang/glog v1.1.0 h1:/d3pCKDPWNnvIWe0vVUpNP32qc8U3PDVxySP/y360qE=
-github.com/golang/glog v1.1.0/go.mod h1:pfYeQZ3JWZoXTV5sFc986z3HTpwQs9At6P4ImfuP3NQ=
+github.com/golang/glog v1.2.1 h1:OptwRhECazUx5ix5TTWC3EZhsZEHWcYWY4FQHTIubm4=
+github.com/golang/glog v1.2.1/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w=
github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
@@ -263,8 +248,9 @@ github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/
github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
+github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
+github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck=
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0=
@@ -285,6 +271,8 @@ github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLe
github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
+github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
+github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=
github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
@@ -301,8 +289,8 @@ github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgf
github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY=
github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo=
github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw=
-github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0 h1:BZHcxBETFHIdVyhyEfOvn/RdU/QGdLI4y34qQGjGWO0=
-github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0/go.mod h1:hgWBS7lorOAVIJEQMi4ZsPv9hVvWI6+ch50m39Pf2Ks=
+github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0 h1:YBftPWNWd4WwGqtY2yeZL2ef8rHAxPBD8KFhJpmcqms=
+github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0/go.mod h1:YN5jB8ie0yfIUg6VvR9Kz84aCaG7AsGZnLjhHbUqwPg=
github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q=
github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8=
github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
@@ -402,10 +390,10 @@ github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfr
github.com/mediocregopher/radix/v3 v3.4.2/go.mod h1:8FL3F6UQRXHXIBSPUs5h0RybMF8i4n7wVopoX3x7Bv8=
github.com/microcosm-cc/bluemonday v1.0.2/go.mod h1:iVP4YcDBq+n/5fb23BhYFvIMq/leAFZyRl6bYmGDlGc=
github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg=
-github.com/milvus-io/milvus-proto/go-api/v2 v2.3.4-0.20240613032350-814e4bddd264 h1:IfydraydTj9bmGRcAsT/uVj9by4k6jmjN/nIM7p7JFk=
-github.com/milvus-io/milvus-proto/go-api/v2 v2.3.4-0.20240613032350-814e4bddd264/go.mod h1:1OIl0v5PQeNxIJhCvY+K55CBUOYDZevw9g9380u1Wek=
-github.com/milvus-io/milvus/pkg v0.0.2-0.20240317152703-17b4938985f3 h1:ZBpRWhBa7FTFxW4YYVv9AUESoW1Xyb3KNXTzTqfkZmw=
-github.com/milvus-io/milvus/pkg v0.0.2-0.20240317152703-17b4938985f3/go.mod h1:jQ2BUZny1COsgv1Qbcv8dmbppW+V9J/c4YQZNb3EOm8=
+github.com/milvus-io/milvus-proto/go-api/v2 v2.3.4-0.20240815123953-6dab6fcd6454 h1:JmZCYjMPpiE4ksZw0AUxXWkDY7wwA4fhS+SO1N211Vw=
+github.com/milvus-io/milvus-proto/go-api/v2 v2.3.4-0.20240815123953-6dab6fcd6454/go.mod h1:/6UT4zZl6awVeXLeE7UGDWZvXj3IWkRsh3mqsn0DiAs=
+github.com/milvus-io/milvus/pkg v0.0.2-0.20240801085213-a642a26ed4c6 h1:dotu470D/DkctdLHsTCCmuvAD3h5C8gkFhMxb0Zlu7A=
+github.com/milvus-io/milvus/pkg v0.0.2-0.20240801085213-a642a26ed4c6/go.mod h1:tdeEcpeaAcrIJgrr6LVzu7SYl9zn18dNKZwPmCUb0Io=
github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc=
github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
@@ -547,8 +535,9 @@ github.com/spf13/viper v1.8.1/go.mod h1:o0Pch8wJ9BVSWGQMbra6iw0oQ5oktSIBaujf1rJH
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
-github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c=
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
+github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY=
+github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA=
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
@@ -558,8 +547,8 @@ github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
-github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=
-github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
+github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
+github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s=
github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw=
github.com/thoas/go-funk v0.9.1 h1:O549iLZqPpTUQ10ykd26sZhzD+rmR5pWhuElrhbC20M=
@@ -589,6 +578,8 @@ github.com/valyala/fasthttp v1.6.0/go.mod h1:FstJa9V+Pj9vQ7OJie2qMHdwemEDaDiSdBn
github.com/valyala/fasttemplate v1.0.1/go.mod h1:UQGH1tvbgY+Nz5t2n7tXsz52dQxojPUpymEIMZ47gx8=
github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ=
github.com/valyala/tcplisten v0.0.0-20161114210144-ceec8f93295a/go.mod h1:v3UYOV9WzVtRmSR+PDvWpU/qWl4Wa5LApYYX4ZtKbio=
+github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM=
+github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg=
github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU=
github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ=
github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y=
@@ -634,40 +625,38 @@ go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk=
go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E=
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.25.0/go.mod h1:E5NNboN0UqSAki0Atn9kVwaN7I+l25gGxDqBueo/74E=
-go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.38.0 h1:g/BAN5o90Pr6D8xMRezjzGOHBpc15U+4oE53nZLiae4=
-go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.38.0/go.mod h1:+F41JBSkye7aYJELRvIMF0Z66reIwIOL0St75ZVwSJs=
+go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 h1:4Pp6oUg3+e/6M4C0A/3kJ2VYa++dsWVTtGgLVj5xtHg=
+go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0/go.mod h1:Mjt1i1INqiaoZOMGR1RIUJN+i3ChKoFRqzrRQhlkbs0=
go.opentelemetry.io/otel v1.0.1/go.mod h1:OPEOD4jIT2SlZPMmwT6FqZz2C0ZNdQqiWcoK6M0SNFU=
-go.opentelemetry.io/otel v1.13.0 h1:1ZAKnNQKwBBxFtww/GwxNUyTf0AxkZzrukO8MeXqe4Y=
-go.opentelemetry.io/otel v1.13.0/go.mod h1:FH3RtdZCzRkJYFTCsAKDy9l/XYjMdNv6QrkFFB8DvVg=
-go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.13.0 h1:pa05sNT/P8OsIQ8mPZKTIyiBuzS/xDGLVx+DCt0y6Vs=
-go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.13.0/go.mod h1:rqbht/LlhVBgn5+k3M5QK96K5Xb0DvXpMJ5SFQpY6uw=
+go.opentelemetry.io/otel v1.28.0 h1:/SqNcYk+idO0CxKEUOtKQClMK/MimZihKYMruSMViUo=
+go.opentelemetry.io/otel v1.28.0/go.mod h1:q68ijF8Fc8CnMHKyzqL6akLO46ePnjkgfIMIjUIX9z4=
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.0.1/go.mod h1:Kv8liBeVNFkkkbilbgWRpV+wWuu+H5xdOT6HAgd30iw=
-go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.13.0 h1:Any/nVxaoMq1T2w0W85d6w5COlLuCCgOYKQhJJWEMwQ=
-go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.13.0/go.mod h1:46vAP6RWfNn7EKov73l5KBFlNxz8kYlxR1woU+bJ4ZY=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.20.0 h1:DeFD0VgTZ+Cj6hxravYYZE2W4GlneVH81iAOPjZkzk8=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.20.0/go.mod h1:GijYcYmNpX1KazD5JmWGsi4P7dDTTTnfv1UbGn84MnU=
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.0.1/go.mod h1:xOvWoTOrQjxjW61xtOmD/WKGRYb/P4NzRo3bs65U6Rk=
-go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.13.0 h1:Wz7UQn7/eIqZVDJbuNEM6PmqeA71cWXrWcXekP5HZgU=
-go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.13.0/go.mod h1:OhH1xvgA5jZW2M/S4PcvtDlFE1VULRRBsibBrKuJQGI=
-go.opentelemetry.io/otel/metric v0.35.0 h1:aPT5jk/w7F9zW51L7WgRqNKDElBdyRLGuBtI5MX34e8=
-go.opentelemetry.io/otel/metric v0.35.0/go.mod h1:qAcbhaTRFU6uG8QM7dDo7XvFsWcugziq/5YI065TokQ=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.20.0 h1:gvmNvqrPYovvyRmCSygkUDyL8lC5Tl845MLEwqpxhEU=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.20.0/go.mod h1:vNUq47TGFioo+ffTSnKNdob241vePmtNZnAODKapKd0=
+go.opentelemetry.io/otel/metric v1.28.0 h1:f0HGvSl1KRAU1DLgLGFjrwVyismPlnuU6JD6bOeuA5Q=
+go.opentelemetry.io/otel/metric v1.28.0/go.mod h1:Fb1eVBFZmLVTMb6PPohq3TO9IIhUisDsbJoL/+uQW4s=
go.opentelemetry.io/otel/sdk v1.0.1/go.mod h1:HrdXne+BiwsOHYYkBE5ysIcv2bvdZstxzmCQhxTcZkI=
-go.opentelemetry.io/otel/sdk v1.13.0 h1:BHib5g8MvdqS65yo2vV1s6Le42Hm6rrw08qU6yz5JaM=
-go.opentelemetry.io/otel/sdk v1.13.0/go.mod h1:YLKPx5+6Vx/o1TCUYYs+bpymtkmazOMT6zoRrC7AQ7I=
+go.opentelemetry.io/otel/sdk v1.28.0 h1:b9d7hIry8yZsgtbmM0DKyPWMMUMlK9NEKuIG4aBqWyE=
+go.opentelemetry.io/otel/sdk v1.28.0/go.mod h1:oYj7ClPUA7Iw3m+r7GeEjz0qckQRJK2B8zjcZEfu7Pg=
go.opentelemetry.io/otel/trace v1.0.1/go.mod h1:5g4i4fKLaX2BQpSBsxw8YYcgKpMMSW3x7ZTuYBr3sUk=
-go.opentelemetry.io/otel/trace v1.13.0 h1:CBgRZ6ntv+Amuj1jDsMhZtlAPT6gbyIRdaIzFhfBSdY=
-go.opentelemetry.io/otel/trace v1.13.0/go.mod h1:muCvmmO9KKpvuXSf3KKAXXB2ygNYHQ+ZfI5X08d3tds=
+go.opentelemetry.io/otel/trace v1.28.0 h1:GhQ9cUuQGmNDd5BTCP2dAvv75RdMxEfTmYejp+lkx9g=
+go.opentelemetry.io/otel/trace v1.28.0/go.mod h1:jPyXzNPg6da9+38HEwElrQiHlVMTnVfM3/yv2OlIHaI=
go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI=
go.opentelemetry.io/proto/otlp v0.9.0/go.mod h1:1vKfU9rv61e9EVGthD1zNvUbiwPcimSsOPU9brfSHJg=
-go.opentelemetry.io/proto/otlp v0.19.0 h1:IVN6GR+mhC4s5yfcTbmzHYODqvWAp3ZedA2SJPI1Nnw=
-go.opentelemetry.io/proto/otlp v0.19.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U=
+go.opentelemetry.io/proto/otlp v1.0.0 h1:T0TX0tmXU8a3CbNXzEKGeU5mIVOdf0oykP+u2lIVU/I=
+go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v80hjKIs5JXpM=
go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
go.uber.org/atomic v1.10.0 h1:9qC72Qh0+3MqyJbAn8YU5xVq1frD8bn3JtD2oXtafVQ=
go.uber.org/atomic v1.10.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0=
-go.uber.org/automaxprocs v1.5.2 h1:2LxUOGiR3O6tw8ui5sZa2LAaHnsviZdVOUZw4fvbnME=
-go.uber.org/automaxprocs v1.5.2/go.mod h1:eRbA25aqJrxAbsLO0xy5jVwPt7FQnRgjW+efnwa1WM0=
+go.uber.org/automaxprocs v1.5.3 h1:kWazyxZUrS3Gs4qUpbwo5kEIMGe/DAvi5Z4tl2NW4j8=
+go.uber.org/automaxprocs v1.5.3/go.mod h1:eRbA25aqJrxAbsLO0xy5jVwPt7FQnRgjW+efnwa1WM0=
go.uber.org/goleak v1.1.11/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ=
-go.uber.org/goleak v1.2.0 h1:xqgm/S+aQvhWFTtR0XK3Jvg7z8kGV8P4X14IzwN3Eqk=
-go.uber.org/goleak v1.2.0/go.mod h1:XJYK+MuIchqpmGmUSAzotztawfKvYLUIgg7guXrwVUo=
+go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
+go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=
go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0=
go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU=
go.uber.org/multierr v1.7.0 h1:zaiO/rmgFjbmCXdSYJWQcdvOCsthmdaHfr3Gm2Kx4Ec=
@@ -690,8 +679,8 @@ golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPh
golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
-golang.org/x/crypto v0.22.0 h1:g1v0xeRhjcugydODzvb3mEM9SQ0HGp9s/nh3COQ/C30=
-golang.org/x/crypto v0.22.0/go.mod h1:vr6Su+7cTlO45qkww3VDJlzDn0ctJvRgYbC2NvXHt+M=
+golang.org/x/crypto v0.25.0 h1:ypSNr+bnYL2YhwoMt2zPxHFmbAN1KZs/njMG3hxUp30=
+golang.org/x/crypto v0.25.0/go.mod h1:T+wALwcMOSE0kXgUAnPAHqTLW+XHgcELELW8VaDgm/M=
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
@@ -774,8 +763,8 @@ golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLd
golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
golang.org/x/net v0.0.0-20211008194852-3b03d305991f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
-golang.org/x/net v0.24.0 h1:1PcaxkF854Fu3+lvBIx5SYn9wRlBzzcnHZSiaFFAb0w=
-golang.org/x/net v0.24.0/go.mod h1:2Q7sJY5mzlzWjKtYUEXSlBWCdyaioyXzRB2RtU8KVE8=
+golang.org/x/net v0.27.0 h1:5K3Njcw06/l2y9vpGCSdcxWOYHOUk3dVNGDXN+FvAys=
+golang.org/x/net v0.27.0/go.mod h1:dDi0PyhWNoiUOrAS8uXv/vnScO4wnHQO4mj9fn/RytE=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
@@ -788,9 +777,6 @@ golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ
golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
golang.org/x/oauth2 v0.0.0-20210402161424-2e8d93401602/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
-golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
-golang.org/x/oauth2 v0.7.0 h1:qe6s0zUXlPX80/dITx3440hWZ7GwMwgDDyrSGTPJG/g=
-golang.org/x/oauth2 v0.7.0/go.mod h1:hPLQkd9LyjfXTiRohC/41GhcFqxisoUQ99sCUOHO9x4=
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
@@ -802,8 +788,9 @@ golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJ
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o=
golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M=
+golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
@@ -874,8 +861,8 @@ golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBc
golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y=
-golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/sys v0.22.0 h1:RI27ohtqKCnwULzJLqkv897zojh5/DwS/ENaMzUOaWI=
+golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
@@ -886,15 +873,15 @@ golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
-golang.org/x/text v0.15.0 h1:h1V/4gjBv8v9cjcR6+AR5+/cIYK5N/WAgiv4xlsEtAk=
-golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
+golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4=
+golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI=
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20201208040808-7e3f01d25324/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
-golang.org/x/time v0.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4=
-golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
+golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk=
+golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
@@ -984,7 +971,6 @@ google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7
google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0=
google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
-google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c=
google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
google.golang.org/genproto v0.0.0-20180518175338-11a468237815/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
@@ -1030,13 +1016,12 @@ google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6D
google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A=
google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0=
google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24=
-google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=
-google.golang.org/genproto v0.0.0-20230526161137-0005af68ea54 h1:9NWlQfY2ePejTmfwUH1OWwmznFa+0kKcHGPDvcPza9M=
-google.golang.org/genproto v0.0.0-20230526161137-0005af68ea54/go.mod h1:zqTuNwFlFRsw5zIts5VnzLQxSRqh+CGOTVMlYbY0Eyk=
-google.golang.org/genproto/googleapis/api v0.0.0-20230525234035-dd9d682886f9 h1:m8v1xLLLzMe1m5P+gCTF8nJB9epwZQUBERm20Oy1poQ=
-google.golang.org/genproto/googleapis/api v0.0.0-20230525234035-dd9d682886f9/go.mod h1:vHYtlOoi6TsQ3Uk2yxR7NI5z8uoV+3pZtR4jmHIkRig=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20230525234030-28d5490b6b19 h1:0nDDozoAU19Qb2HwhXadU8OcsiO/09cnTqhUtq2MEOM=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20230525234030-28d5490b6b19/go.mod h1:66JfowdXAEgad5O9NnYcsNPLCPZJD++2L9X0PCMODrA=
+google.golang.org/genproto v0.0.0-20231106174013-bbf56f31fb17 h1:wpZ8pe2x1Q3f2KyT5f8oP/fa9rHAKgFPr/HZdNuS+PQ=
+google.golang.org/genproto v0.0.0-20231106174013-bbf56f31fb17/go.mod h1:J7XzRzVy1+IPwWHZUzoD0IccYZIrXILAQpc+Qy9CMhY=
+google.golang.org/genproto/googleapis/api v0.0.0-20240528184218-531527333157 h1:7whR9kGa5LUwFtpLm2ArCEejtnxlGeLbAyjFY8sGNFw=
+google.golang.org/genproto/googleapis/api v0.0.0-20240528184218-531527333157/go.mod h1:99sLkeliLXfdj2J75X3Ho+rrVCaJze0uwN7zDDkjPVU=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20240730163845-b1a4ccb954bf h1:liao9UHurZLtiEwBgT9LMOnKYsHze6eA6w1KQCMVN2Q=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20240730163845-b1a4ccb954bf/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY=
google.golang.org/grpc v1.12.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw=
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=
@@ -1061,9 +1046,8 @@ google.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQ
google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM=
google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34=
google.golang.org/grpc v1.41.0/go.mod h1:U3l9uK9J0sini8mHphKoXyaqDA/8VyGnDee1zzIUK6k=
-google.golang.org/grpc v1.42.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU=
-google.golang.org/grpc v1.57.1 h1:upNTNqv0ES+2ZOOqACwVtS3Il8M12/+Hz41RCPzAjQg=
-google.golang.org/grpc v1.57.1/go.mod h1:Sd+9RMTACXwmub0zcNY2c4arhtrbBYD1AUHI/dt16Mo=
+google.golang.org/grpc v1.65.0 h1:bs/cUb4lp1G5iImFFd3u5ixQzweKizoZJAwBNLR42lc=
+google.golang.org/grpc v1.65.0/go.mod h1:WgYC2ypjlB0EiQi6wdKixMqukr6lBc0Vo+oOgjrM5ZQ=
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
@@ -1077,8 +1061,8 @@ google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlba
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
-google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI=
-google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
+google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg=
+google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw=
gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
diff --git a/client/index.go b/client/index.go
index 79320484632e7..77784ece67b04 100644
--- a/client/index.go
+++ b/client/index.go
@@ -39,11 +39,11 @@ type CreateIndexTask struct {
}
func (t *CreateIndexTask) Await(ctx context.Context) error {
- ticker := time.NewTicker(t.interval)
- defer ticker.Stop()
+ timer := time.NewTimer(t.interval)
+ defer timer.Stop()
for {
select {
- case <-ticker.C:
+ case <-timer.C:
finished := false
err := t.client.callService(func(milvusService milvuspb.MilvusServiceClient) error {
resp, err := milvusService.DescribeIndex(ctx, &milvuspb.DescribeIndexRequest{
@@ -75,7 +75,7 @@ func (t *CreateIndexTask) Await(ctx context.Context) error {
if finished {
return nil
}
- ticker.Reset(t.interval)
+ timer.Reset(t.interval)
case <-ctx.Done():
return ctx.Err()
}
@@ -126,9 +126,17 @@ func (c *Client) ListIndexes(ctx context.Context, opt ListIndexOption, callOptio
return indexes, err
}
-func (c *Client) DescribeIndex(ctx context.Context, opt DescribeIndexOption, callOptions ...grpc.CallOption) (index.Index, error) {
+type IndexDescription struct {
+ index.Index
+ State index.IndexState
+ PendingIndexRows int64
+ TotalRows int64
+ IndexedRows int64
+}
+
+func (c *Client) DescribeIndex(ctx context.Context, opt DescribeIndexOption, callOptions ...grpc.CallOption) (IndexDescription, error) {
req := opt.Request()
- var idx index.Index
+ var idx IndexDescription
err := c.callService(func(milvusService milvuspb.MilvusServiceClient) error {
resp, err := milvusService.DescribeIndex(ctx, req, callOptions...)
@@ -141,7 +149,13 @@ func (c *Client) DescribeIndex(ctx context.Context, opt DescribeIndexOption, cal
}
for _, idxDef := range resp.GetIndexDescriptions() {
if idxDef.GetIndexName() == req.GetIndexName() {
- idx = index.NewGenericIndex(idxDef.GetIndexName(), entity.KvPairsMap(idxDef.GetParams()))
+ idx = IndexDescription{
+ Index: index.NewGenericIndex(idxDef.GetIndexName(), entity.KvPairsMap(idxDef.GetParams())),
+ State: index.IndexState(idxDef.GetState()),
+ PendingIndexRows: idxDef.GetPendingIndexRows(),
+ IndexedRows: idxDef.GetIndexedRows(),
+ TotalRows: idxDef.GetTotalRows(),
+ }
}
}
return nil
diff --git a/client/index/common.go b/client/index/common.go
index 162e475ad38b9..214abdb8ce87e 100644
--- a/client/index/common.go
+++ b/client/index/common.go
@@ -64,4 +64,5 @@ const (
Trie IndexType = "Trie"
Sorted IndexType = "STL_SORT"
Inverted IndexType = "INVERTED"
+ BITMAP IndexType = "BITMAP"
)
diff --git a/client/index/hnsw.go b/client/index/hnsw.go
index 8c0d9e60e9b00..56ec5c0a86957 100644
--- a/client/index/hnsw.go
+++ b/client/index/hnsw.go
@@ -41,13 +41,13 @@ func (idx hnswIndex) Params() map[string]string {
}
}
-func NewHNSWIndex(metricType MetricType, M int, efConstruction int) Index {
+func NewHNSWIndex(metricType MetricType, m int, efConstruction int) Index {
return hnswIndex{
baseIndex: baseIndex{
metricType: metricType,
indexType: HNSW,
},
- m: M,
+ m: m,
efConstruction: efConstruction,
}
}
diff --git a/client/index/scalar.go b/client/index/scalar.go
index 88433e1eeece2..6b9f14396ad20 100644
--- a/client/index/scalar.go
+++ b/client/index/scalar.go
@@ -54,3 +54,9 @@ func NewSortedIndex() Index {
indexType: Sorted,
}
}
+
+func NewBitmapIndex() Index {
+ return scalarIndex{
+ indexType: BITMAP,
+ }
+}
diff --git a/client/index/scalar_test.go b/client/index/scalar_test.go
new file mode 100644
index 0000000000000..2548e13a92932
--- /dev/null
+++ b/client/index/scalar_test.go
@@ -0,0 +1,63 @@
+// Licensed to the LF AI & Data foundation under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package index
+
+import (
+ "fmt"
+ "testing"
+
+ "github.com/stretchr/testify/suite"
+)
+
+type ScalarIndexSuite struct {
+ suite.Suite
+}
+
+func (s *ScalarIndexSuite) TestConstructors() {
+ type testCase struct {
+ tag string
+ input Index
+ expectIndexType IndexType
+ }
+
+ testcases := []testCase{
+ {tag: "Trie", input: NewTrieIndex(), expectIndexType: Trie},
+ {tag: "Sorted", input: NewSortedIndex(), expectIndexType: Sorted},
+ {tag: "Inverted", input: NewInvertedIndex(), expectIndexType: Inverted},
+ {tag: "Bitmap", input: NewBitmapIndex(), expectIndexType: BITMAP},
+ }
+
+ for _, tc := range testcases {
+ s.Run(fmt.Sprintf("%s_indextype", tc.tag), func() {
+ s.Equal(tc.expectIndexType, tc.input.IndexType())
+ })
+ }
+
+ for _, tc := range testcases {
+ s.Run(fmt.Sprintf("%s_params", tc.tag), func() {
+ params := tc.input.Params()
+ itv, ok := params[IndexTypeKey]
+ if s.True(ok) {
+ s.EqualValues(tc.expectIndexType, itv)
+ }
+ })
+ }
+}
+
+func TestScalarIndexes(t *testing.T) {
+ suite.Run(t, new(ScalarIndexSuite))
+}
diff --git a/client/maintenance.go b/client/maintenance.go
index 71471220bc3b9..893168592d8d9 100644
--- a/client/maintenance.go
+++ b/client/maintenance.go
@@ -34,13 +34,13 @@ type LoadTask struct {
}
func (t *LoadTask) Await(ctx context.Context) error {
- ticker := time.NewTicker(t.interval)
- defer ticker.Stop()
+ timer := time.NewTimer(t.interval)
+ defer timer.Stop()
for {
select {
- case <-ticker.C:
+ case <-timer.C:
loaded := false
- t.client.callService(func(milvusService milvuspb.MilvusServiceClient) error {
+ err := t.client.callService(func(milvusService milvuspb.MilvusServiceClient) error {
resp, err := milvusService.GetLoadingProgress(ctx, &milvuspb.GetLoadingProgressRequest{
CollectionName: t.collectionName,
PartitionNames: t.partitionNames,
@@ -51,10 +51,13 @@ func (t *LoadTask) Await(ctx context.Context) error {
loaded = resp.GetProgress() == 100
return nil
})
+ if err != nil {
+ return err
+ }
if loaded {
return nil
}
- ticker.Reset(t.interval)
+ timer.Reset(t.interval)
case <-ctx.Done():
return ctx.Err()
}
@@ -134,13 +137,13 @@ type FlushTask struct {
}
func (t *FlushTask) Await(ctx context.Context) error {
- ticker := time.NewTicker(t.interval)
- defer ticker.Stop()
+ timer := time.NewTimer(t.interval)
+ defer timer.Stop()
for {
select {
- case <-ticker.C:
+ case <-timer.C:
flushed := false
- t.client.callService(func(milvusService milvuspb.MilvusServiceClient) error {
+ err := t.client.callService(func(milvusService milvuspb.MilvusServiceClient) error {
resp, err := milvusService.GetFlushState(ctx, &milvuspb.GetFlushStateRequest{
CollectionName: t.collectionName,
SegmentIDs: t.segmentIDs,
@@ -154,10 +157,13 @@ func (t *FlushTask) Await(ctx context.Context) error {
return nil
})
+ if err != nil {
+ return err
+ }
if flushed {
return nil
}
- ticker.Reset(t.interval)
+ timer.Reset(t.interval)
case <-ctx.Done():
return ctx.Err()
}
diff --git a/client/maintenance_options.go b/client/maintenance_options.go
index 66c41c7529e11..1ac1688a3e95a 100644
--- a/client/maintenance_options.go
+++ b/client/maintenance_options.go
@@ -28,15 +28,19 @@ type LoadCollectionOption interface {
}
type loadCollectionOption struct {
- collectionName string
- interval time.Duration
- replicaNum int
+ collectionName string
+ interval time.Duration
+ replicaNum int
+ loadFields []string
+ skipLoadDynamicField bool
}
func (opt *loadCollectionOption) Request() *milvuspb.LoadCollectionRequest {
return &milvuspb.LoadCollectionRequest{
- CollectionName: opt.collectionName,
- ReplicaNumber: int32(opt.replicaNum),
+ CollectionName: opt.collectionName,
+ ReplicaNumber: int32(opt.replicaNum),
+ LoadFields: opt.loadFields,
+ SkipLoadDynamicField: opt.skipLoadDynamicField,
}
}
@@ -49,6 +53,16 @@ func (opt *loadCollectionOption) WithReplica(num int) *loadCollectionOption {
return opt
}
+func (opt *loadCollectionOption) WithLoadFields(loadFields ...string) *loadCollectionOption {
+ opt.loadFields = loadFields
+ return opt
+}
+
+func (opt *loadCollectionOption) WithSkipLoadDynamicField(skipFlag bool) *loadCollectionOption {
+ opt.skipLoadDynamicField = skipFlag
+ return opt
+}
+
func NewLoadCollectionOption(collectionName string) *loadCollectionOption {
return &loadCollectionOption{
collectionName: collectionName,
@@ -65,17 +79,21 @@ type LoadPartitionsOption interface {
var _ LoadPartitionsOption = (*loadPartitionsOption)(nil)
type loadPartitionsOption struct {
- collectionName string
- partitionNames []string
- interval time.Duration
- replicaNum int
+ collectionName string
+ partitionNames []string
+ interval time.Duration
+ replicaNum int
+ loadFields []string
+ skipLoadDynamicField bool
}
func (opt *loadPartitionsOption) Request() *milvuspb.LoadPartitionsRequest {
return &milvuspb.LoadPartitionsRequest{
- CollectionName: opt.collectionName,
- PartitionNames: opt.partitionNames,
- ReplicaNumber: int32(opt.replicaNum),
+ CollectionName: opt.collectionName,
+ PartitionNames: opt.partitionNames,
+ ReplicaNumber: int32(opt.replicaNum),
+ LoadFields: opt.loadFields,
+ SkipLoadDynamicField: opt.skipLoadDynamicField,
}
}
@@ -83,6 +101,21 @@ func (opt *loadPartitionsOption) CheckInterval() time.Duration {
return opt.interval
}
+func (opt *loadPartitionsOption) WithReplica(num int) *loadPartitionsOption {
+ opt.replicaNum = num
+ return opt
+}
+
+func (opt *loadPartitionsOption) WithLoadFields(loadFields ...string) *loadPartitionsOption {
+ opt.loadFields = loadFields
+ return opt
+}
+
+func (opt *loadPartitionsOption) WithSkipLoadDynamicField(skipFlag bool) *loadPartitionsOption {
+ opt.skipLoadDynamicField = skipFlag
+ return opt
+}
+
func NewLoadPartitionsOption(collectionName string, partitionsNames []string) *loadPartitionsOption {
return &loadPartitionsOption{
collectionName: collectionName,
diff --git a/client/maintenance_test.go b/client/maintenance_test.go
index 4ccac9bc84fce..917085f2ef134 100644
--- a/client/maintenance_test.go
+++ b/client/maintenance_test.go
@@ -19,6 +19,7 @@ package client
import (
"context"
"fmt"
+ "math/rand"
"testing"
"time"
@@ -41,10 +42,15 @@ func (s *MaintenanceSuite) TestLoadCollection() {
defer cancel()
s.Run("success", func() {
collectionName := fmt.Sprintf("coll_%s", s.randString(6))
+ fieldNames := []string{"id", "part", "vector"}
+ replicaNum := rand.Intn(3) + 1
done := atomic.NewBool(false)
s.mock.EXPECT().LoadCollection(mock.Anything, mock.Anything).RunAndReturn(func(ctx context.Context, lcr *milvuspb.LoadCollectionRequest) (*commonpb.Status, error) {
s.Equal(collectionName, lcr.GetCollectionName())
+ s.ElementsMatch(fieldNames, lcr.GetLoadFields())
+ s.True(lcr.SkipLoadDynamicField)
+ s.EqualValues(replicaNum, lcr.GetReplicaNumber())
return merr.Success(), nil
}).Once()
s.mock.EXPECT().GetLoadingProgress(mock.Anything, mock.Anything).RunAndReturn(func(ctx context.Context, glpr *milvuspb.GetLoadingProgressRequest) (*milvuspb.GetLoadingProgressResponse, error) {
@@ -62,7 +68,10 @@ func (s *MaintenanceSuite) TestLoadCollection() {
})
defer s.mock.EXPECT().GetLoadingProgress(mock.Anything, mock.Anything).Unset()
- task, err := s.client.LoadCollection(ctx, NewLoadCollectionOption(collectionName))
+ task, err := s.client.LoadCollection(ctx, NewLoadCollectionOption(collectionName).
+ WithReplica(replicaNum).
+ WithLoadFields(fieldNames...).
+ WithSkipLoadDynamicField(true))
s.NoError(err)
ch := make(chan struct{})
@@ -103,11 +112,16 @@ func (s *MaintenanceSuite) TestLoadPartitions() {
s.Run("success", func() {
collectionName := fmt.Sprintf("coll_%s", s.randString(6))
partitionName := fmt.Sprintf("part_%s", s.randString(6))
+ fieldNames := []string{"id", "part", "vector"}
+ replicaNum := rand.Intn(3) + 1
done := atomic.NewBool(false)
s.mock.EXPECT().LoadPartitions(mock.Anything, mock.Anything).RunAndReturn(func(ctx context.Context, lpr *milvuspb.LoadPartitionsRequest) (*commonpb.Status, error) {
s.Equal(collectionName, lpr.GetCollectionName())
s.ElementsMatch([]string{partitionName}, lpr.GetPartitionNames())
+ s.ElementsMatch(fieldNames, lpr.GetLoadFields())
+ s.True(lpr.SkipLoadDynamicField)
+ s.EqualValues(replicaNum, lpr.GetReplicaNumber())
return merr.Success(), nil
}).Once()
s.mock.EXPECT().GetLoadingProgress(mock.Anything, mock.Anything).RunAndReturn(func(ctx context.Context, glpr *milvuspb.GetLoadingProgressRequest) (*milvuspb.GetLoadingProgressResponse, error) {
@@ -126,7 +140,10 @@ func (s *MaintenanceSuite) TestLoadPartitions() {
})
defer s.mock.EXPECT().GetLoadingProgress(mock.Anything, mock.Anything).Unset()
- task, err := s.client.LoadPartitions(ctx, NewLoadPartitionsOption(collectionName, []string{partitionName}))
+ task, err := s.client.LoadPartitions(ctx, NewLoadPartitionsOption(collectionName, []string{partitionName}).
+ WithReplica(replicaNum).
+ WithLoadFields(fieldNames...).
+ WithSkipLoadDynamicField(true))
s.NoError(err)
ch := make(chan struct{})
diff --git a/client/mock_milvus_server_test.go b/client/mock_milvus_server_test.go
index 2ef4927e9a8c4..5c7814b84ac5a 100644
--- a/client/mock_milvus_server_test.go
+++ b/client/mock_milvus_server_test.go
@@ -302,6 +302,61 @@ func (_c *MilvusServiceServer_AlterIndex_Call) RunAndReturn(run func(context.Con
return _c
}
+// BackupRBAC provides a mock function with given fields: _a0, _a1
+func (_m *MilvusServiceServer) BackupRBAC(_a0 context.Context, _a1 *milvuspb.BackupRBACMetaRequest) (*milvuspb.BackupRBACMetaResponse, error) {
+ ret := _m.Called(_a0, _a1)
+
+ var r0 *milvuspb.BackupRBACMetaResponse
+ var r1 error
+ if rf, ok := ret.Get(0).(func(context.Context, *milvuspb.BackupRBACMetaRequest) (*milvuspb.BackupRBACMetaResponse, error)); ok {
+ return rf(_a0, _a1)
+ }
+ if rf, ok := ret.Get(0).(func(context.Context, *milvuspb.BackupRBACMetaRequest) *milvuspb.BackupRBACMetaResponse); ok {
+ r0 = rf(_a0, _a1)
+ } else {
+ if ret.Get(0) != nil {
+ r0 = ret.Get(0).(*milvuspb.BackupRBACMetaResponse)
+ }
+ }
+
+ if rf, ok := ret.Get(1).(func(context.Context, *milvuspb.BackupRBACMetaRequest) error); ok {
+ r1 = rf(_a0, _a1)
+ } else {
+ r1 = ret.Error(1)
+ }
+
+ return r0, r1
+}
+
+// MilvusServiceServer_BackupRBAC_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'BackupRBAC'
+type MilvusServiceServer_BackupRBAC_Call struct {
+ *mock.Call
+}
+
+// BackupRBAC is a helper method to define mock.On call
+// - _a0 context.Context
+// - _a1 *milvuspb.BackupRBACMetaRequest
+func (_e *MilvusServiceServer_Expecter) BackupRBAC(_a0 interface{}, _a1 interface{}) *MilvusServiceServer_BackupRBAC_Call {
+ return &MilvusServiceServer_BackupRBAC_Call{Call: _e.mock.On("BackupRBAC", _a0, _a1)}
+}
+
+func (_c *MilvusServiceServer_BackupRBAC_Call) Run(run func(_a0 context.Context, _a1 *milvuspb.BackupRBACMetaRequest)) *MilvusServiceServer_BackupRBAC_Call {
+ _c.Call.Run(func(args mock.Arguments) {
+ run(args[0].(context.Context), args[1].(*milvuspb.BackupRBACMetaRequest))
+ })
+ return _c
+}
+
+func (_c *MilvusServiceServer_BackupRBAC_Call) Return(_a0 *milvuspb.BackupRBACMetaResponse, _a1 error) *MilvusServiceServer_BackupRBAC_Call {
+ _c.Call.Return(_a0, _a1)
+ return _c
+}
+
+func (_c *MilvusServiceServer_BackupRBAC_Call) RunAndReturn(run func(context.Context, *milvuspb.BackupRBACMetaRequest) (*milvuspb.BackupRBACMetaResponse, error)) *MilvusServiceServer_BackupRBAC_Call {
+ _c.Call.Return(run)
+ return _c
+}
+
// CalcDistance provides a mock function with given fields: _a0, _a1
func (_m *MilvusServiceServer) CalcDistance(_a0 context.Context, _a1 *milvuspb.CalcDistanceRequest) (*milvuspb.CalcDistanceResults, error) {
ret := _m.Called(_a0, _a1)
@@ -4152,6 +4207,61 @@ func (_c *MilvusServiceServer_ReplicateMessage_Call) RunAndReturn(run func(conte
return _c
}
+// RestoreRBAC provides a mock function with given fields: _a0, _a1
+func (_m *MilvusServiceServer) RestoreRBAC(_a0 context.Context, _a1 *milvuspb.RestoreRBACMetaRequest) (*commonpb.Status, error) {
+ ret := _m.Called(_a0, _a1)
+
+ var r0 *commonpb.Status
+ var r1 error
+ if rf, ok := ret.Get(0).(func(context.Context, *milvuspb.RestoreRBACMetaRequest) (*commonpb.Status, error)); ok {
+ return rf(_a0, _a1)
+ }
+ if rf, ok := ret.Get(0).(func(context.Context, *milvuspb.RestoreRBACMetaRequest) *commonpb.Status); ok {
+ r0 = rf(_a0, _a1)
+ } else {
+ if ret.Get(0) != nil {
+ r0 = ret.Get(0).(*commonpb.Status)
+ }
+ }
+
+ if rf, ok := ret.Get(1).(func(context.Context, *milvuspb.RestoreRBACMetaRequest) error); ok {
+ r1 = rf(_a0, _a1)
+ } else {
+ r1 = ret.Error(1)
+ }
+
+ return r0, r1
+}
+
+// MilvusServiceServer_RestoreRBAC_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'RestoreRBAC'
+type MilvusServiceServer_RestoreRBAC_Call struct {
+ *mock.Call
+}
+
+// RestoreRBAC is a helper method to define mock.On call
+// - _a0 context.Context
+// - _a1 *milvuspb.RestoreRBACMetaRequest
+func (_e *MilvusServiceServer_Expecter) RestoreRBAC(_a0 interface{}, _a1 interface{}) *MilvusServiceServer_RestoreRBAC_Call {
+ return &MilvusServiceServer_RestoreRBAC_Call{Call: _e.mock.On("RestoreRBAC", _a0, _a1)}
+}
+
+func (_c *MilvusServiceServer_RestoreRBAC_Call) Run(run func(_a0 context.Context, _a1 *milvuspb.RestoreRBACMetaRequest)) *MilvusServiceServer_RestoreRBAC_Call {
+ _c.Call.Run(func(args mock.Arguments) {
+ run(args[0].(context.Context), args[1].(*milvuspb.RestoreRBACMetaRequest))
+ })
+ return _c
+}
+
+func (_c *MilvusServiceServer_RestoreRBAC_Call) Return(_a0 *commonpb.Status, _a1 error) *MilvusServiceServer_RestoreRBAC_Call {
+ _c.Call.Return(_a0, _a1)
+ return _c
+}
+
+func (_c *MilvusServiceServer_RestoreRBAC_Call) RunAndReturn(run func(context.Context, *milvuspb.RestoreRBACMetaRequest) (*commonpb.Status, error)) *MilvusServiceServer_RestoreRBAC_Call {
+ _c.Call.Return(run)
+ return _c
+}
+
// Search provides a mock function with given fields: _a0, _a1
func (_m *MilvusServiceServer) Search(_a0 context.Context, _a1 *milvuspb.SearchRequest) (*milvuspb.SearchResults, error) {
ret := _m.Called(_a0, _a1)
diff --git a/client/read_options.go b/client/read_options.go
index 152061b1a0526..504f2825dd932 100644
--- a/client/read_options.go
+++ b/client/read_options.go
@@ -20,7 +20,7 @@ import (
"encoding/json"
"strconv"
- "github.com/golang/protobuf/proto"
+ "google.golang.org/protobuf/proto"
"github.com/milvus-io/milvus-proto/go-api/v2/commonpb"
"github.com/milvus-io/milvus-proto/go-api/v2/milvuspb"
diff --git a/cmd/asan/asan_leak_check.go b/cmd/asan/asan_leak_check.go
new file mode 100644
index 0000000000000..ab69c8caa1296
--- /dev/null
+++ b/cmd/asan/asan_leak_check.go
@@ -0,0 +1,11 @@
+//go:build use_asan
+// +build use_asan
+
+package asan
+
+// void __lsan_do_leak_check(void);
+import "C"
+
+func LsanDoLeakCheck() {
+ C.__lsan_do_leak_check()
+}
diff --git a/cmd/asan/asan_leak_nocheck.go b/cmd/asan/asan_leak_nocheck.go
new file mode 100644
index 0000000000000..9a9eadee8f549
--- /dev/null
+++ b/cmd/asan/asan_leak_nocheck.go
@@ -0,0 +1,7 @@
+//go:build !use_asan
+// +build !use_asan
+
+package asan
+
+func LsanDoLeakCheck() {
+}
diff --git a/cmd/components/streaming_node.go b/cmd/components/streaming_node.go
new file mode 100644
index 0000000000000..ab46f0b901a36
--- /dev/null
+++ b/cmd/components/streaming_node.go
@@ -0,0 +1,44 @@
+// Licensed to the LF AI & Data foundation under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package components
+
+import (
+ "context"
+
+ "github.com/milvus-io/milvus/internal/distributed/streamingnode"
+ "github.com/milvus-io/milvus/internal/util/dependency"
+ "github.com/milvus-io/milvus/pkg/util/typeutil"
+)
+
+type StreamingNode struct {
+ *streamingnode.Server
+}
+
+// NewStreamingNode creates a new StreamingNode
+func NewStreamingNode(_ context.Context, factory dependency.Factory) (*StreamingNode, error) {
+ svr, err := streamingnode.NewServer(factory)
+ if err != nil {
+ return nil, err
+ }
+ return &StreamingNode{
+ Server: svr,
+ }, nil
+}
+
+func (q *StreamingNode) GetName() string {
+ return typeutil.StreamingNodeRole
+}
diff --git a/cmd/main.go b/cmd/main.go
index 9e02d743555ee..ce2f0309a4790 100644
--- a/cmd/main.go
+++ b/cmd/main.go
@@ -25,12 +25,14 @@ import (
"golang.org/x/exp/slices"
+ "github.com/milvus-io/milvus/cmd/asan"
"github.com/milvus-io/milvus/cmd/milvus"
"github.com/milvus-io/milvus/internal/util/sessionutil"
"github.com/milvus-io/milvus/pkg/util/paramtable"
)
func main() {
+ defer asan.LsanDoLeakCheck()
idx := slices.Index(os.Args, "--run-with-subprocess")
// execute command as a subprocess if the command contains "--run-with-subprocess"
diff --git a/cmd/milvus/mck.go b/cmd/milvus/mck.go
index 5129a67d935b1..6581356c252b6 100644
--- a/cmd/milvus/mck.go
+++ b/cmd/milvus/mck.go
@@ -12,9 +12,9 @@ import (
"time"
"github.com/cockroachdb/errors"
- "github.com/golang/protobuf/proto"
clientv3 "go.etcd.io/etcd/client/v3"
"go.uber.org/zap"
+ "google.golang.org/protobuf/proto"
"github.com/milvus-io/milvus-proto/go-api/v2/commonpb"
etcdkv "github.com/milvus-io/milvus/internal/kv/etcd"
@@ -528,40 +528,40 @@ func (c *mck) unmarshalTask(taskID int64, t string) (string, []int64, []int64, e
switch header.Base.MsgType {
case commonpb.MsgType_LoadCollection:
- loadReq := querypb.LoadCollectionRequest{}
- err = proto.Unmarshal([]byte(t), &loadReq)
+ loadReq := &querypb.LoadCollectionRequest{}
+ err = proto.Unmarshal([]byte(t), loadReq)
if err != nil {
return errReturn(taskID, "LoadCollectionRequest", err)
}
log.Info("LoadCollection", zap.String("detail", fmt.Sprintf("+%v", loadReq)))
return "LoadCollection", emptyInt64(), emptyInt64(), nil
case commonpb.MsgType_LoadPartitions:
- loadReq := querypb.LoadPartitionsRequest{}
- err = proto.Unmarshal([]byte(t), &loadReq)
+ loadReq := &querypb.LoadPartitionsRequest{}
+ err = proto.Unmarshal([]byte(t), loadReq)
if err != nil {
return errReturn(taskID, "LoadPartitionsRequest", err)
}
log.Info("LoadPartitions", zap.String("detail", fmt.Sprintf("+%v", loadReq)))
return "LoadPartitions", loadReq.PartitionIDs, emptyInt64(), nil
case commonpb.MsgType_ReleaseCollection:
- loadReq := querypb.ReleaseCollectionRequest{}
- err = proto.Unmarshal([]byte(t), &loadReq)
+ loadReq := &querypb.ReleaseCollectionRequest{}
+ err = proto.Unmarshal([]byte(t), loadReq)
if err != nil {
return errReturn(taskID, "ReleaseCollectionRequest", err)
}
log.Info("ReleaseCollection", zap.String("detail", fmt.Sprintf("+%v", loadReq)))
return "ReleaseCollection", emptyInt64(), emptyInt64(), nil
case commonpb.MsgType_ReleasePartitions:
- loadReq := querypb.ReleasePartitionsRequest{}
- err = proto.Unmarshal([]byte(t), &loadReq)
+ loadReq := &querypb.ReleasePartitionsRequest{}
+ err = proto.Unmarshal([]byte(t), loadReq)
if err != nil {
return errReturn(taskID, "ReleasePartitionsRequest", err)
}
log.Info("ReleasePartitions", zap.String("detail", fmt.Sprintf("+%v", loadReq)))
return "ReleasePartitions", loadReq.PartitionIDs, emptyInt64(), nil
case commonpb.MsgType_LoadSegments:
- loadReq := querypb.LoadSegmentsRequest{}
- err = proto.Unmarshal([]byte(t), &loadReq)
+ loadReq := &querypb.LoadSegmentsRequest{}
+ err = proto.Unmarshal([]byte(t), loadReq)
if err != nil {
return errReturn(taskID, "LoadSegmentsRequest", err)
}
@@ -584,16 +584,16 @@ func (c *mck) unmarshalTask(taskID int64, t string) (string, []int64, []int64, e
log.Info("LoadSegments", zap.String("detail", fmt.Sprintf("+%v", loadReq)))
return "LoadSegments", removeRepeatElement(partitionIDs), removeRepeatElement(segmentIDs), nil
case commonpb.MsgType_ReleaseSegments:
- loadReq := querypb.ReleaseSegmentsRequest{}
- err = proto.Unmarshal([]byte(t), &loadReq)
+ loadReq := &querypb.ReleaseSegmentsRequest{}
+ err = proto.Unmarshal([]byte(t), loadReq)
if err != nil {
return errReturn(taskID, "ReleaseSegmentsRequest", err)
}
log.Info("ReleaseSegments", zap.String("detail", fmt.Sprintf("+%v", loadReq)))
return "ReleaseSegments", loadReq.PartitionIDs, loadReq.SegmentIDs, nil
case commonpb.MsgType_WatchDmChannels:
- loadReq := querypb.WatchDmChannelsRequest{}
- err = proto.Unmarshal([]byte(t), &loadReq)
+ loadReq := &querypb.WatchDmChannelsRequest{}
+ err = proto.Unmarshal([]byte(t), loadReq)
if err != nil {
return errReturn(taskID, "WatchDmChannelsRequest", err)
}
@@ -619,16 +619,16 @@ func (c *mck) unmarshalTask(taskID int64, t string) (string, []int64, []int64, e
log.Warn("legacy WatchQueryChannels type found, ignore")
return "WatchQueryChannels", emptyInt64(), emptyInt64(), nil
case commonpb.MsgType_LoadBalanceSegments:
- loadReq := querypb.LoadBalanceRequest{}
- err = proto.Unmarshal([]byte(t), &loadReq)
+ loadReq := &querypb.LoadBalanceRequest{}
+ err = proto.Unmarshal([]byte(t), loadReq)
if err != nil {
return errReturn(taskID, "LoadBalanceRequest", err)
}
log.Info("LoadBalanceSegments", zap.String("detail", fmt.Sprintf("+%v", loadReq)))
return "LoadBalanceSegments", emptyInt64(), loadReq.SealedSegmentIDs, nil
case commonpb.MsgType_HandoffSegments:
- handoffReq := querypb.HandoffSegmentsRequest{}
- err = proto.Unmarshal([]byte(t), &handoffReq)
+ handoffReq := &querypb.HandoffSegmentsRequest{}
+ err = proto.Unmarshal([]byte(t), handoffReq)
if err != nil {
return errReturn(taskID, "HandoffSegmentsRequest", err)
}
diff --git a/cmd/milvus/util.go b/cmd/milvus/util.go
index 35068a6d320dc..e7dcb2035343c 100644
--- a/cmd/milvus/util.go
+++ b/cmd/milvus/util.go
@@ -21,6 +21,7 @@ import (
"github.com/milvus-io/milvus/cmd/roles"
"github.com/milvus-io/milvus/internal/util/sessionutil"
+ "github.com/milvus-io/milvus/internal/util/streamingutil"
"github.com/milvus-io/milvus/pkg/log"
"github.com/milvus-io/milvus/pkg/util/etcd"
"github.com/milvus-io/milvus/pkg/util/hardware"
@@ -123,7 +124,7 @@ func removePidFile(lock *flock.Flock) {
func GetMilvusRoles(args []string, flags *flag.FlagSet) *roles.MilvusRoles {
alias, enableRootCoord, enableQueryCoord, enableIndexCoord, enableDataCoord, enableQueryNode,
- enableDataNode, enableIndexNode, enableProxy := formatFlags(args, flags)
+ enableDataNode, enableIndexNode, enableProxy, enableStreamingNode := formatFlags(args, flags)
serverType := args[2]
role := roles.NewMilvusRoles()
@@ -147,6 +148,9 @@ func GetMilvusRoles(args []string, flags *flag.FlagSet) *roles.MilvusRoles {
role.EnableIndexCoord = true
case typeutil.IndexNodeRole:
role.EnableIndexNode = true
+ case typeutil.StreamingNodeRole:
+ streamingutil.MustEnableStreamingService()
+ role.EnableStreamingNode = true
case typeutil.StandaloneRole, typeutil.EmbeddedRole:
role.EnableRootCoord = true
role.EnableProxy = true
@@ -156,6 +160,9 @@ func GetMilvusRoles(args []string, flags *flag.FlagSet) *roles.MilvusRoles {
role.EnableDataNode = true
role.EnableIndexCoord = true
role.EnableIndexNode = true
+ if streamingutil.IsStreamingServiceEnabled() {
+ role.EnableStreamingNode = true
+ }
role.Local = true
role.Embedded = serverType == typeutil.EmbeddedRole
case typeutil.MixtureRole:
@@ -167,6 +174,7 @@ func GetMilvusRoles(args []string, flags *flag.FlagSet) *roles.MilvusRoles {
role.EnableDataNode = enableDataNode
role.EnableIndexNode = enableIndexNode
role.EnableProxy = enableProxy
+ role.EnableStreamingNode = enableStreamingNode
default:
fmt.Fprintf(os.Stderr, "Unknown server type = %s\n%s", serverType, getHelp())
os.Exit(-1)
@@ -177,6 +185,7 @@ func GetMilvusRoles(args []string, flags *flag.FlagSet) *roles.MilvusRoles {
func formatFlags(args []string, flags *flag.FlagSet) (alias string, enableRootCoord, enableQueryCoord,
enableIndexCoord, enableDataCoord, enableQueryNode, enableDataNode, enableIndexNode, enableProxy bool,
+ enableStreamingNode bool,
) {
flags.StringVar(&alias, "alias", "", "set alias")
@@ -189,6 +198,11 @@ func formatFlags(args []string, flags *flag.FlagSet) (alias string, enableRootCo
flags.BoolVar(&enableDataNode, typeutil.DataNodeRole, false, "enable data node")
flags.BoolVar(&enableIndexNode, typeutil.IndexNodeRole, false, "enable index node")
flags.BoolVar(&enableProxy, typeutil.ProxyRole, false, "enable proxy node")
+ flags.BoolVar(&enableStreamingNode, typeutil.StreamingNodeRole, false, "enable streaming node")
+
+ if enableStreamingNode {
+ streamingutil.MustEnableStreamingService()
+ }
serverType := args[2]
if serverType == typeutil.EmbeddedRole {
diff --git a/cmd/roles/roles.go b/cmd/roles/roles.go
index c32d604c95580..f0723fb280b79 100644
--- a/cmd/roles/roles.go
+++ b/cmd/roles/roles.go
@@ -22,6 +22,7 @@ import (
"os"
"os/signal"
"path/filepath"
+ "runtime/debug"
"strings"
"sync"
"syscall"
@@ -29,17 +30,20 @@ import (
"github.com/prometheus/client_golang/prometheus"
"github.com/prometheus/client_golang/prometheus/promhttp"
+ "github.com/samber/lo"
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
"github.com/milvus-io/milvus-proto/go-api/v2/commonpb"
"github.com/milvus-io/milvus/cmd/components"
+ "github.com/milvus-io/milvus/internal/distributed/streaming"
"github.com/milvus-io/milvus/internal/http"
"github.com/milvus-io/milvus/internal/http/healthz"
"github.com/milvus-io/milvus/internal/util/dependency"
kvfactory "github.com/milvus-io/milvus/internal/util/dependency/kv"
"github.com/milvus-io/milvus/internal/util/initcore"
internalmetrics "github.com/milvus-io/milvus/internal/util/metrics"
+ "github.com/milvus-io/milvus/internal/util/streamingutil"
"github.com/milvus-io/milvus/pkg/config"
"github.com/milvus-io/milvus/pkg/log"
"github.com/milvus-io/milvus/pkg/metrics"
@@ -48,6 +52,7 @@ import (
"github.com/milvus-io/milvus/pkg/tracer"
"github.com/milvus-io/milvus/pkg/util/etcd"
"github.com/milvus-io/milvus/pkg/util/expr"
+ "github.com/milvus-io/milvus/pkg/util/gc"
"github.com/milvus-io/milvus/pkg/util/generic"
"github.com/milvus-io/milvus/pkg/util/logutil"
"github.com/milvus-io/milvus/pkg/util/metricsinfo"
@@ -77,6 +82,11 @@ type component interface {
Stop() error
}
+const (
+ TmpInvertedIndexPrefix = "/tmp/milvus/inverted-index/"
+ TmpTextLogPrefix = "/tmp/milvus/text-log/"
+)
+
func cleanLocalDir(path string) {
_, statErr := os.Stat(path)
// path exist, but stat error
@@ -130,14 +140,15 @@ func runComponent[T component](ctx context.Context,
// MilvusRoles decides which components are brought up with Milvus.
type MilvusRoles struct {
- EnableRootCoord bool `env:"ENABLE_ROOT_COORD"`
- EnableProxy bool `env:"ENABLE_PROXY"`
- EnableQueryCoord bool `env:"ENABLE_QUERY_COORD"`
- EnableQueryNode bool `env:"ENABLE_QUERY_NODE"`
- EnableDataCoord bool `env:"ENABLE_DATA_COORD"`
- EnableDataNode bool `env:"ENABLE_DATA_NODE"`
- EnableIndexCoord bool `env:"ENABLE_INDEX_COORD"`
- EnableIndexNode bool `env:"ENABLE_INDEX_NODE"`
+ EnableRootCoord bool `env:"ENABLE_ROOT_COORD"`
+ EnableProxy bool `env:"ENABLE_PROXY"`
+ EnableQueryCoord bool `env:"ENABLE_QUERY_COORD"`
+ EnableQueryNode bool `env:"ENABLE_QUERY_NODE"`
+ EnableDataCoord bool `env:"ENABLE_DATA_COORD"`
+ EnableDataNode bool `env:"ENABLE_DATA_NODE"`
+ EnableIndexCoord bool `env:"ENABLE_INDEX_COORD"`
+ EnableIndexNode bool `env:"ENABLE_INDEX_NODE"`
+ EnableStreamingNode bool `env:"ENABLE_STREAMING_NODE"`
Local bool
Alias string
@@ -198,6 +209,8 @@ func (mr *MilvusRoles) runQueryNode(ctx context.Context, localMsg bool, wg *sync
if len(mmapDir) > 0 {
cleanLocalDir(mmapDir)
}
+ cleanLocalDir(TmpInvertedIndexPrefix)
+ cleanLocalDir(TmpTextLogPrefix)
return runComponent(ctx, localMsg, wg, components.NewQueryNode, metrics.RegisterQueryNode)
}
@@ -207,6 +220,11 @@ func (mr *MilvusRoles) runDataCoord(ctx context.Context, localMsg bool, wg *sync
return runComponent(ctx, localMsg, wg, components.NewDataCoord, metrics.RegisterDataCoord)
}
+func (mr *MilvusRoles) runStreamingNode(ctx context.Context, localMsg bool, wg *sync.WaitGroup) component {
+ wg.Add(1)
+ return runComponent(ctx, localMsg, wg, components.NewStreamingNode, metrics.RegisterStreamingNode)
+}
+
func (mr *MilvusRoles) runDataNode(ctx context.Context, localMsg bool, wg *sync.WaitGroup) component {
wg.Add(1)
return runComponent(ctx, localMsg, wg, components.NewDataNode, metrics.RegisterDataNode)
@@ -222,6 +240,8 @@ func (mr *MilvusRoles) runIndexNode(ctx context.Context, localMsg bool, wg *sync
rootPath := paramtable.Get().LocalStorageCfg.Path.GetValue()
indexDataLocalPath := filepath.Join(rootPath, typeutil.IndexNodeRole)
cleanLocalDir(indexDataLocalPath)
+ cleanLocalDir(TmpInvertedIndexPrefix)
+ cleanLocalDir(TmpTextLogPrefix)
return runComponent(ctx, localMsg, wg, components.NewIndexNode, metrics.RegisterIndexNode)
}
@@ -363,18 +383,51 @@ func (mr *MilvusRoles) Run() {
paramtable.SetRole(mr.ServerType)
}
+ // Initialize streaming service if enabled.
+ if streamingutil.IsStreamingServiceEnabled() {
+ streaming.Init()
+ defer streaming.Release()
+ }
+
+ enableComponents := []bool{
+ mr.EnableRootCoord,
+ mr.EnableProxy,
+ mr.EnableQueryCoord,
+ mr.EnableQueryNode,
+ mr.EnableDataCoord,
+ mr.EnableDataNode,
+ mr.EnableIndexCoord,
+ mr.EnableIndexNode,
+ }
+ enableComponents = lo.Filter(enableComponents, func(v bool, _ int) bool {
+ return v
+ })
+ healthz.SetComponentNum(len(enableComponents))
+
expr.Init()
expr.Register("param", paramtable.Get())
mr.setupLogger()
http.ServeHTTP()
setupPrometheusHTTPServer(Registry)
+ if paramtable.Get().CommonCfg.GCEnabled.GetAsBool() {
+ if paramtable.Get().CommonCfg.GCHelperEnabled.GetAsBool() {
+ action := func(GOGC uint32) {
+ debug.SetGCPercent(int(GOGC))
+ }
+ gc.NewTuner(paramtable.Get().CommonCfg.OverloadedMemoryThresholdPercentage.GetAsFloat(), uint32(paramtable.Get().QueryNodeCfg.MinimumGOGCConfig.GetAsInt()), uint32(paramtable.Get().QueryNodeCfg.MaximumGOGCConfig.GetAsInt()), action)
+ } else {
+ action := func(uint32) {}
+ gc.NewTuner(paramtable.Get().CommonCfg.OverloadedMemoryThresholdPercentage.GetAsFloat(), uint32(paramtable.Get().QueryNodeCfg.MinimumGOGCConfig.GetAsInt()), uint32(paramtable.Get().QueryNodeCfg.MaximumGOGCConfig.GetAsInt()), action)
+ }
+ }
+
var wg sync.WaitGroup
local := mr.Local
componentMap := make(map[string]component)
var rootCoord, queryCoord, indexCoord, dataCoord component
- var proxy, dataNode, indexNode, queryNode component
+ var proxy, dataNode, indexNode, queryNode, streamingNode component
if mr.EnableRootCoord {
rootCoord = mr.runRootCoord(ctx, local, &wg)
componentMap[typeutil.RootCoordRole] = rootCoord
@@ -414,12 +467,20 @@ func (mr *MilvusRoles) Run() {
componentMap[typeutil.ProxyRole] = proxy
}
+ if mr.EnableStreamingNode {
+ streamingNode = mr.runStreamingNode(ctx, local, &wg)
+ componentMap[typeutil.StreamingNodeRole] = streamingNode
+ }
+
wg.Wait()
http.RegisterStopComponent(func(role string) error {
if len(role) == 0 || componentMap[role] == nil {
return fmt.Errorf("stop component [%s] in [%s] is not supported", role, mr.ServerType)
}
+
+ log.Info("unregister component before stop", zap.String("role", role))
+ healthz.UnRegister(role)
return componentMap[role].Stop()
})
@@ -457,8 +518,10 @@ func (mr *MilvusRoles) Run() {
tracer.SetTracerProvider(exp, params.TraceCfg.SampleFraction.GetAsFloat())
log.Info("Reset tracer finished", zap.String("Exporter", params.TraceCfg.Exporter.GetValue()), zap.Float64("SampleFraction", params.TraceCfg.SampleFraction.GetAsFloat()))
+ tracer.NotifyTracerProviderUpdated()
+
if paramtable.GetRole() == typeutil.QueryNodeRole || paramtable.GetRole() == typeutil.StandaloneRole {
- initcore.InitTraceConfig(params)
+ initcore.ResetTraceConfig(params)
log.Info("Reset segcore tracer finished", zap.String("Exporter", params.TraceCfg.Exporter.GetValue()))
}
}))
@@ -480,7 +543,7 @@ func (mr *MilvusRoles) Run() {
log.Info("All coordinators have stopped")
// stop nodes
- nodes := []component{queryNode, indexNode, dataNode}
+ nodes := []component{queryNode, indexNode, dataNode, streamingNode}
for idx, node := range nodes {
if node != nil {
log.Info("stop node", zap.Int("idx", idx), zap.Any("node", node))
diff --git a/cmd/tools/config-docs-generator/main.go b/cmd/tools/config-docs-generator/main.go
index 7463e8753d66a..7a7163d5c9e58 100644
--- a/cmd/tools/config-docs-generator/main.go
+++ b/cmd/tools/config-docs-generator/main.go
@@ -217,6 +217,9 @@ func (s Section) sectionPageContent() string {
ret += fmt.Sprintf("# %s-related Configurations"+mdNextLine, s.Name)
ret += s.descriptionContent() + mdNextLine
for _, field := range s.Fields {
+ if len(field.Description) == 0 || field.Description[0] == "" {
+ continue
+ }
ret += field.sectionPageContent() + mdNextLine
}
@@ -248,9 +251,6 @@ const fieldTableTemplate = `
func (f Field) sectionPageContent() string {
ret := fmt.Sprintf("## `%s`", f.Name) + mdNextLine
desp := f.descriptionContent()
- if len(desp) > 0 {
- desp = "\n" + desp + " "
- }
ret += fmt.Sprintf(fieldTableTemplate, f.Name, desp, f.DefaultValue)
return ret
}
@@ -258,11 +258,13 @@ func (f Field) sectionPageContent() string {
func (f Field) descriptionContent() string {
var ret string
lines := len(f.Description)
- for i, descLine := range f.Description {
- ret += fmt.Sprintf(" %s", descLine)
- if i < lines-1 {
- ret += "\n"
+ if lines > 1 {
+ for _, descLine := range f.Description {
+ ret += fmt.Sprintf("\n %s ", descLine)
}
+ } else {
+ ret = fmt.Sprintf(" %s ", f.Description[0])
}
+
return ret
}
diff --git a/cmd/tools/config/generate.go b/cmd/tools/config/generate.go
index f8f2e2acad30c..cdc5cd15bfeba 100644
--- a/cmd/tools/config/generate.go
+++ b/cmd/tools/config/generate.go
@@ -282,6 +282,10 @@ func WriteYaml(w io.Writer) {
{
name: "dataNode",
},
+ {
+ name: "msgChannel",
+ header: "\n# This topic introduces the message channel-related configurations of Milvus.",
+ },
{
name: "log",
header: "\n# Configures the system log output.",
@@ -324,6 +328,11 @@ func WriteYaml(w io.Writer) {
#milvus will automatically initialize half of the available GPU memory,
#maxMemSize will the whole available GPU memory.`,
},
+ {
+ name: "streamingNode",
+ header: `
+# Any configuration related to the streaming node server.`,
+ },
}
marshller := YamlMarshaller{w, groups, result}
marshller.writeYamlRecursive(lo.Filter(result, func(d DocContent, _ int) bool {
diff --git a/cmd/tools/config/generate_test.go b/cmd/tools/config/generate_test.go
index 485476bfc69aa..43665ac766d4d 100644
--- a/cmd/tools/config/generate_test.go
+++ b/cmd/tools/config/generate_test.go
@@ -16,6 +16,7 @@ import (
"bytes"
"fmt"
"os"
+ "strings"
"testing"
"github.com/stretchr/testify/assert"
@@ -30,20 +31,26 @@ import (
// Please be noted that milvus.yaml is generated by code, so don't edit it directly, instead, change the code in paramtable
// and run `make milvus-tools && ./bin/tools/config gen-yaml && mv milvus.yaml configs/milvus.yaml`.
func TestYamlFile(t *testing.T) {
+ log.SetLevel(zap.InfoLevel)
w := bytes.Buffer{}
WriteYaml(&w)
base := paramtable.NewBaseTable()
f, err := os.Open(fmt.Sprintf("%s/%s", base.GetConfigDir(), "milvus.yaml"))
assert.NoError(t, err, "expecting configs/milvus.yaml")
+ log.Info("Verifying config", zap.String("file", f.Name()))
defer f.Close()
fileScanner := bufio.NewScanner(f)
codeScanner := bufio.NewScanner(&w)
+
for fileScanner.Scan() && codeScanner.Scan() {
+ if strings.Contains(codeScanner.Text(), "etcd:") || strings.Contains(codeScanner.Text(), "minio:") || strings.Contains(codeScanner.Text(), "pulsar:") {
+ // Skip check of endpoints given by .env
+ continue
+ }
if fileScanner.Text() != codeScanner.Text() {
assert.FailNow(t, fmt.Sprintf("configs/milvus.yaml is not consistent with paramtable, file: [%s], code: [%s]. Do not edit milvus.yaml directly.",
fileScanner.Text(), codeScanner.Text()))
}
- log.Error("", zap.Any("file", fileScanner.Text()), zap.Any("code", codeScanner.Text()))
}
}
diff --git a/cmd/tools/datameta/main.go b/cmd/tools/datameta/main.go
index d6bdffc35c2cb..9c2e495679c1f 100644
--- a/cmd/tools/datameta/main.go
+++ b/cmd/tools/datameta/main.go
@@ -6,8 +6,8 @@ import (
"sort"
"strings"
- "github.com/golang/protobuf/proto"
"go.uber.org/zap"
+ "google.golang.org/protobuf/proto"
etcdkv "github.com/milvus-io/milvus/internal/kv/etcd"
"github.com/milvus-io/milvus/internal/proto/datapb"
diff --git a/cmd/tools/migration/backend/backup_header.go b/cmd/tools/migration/backend/backup_header.go
index 59436505ed7cb..483697ea426ad 100644
--- a/cmd/tools/migration/backend/backup_header.go
+++ b/cmd/tools/migration/backend/backup_header.go
@@ -3,8 +3,6 @@ package backend
import (
"encoding/json"
- "github.com/golang/protobuf/proto"
-
"github.com/milvus-io/milvus/cmd/tools/migration/console"
)
@@ -14,32 +12,6 @@ const (
BackupHeaderVersionV1 BackupHeaderVersion = iota
)
-// BackupHeader stores etcd backup header information
-type BackupHeader struct {
- // Version number for backup format
- Version BackupHeaderVersion `protobuf:"varint,1,opt,name=version,proto3" json:"version,omitempty"`
- // instance name, as rootPath for key prefix
- Instance string `protobuf:"bytes,2,opt,name=instance,proto3" json:"instance,omitempty"`
- // MetaPath used in keys
- MetaPath string `protobuf:"bytes,3,opt,name=meta_path,proto3" json:"meta_path,omitempty"`
- // Entries record number of key-value in backup
- Entries int64 `protobuf:"varint,4,opt,name=entries,proto3" json:"entries,omitempty"`
- // Component is the backup target
- Component string `protobuf:"bytes,5,opt,name=component,proto3" json:"component,omitempty"`
- // Extra property reserved
- Extra []byte `protobuf:"bytes,6,opt,name=extra,proto3" json:"-"`
-}
-
-func (v *BackupHeader) Reset() {
- *v = BackupHeader{}
-}
-
-func (v *BackupHeader) String() string {
- return proto.CompactTextString(v)
-}
-
-func (v *BackupHeader) ProtoMessage() {}
-
type BackupHeaderExtra struct {
EntryIncludeRootPath bool `json:"entry_include_root_path"`
}
diff --git a/cmd/tools/migration/backend/backup_header.pb.go b/cmd/tools/migration/backend/backup_header.pb.go
new file mode 100644
index 0000000000000..83d9a37541afc
--- /dev/null
+++ b/cmd/tools/migration/backend/backup_header.pb.go
@@ -0,0 +1,203 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// protoc-gen-go v1.33.0
+// protoc v3.21.4
+// source: backup_header.proto
+
+package backend
+
+import (
+ protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+ reflect "reflect"
+ sync "sync"
+)
+
+const (
+ // Verify that this generated code is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+ // Verify that runtime/protoimpl is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
+
+type BackupHeader struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // Version number for backup format
+ Version int32 `protobuf:"varint,1,opt,name=version,proto3" json:"version,omitempty"`
+ // instance name, as rootPath for key prefix
+ Instance string `protobuf:"bytes,2,opt,name=instance,proto3" json:"instance,omitempty"`
+ // MetaPath used in keys
+ MetaPath string `protobuf:"bytes,3,opt,name=meta_path,json=metaPath,proto3" json:"meta_path,omitempty"`
+ // Entries record number of key-value in backup
+ Entries int64 `protobuf:"varint,4,opt,name=entries,proto3" json:"entries,omitempty"`
+ // Component is the backup target
+ Component string `protobuf:"bytes,5,opt,name=component,proto3" json:"component,omitempty"`
+ // Extra property reserved
+ Extra []byte `protobuf:"bytes,6,opt,name=extra,proto3" json:"extra,omitempty"`
+}
+
+func (x *BackupHeader) Reset() {
+ *x = BackupHeader{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_backup_header_proto_msgTypes[0]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *BackupHeader) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*BackupHeader) ProtoMessage() {}
+
+func (x *BackupHeader) ProtoReflect() protoreflect.Message {
+ mi := &file_backup_header_proto_msgTypes[0]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use BackupHeader.ProtoReflect.Descriptor instead.
+func (*BackupHeader) Descriptor() ([]byte, []int) {
+ return file_backup_header_proto_rawDescGZIP(), []int{0}
+}
+
+func (x *BackupHeader) GetVersion() int32 {
+ if x != nil {
+ return x.Version
+ }
+ return 0
+}
+
+func (x *BackupHeader) GetInstance() string {
+ if x != nil {
+ return x.Instance
+ }
+ return ""
+}
+
+func (x *BackupHeader) GetMetaPath() string {
+ if x != nil {
+ return x.MetaPath
+ }
+ return ""
+}
+
+func (x *BackupHeader) GetEntries() int64 {
+ if x != nil {
+ return x.Entries
+ }
+ return 0
+}
+
+func (x *BackupHeader) GetComponent() string {
+ if x != nil {
+ return x.Component
+ }
+ return ""
+}
+
+func (x *BackupHeader) GetExtra() []byte {
+ if x != nil {
+ return x.Extra
+ }
+ return nil
+}
+
+var File_backup_header_proto protoreflect.FileDescriptor
+
+var file_backup_header_proto_rawDesc = []byte{
+ 0x0a, 0x13, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x2e,
+ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x28, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72,
+ 0x6f, 0x74, 0x6f, 0x2e, 0x63, 0x6d, 0x64, 0x2e, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x6d, 0x69,
+ 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x22,
+ 0xaf, 0x01, 0x0a, 0x0c, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72,
+ 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x05, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e,
+ 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x6e,
+ 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x70,
+ 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x50,
+ 0x61, 0x74, 0x68, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x04,
+ 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x1c, 0x0a,
+ 0x09, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65,
+ 0x78, 0x74, 0x72, 0x61, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x65, 0x78, 0x74, 0x72,
+ 0x61, 0x42, 0x48, 0x5a, 0x46, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f,
+ 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2d, 0x69, 0x6f, 0x2f, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73,
+ 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f,
+ 0x63, 0x6d, 0x64, 0x2f, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2f, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x62, 0x06, 0x70, 0x72, 0x6f,
+ 0x74, 0x6f, 0x33,
+}
+
+var (
+ file_backup_header_proto_rawDescOnce sync.Once
+ file_backup_header_proto_rawDescData = file_backup_header_proto_rawDesc
+)
+
+func file_backup_header_proto_rawDescGZIP() []byte {
+ file_backup_header_proto_rawDescOnce.Do(func() {
+ file_backup_header_proto_rawDescData = protoimpl.X.CompressGZIP(file_backup_header_proto_rawDescData)
+ })
+ return file_backup_header_proto_rawDescData
+}
+
+var file_backup_header_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
+var file_backup_header_proto_goTypes = []interface{}{
+ (*BackupHeader)(nil), // 0: milvus.proto.cmd.tools.migration.backend.BackupHeader
+}
+var file_backup_header_proto_depIdxs = []int32{
+ 0, // [0:0] is the sub-list for method output_type
+ 0, // [0:0] is the sub-list for method input_type
+ 0, // [0:0] is the sub-list for extension type_name
+ 0, // [0:0] is the sub-list for extension extendee
+ 0, // [0:0] is the sub-list for field type_name
+}
+
+func init() { file_backup_header_proto_init() }
+func file_backup_header_proto_init() {
+ if File_backup_header_proto != nil {
+ return
+ }
+ if !protoimpl.UnsafeEnabled {
+ file_backup_header_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*BackupHeader); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ }
+ type x struct{}
+ out := protoimpl.TypeBuilder{
+ File: protoimpl.DescBuilder{
+ GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+ RawDescriptor: file_backup_header_proto_rawDesc,
+ NumEnums: 0,
+ NumMessages: 1,
+ NumExtensions: 0,
+ NumServices: 0,
+ },
+ GoTypes: file_backup_header_proto_goTypes,
+ DependencyIndexes: file_backup_header_proto_depIdxs,
+ MessageInfos: file_backup_header_proto_msgTypes,
+ }.Build()
+ File_backup_header_proto = out.File
+ file_backup_header_proto_rawDesc = nil
+ file_backup_header_proto_goTypes = nil
+ file_backup_header_proto_depIdxs = nil
+}
diff --git a/cmd/tools/migration/backend/backup_header.proto b/cmd/tools/migration/backend/backup_header.proto
new file mode 100644
index 0000000000000..fef7f8dc8935e
--- /dev/null
+++ b/cmd/tools/migration/backend/backup_header.proto
@@ -0,0 +1,22 @@
+syntax = "proto3";
+package milvus.proto.cmd.tools.migration.backend;
+
+
+option go_package = "github.com/milvus-io/milvus/internal/proto/cmd/tools/migration/backend";
+
+
+
+message BackupHeader {
+ // Version number for backup format
+ int32 version = 1;
+ // instance name, as rootPath for key prefix
+ string instance = 2;
+ // MetaPath used in keys
+ string meta_path = 3;
+ // Entries record number of key-value in backup
+ int64 entries = 4;
+ // Component is the backup target
+ string component = 5;
+ // Extra property reserved
+ bytes extra = 6;
+}
diff --git a/cmd/tools/migration/backend/backup_restore.go b/cmd/tools/migration/backend/backup_restore.go
index c21d096cdf1be..59678a3437522 100644
--- a/cmd/tools/migration/backend/backup_restore.go
+++ b/cmd/tools/migration/backend/backup_restore.go
@@ -5,7 +5,7 @@ import (
"fmt"
"io"
- "github.com/golang/protobuf/proto"
+ "google.golang.org/protobuf/proto"
"github.com/milvus-io/milvus-proto/go-api/v2/commonpb"
)
diff --git a/cmd/tools/migration/backend/backup_restore_test.go b/cmd/tools/migration/backend/backup_restore_test.go
index 847f17ba1b03d..ded76a16fdab9 100644
--- a/cmd/tools/migration/backend/backup_restore_test.go
+++ b/cmd/tools/migration/backend/backup_restore_test.go
@@ -5,11 +5,12 @@ import (
"testing"
"github.com/stretchr/testify/assert"
+ "google.golang.org/protobuf/encoding/prototext"
)
func TestBackupCodec_Serialize(t *testing.T) {
header := &BackupHeader{
- Version: BackupHeaderVersionV1,
+ Version: int32(BackupHeaderVersionV1),
Instance: "/by-dev",
MetaPath: "meta",
Entries: 0,
@@ -26,6 +27,6 @@ func TestBackupCodec_Serialize(t *testing.T) {
assert.NoError(t, err)
gotHeader, gotEntries, err := codec.DeSerialize(file)
assert.NoError(t, err)
- assert.True(t, reflect.DeepEqual(header, gotHeader))
+ assert.Equal(t, prototext.Format(header), prototext.Format(gotHeader))
assert.True(t, reflect.DeepEqual(kvs, gotEntries))
}
diff --git a/cmd/tools/migration/backend/etcd210.go b/cmd/tools/migration/backend/etcd210.go
index 2aa3a10ed5de0..a4dfa049852f6 100644
--- a/cmd/tools/migration/backend/etcd210.go
+++ b/cmd/tools/migration/backend/etcd210.go
@@ -7,8 +7,8 @@ import (
"strconv"
"strings"
- "github.com/golang/protobuf/proto"
clientv3 "go.etcd.io/etcd/client/v3"
+ "google.golang.org/protobuf/proto"
"github.com/milvus-io/milvus/cmd/tools/migration/configs"
"github.com/milvus-io/milvus/cmd/tools/migration/console"
@@ -420,7 +420,7 @@ func (b etcd210) Backup(meta *meta.Meta, backupFile string) error {
instance = metaRootPath
}
header := &BackupHeader{
- Version: BackupHeaderVersionV1,
+ Version: int32(BackupHeaderVersionV1),
Instance: instance,
MetaPath: metaPath,
Entries: int64(len(saves)),
@@ -472,7 +472,7 @@ func (b etcd210) BackupV2(file string) error {
}
header := &BackupHeader{
- Version: BackupHeaderVersionV1,
+ Version: int32(BackupHeaderVersionV1),
Instance: instance,
MetaPath: metaPath,
Entries: int64(len(saves)),
diff --git a/cmd/tools/migration/meta/meta210.go b/cmd/tools/migration/meta/meta210.go
index 23016210660f9..06cba643d85f1 100644
--- a/cmd/tools/migration/meta/meta210.go
+++ b/cmd/tools/migration/meta/meta210.go
@@ -3,7 +3,7 @@ package meta
import (
"fmt"
- "github.com/golang/protobuf/proto"
+ "google.golang.org/protobuf/proto"
"github.com/milvus-io/milvus-proto/go-api/v2/schemapb"
"github.com/milvus-io/milvus/cmd/tools/migration/legacy"
diff --git a/cmd/tools/migration/meta/meta220.go b/cmd/tools/migration/meta/meta220.go
index f190b4061c651..684f773ea2db2 100644
--- a/cmd/tools/migration/meta/meta220.go
+++ b/cmd/tools/migration/meta/meta220.go
@@ -2,7 +2,7 @@ package meta
import (
"github.com/blang/semver/v4"
- "github.com/golang/protobuf/proto"
+ "google.golang.org/protobuf/proto"
"github.com/milvus-io/milvus/cmd/tools/migration/versions"
"github.com/milvus-io/milvus/internal/metastore/kv/datacoord"
diff --git a/cmd/tools/migration/mmap/mmap_230_240.go b/cmd/tools/migration/mmap/mmap_230_240.go
index 5a81ec8586b7f..8994551d02d7a 100644
--- a/cmd/tools/migration/mmap/mmap_230_240.go
+++ b/cmd/tools/migration/mmap/mmap_230_240.go
@@ -84,7 +84,7 @@ func (m *MmapMigration) MigrateIndexCoordCollection(ctx context.Context) {
alteredIndexes := make([]*model.Index, 0)
for _, index := range fieldIndexes {
- if !indexparamcheck.IsMmapSupported(getIndexType(index.IndexParams)) {
+ if !indexparamcheck.IsVectorMmapIndex(getIndexType(index.IndexParams)) {
continue
}
fmt.Printf("migrate index, collection:%v, indexId: %v, indexName: %s\n", index.CollectionID, index.IndexID, index.IndexName)
diff --git a/configs/milvus.yaml b/configs/milvus.yaml
index ef2d99ffe3c22..61d1ef1ba82f9 100644
--- a/configs/milvus.yaml
+++ b/configs/milvus.yaml
@@ -16,10 +16,24 @@
# Related configuration of etcd, used to store Milvus metadata & service discovery.
etcd:
+ # Endpoints used to access etcd service. You can change this parameter as the endpoints of your own etcd cluster.
+ # Environment variable: ETCD_ENDPOINTS
+ # etcd preferentially acquires valid address from environment variable ETCD_ENDPOINTS when Milvus is started.
endpoints: localhost:2379
- rootPath: by-dev # The root path where data is stored in etcd
- metaSubPath: meta # metaRootPath = rootPath + '/' + metaSubPath
- kvSubPath: kv # kvRootPath = rootPath + '/' + kvSubPath
+ # Root prefix of the key to where Milvus stores data in etcd.
+ # It is recommended to change this parameter before starting Milvus for the first time.
+ # To share an etcd instance among multiple Milvus instances, consider changing this to a different value for each Milvus instance before you start them.
+ # Set an easy-to-identify root path for Milvus if etcd service already exists.
+ # Changing this for an already running Milvus instance may result in failures to read legacy data.
+ rootPath: by-dev
+ # Sub-prefix of the key to where Milvus stores metadata-related information in etcd.
+ # Caution: Changing this parameter after using Milvus for a period of time will affect your access to old data.
+ # It is recommended to change this parameter before starting Milvus for the first time.
+ metaSubPath: meta
+ # Sub-prefix of the key to where Milvus stores timestamps in etcd.
+ # Caution: Changing this parameter after using Milvus for a period of time will affect your access to old data.
+ # It is recommended not to change this parameter if there is no specific reason.
+ kvSubPath: kv
log:
level: info # Only supports debug, info, warn, error, panic, or fatal. Default 'info'.
# path is one of:
@@ -68,20 +82,49 @@ tikv:
tlsCACert: # path to your CACert file
localStorage:
- path: /var/lib/milvus/data/ # please adjust in embedded Milvus: /tmp/milvus/data/
+ # Local path to where vector data are stored during a search or a query to avoid repetitve access to MinIO or S3 service.
+ # Caution: Changing this parameter after using Milvus for a period of time will affect your access to old data.
+ # It is recommended to change this parameter before starting Milvus for the first time.
+ path: /var/lib/milvus/data/
# Related configuration of MinIO/S3/GCS or any other service supports S3 API, which is responsible for data persistence for Milvus.
# We refer to the storage service as MinIO/S3 in the following description for simplicity.
minio:
- address: localhost # Address of MinIO/S3
- port: 9000 # Port of MinIO/S3
- accessKeyID: minioadmin # accessKeyID of MinIO/S3
- secretAccessKey: minioadmin # MinIO/S3 encryption string
- useSSL: false # Access to MinIO/S3 with SSL
+ # IP address of MinIO or S3 service.
+ # Environment variable: MINIO_ADDRESS
+ # minio.address and minio.port together generate the valid access to MinIO or S3 service.
+ # MinIO preferentially acquires the valid IP address from the environment variable MINIO_ADDRESS when Milvus is started.
+ # Default value applies when MinIO or S3 is running on the same network with Milvus.
+ address: localhost
+ port: 9000 # Port of MinIO or S3 service.
+ # Access key ID that MinIO or S3 issues to user for authorized access.
+ # Environment variable: MINIO_ACCESS_KEY_ID or minio.accessKeyID
+ # minio.accessKeyID and minio.secretAccessKey together are used for identity authentication to access the MinIO or S3 service.
+ # This configuration must be set identical to the environment variable MINIO_ACCESS_KEY_ID, which is necessary for starting MinIO or S3.
+ # The default value applies to MinIO or S3 service that started with the default docker-compose.yml file.
+ accessKeyID: minioadmin
+ # Secret key used to encrypt the signature string and verify the signature string on server. It must be kept strictly confidential and accessible only to the MinIO or S3 server and users.
+ # Environment variable: MINIO_SECRET_ACCESS_KEY or minio.secretAccessKey
+ # minio.accessKeyID and minio.secretAccessKey together are used for identity authentication to access the MinIO or S3 service.
+ # This configuration must be set identical to the environment variable MINIO_SECRET_ACCESS_KEY, which is necessary for starting MinIO or S3.
+ # The default value applies to MinIO or S3 service that started with the default docker-compose.yml file.
+ secretAccessKey: minioadmin
+ useSSL: false # Switch value to control if to access the MinIO or S3 service through SSL.
ssl:
tlsCACert: /path/to/public.crt # path to your CACert file
- bucketName: a-bucket # Bucket name in MinIO/S3
- rootPath: files # The root path where the message is stored in MinIO/S3
+ # Name of the bucket where Milvus stores data in MinIO or S3.
+ # Milvus 2.0.0 does not support storing data in multiple buckets.
+ # Bucket with this name will be created if it does not exist. If the bucket already exists and is accessible, it will be used directly. Otherwise, there will be an error.
+ # To share an MinIO instance among multiple Milvus instances, consider changing this to a different value for each Milvus instance before you start them. For details, see Operation FAQs.
+ # The data will be stored in the local Docker if Docker is used to start the MinIO service locally. Ensure that there is sufficient storage space.
+ # A bucket name is globally unique in one MinIO or S3 instance.
+ bucketName: a-bucket
+ # Root prefix of the key to where Milvus stores data in MinIO or S3.
+ # It is recommended to change this parameter before starting Milvus for the first time.
+ # To share an MinIO instance among multiple Milvus instances, consider changing this to a different value for each Milvus instance before you start them. For details, see Operation FAQs.
+ # Set an easy-to-identify root key prefix for Milvus if etcd service already exists.
+ # Changing this for an already running Milvus instance may result in failures to read legacy data.
+ rootPath: files
# Whether to useIAM role to access S3/GCS instead of access/secret keys
# For more information, refer to
# aws: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html
@@ -126,12 +169,22 @@ mq:
# Related configuration of pulsar, used to manage Milvus logs of recent mutation operations, output streaming log, and provide log publish-subscribe services.
pulsar:
- address: localhost # Address of pulsar
- port: 6650 # Port of Pulsar
- webport: 80 # Web port of pulsar, if you connect directly without proxy, should use 8080
- maxMessageSize: 5242880 # 5 * 1024 * 1024 Bytes, Maximum size of each message in pulsar.
+ # IP address of Pulsar service.
+ # Environment variable: PULSAR_ADDRESS
+ # pulsar.address and pulsar.port together generate the valid access to Pulsar.
+ # Pulsar preferentially acquires the valid IP address from the environment variable PULSAR_ADDRESS when Milvus is started.
+ # Default value applies when Pulsar is running on the same network with Milvus.
+ address: localhost
+ port: 6650 # Port of Pulsar service.
+ webport: 80 # Web port of of Pulsar service. If you connect direcly without proxy, should use 8080.
+ # The maximum size of each message in Pulsar. Unit: Byte.
+ # By default, Pulsar can transmit at most 5 MB of data in a single message. When the size of inserted data is greater than this value, proxy fragments the data into multiple messages to ensure that they can be transmitted correctly.
+ # If the corresponding parameter in Pulsar remains unchanged, increasing this configuration will cause Milvus to fail, and reducing it produces no advantage.
+ maxMessageSize: 5242880
+ # Pulsar can be provisioned for specific tenants with appropriate capacity allocated to the tenant.
+ # To share a Pulsar instance among multiple Milvus instances, you can change this to an Pulsar tenant rather than the default one for each Milvus instance before you start them. However, if you do not want Pulsar multi-tenancy, you are advised to change msgChannel.chanNamePrefix.cluster to the different value.
tenant: public
- namespace: default
+ namespace: default # A Pulsar namespace is the administrative unit nomenclature within a tenant.
requestTimeout: 60 # pulsar client global request timeout in seconds
enableClientMetrics: false # Whether to register pulsar client metrics into milvus metrics path.
@@ -151,21 +204,23 @@ pulsar:
# readTimeout: 10
rocksmq:
- # The path where the message is stored in rocksmq
- # please adjust in embedded Milvus: /tmp/milvus/rdb_data
+ # Prefix of the key to where Milvus stores data in RocksMQ.
+ # Caution: Changing this parameter after using Milvus for a period of time will affect your access to old data.
+ # It is recommended to change this parameter before starting Milvus for the first time.
+ # Set an easy-to-identify root key prefix for Milvus if etcd service already exists.
path: /var/lib/milvus/rdb_data
lrucacheratio: 0.06 # rocksdb cache memory ratio
- rocksmqPageSize: 67108864 # 64 MB, 64 * 1024 * 1024 bytes, The size of each page of messages in rocksmq
- retentionTimeInMinutes: 4320 # 3 days, 3 * 24 * 60 minutes, The retention time of the message in rocksmq.
- retentionSizeInMB: 8192 # 8 GB, 8 * 1024 MB, The retention size of the message in rocksmq.
- compactionInterval: 86400 # 1 day, trigger rocksdb compaction every day to remove deleted data
+ rocksmqPageSize: 67108864 # The maximum size of messages in each page in RocksMQ. Messages in RocksMQ are checked and cleared (when expired) in batch based on this parameters. Unit: Byte.
+ retentionTimeInMinutes: 4320 # The maximum retention time of acked messages in RocksMQ. Acked messages in RocksMQ are retained for the specified period of time and then cleared. Unit: Minute.
+ retentionSizeInMB: 8192 # The maximum retention size of acked messages of each topic in RocksMQ. Acked messages in each topic are cleared if their size exceed this parameter. Unit: MB.
+ compactionInterval: 86400 # Time interval to trigger rocksdb compaction to remove deleted data. Unit: Second
compressionTypes: 0,0,7,7,7 # compaction compression type, only support use 0,7. 0 means not compress, 7 will use zstd. Length of types means num of rocksdb level.
# natsmq configuration.
# more detail: https://docs.nats.io/running-a-nats-service/configuration
natsmq:
server:
- port: 4222 # Port for nats server listening
+ port: 4222 # Listening port of the NATS server.
storeDir: /var/lib/milvus/nats # Directory to use for JetStream storage of nats
maxFileStore: 17179869184 # Maximum size of the 'file' storage
maxPayload: 8388608 # Maximum number of bytes in a message payload
@@ -184,93 +239,99 @@ natsmq:
# Related configuration of rootCoord, used to handle data definition language (DDL) and data control language (DCL) requests
rootCoord:
- dmlChannelNum: 16 # The number of dml channels created at system startup
- maxPartitionNum: 1024 # Maximum number of partitions in a collection
- minSegmentSizeToEnableIndex: 1024 # It's a threshold. When the segment size is less than this value, the segment will not be indexed
+ dmlChannelNum: 16 # The number of DML-Channels to create at the root coord startup.
+ # The maximum number of partitions in each collection.
+ # New partitions cannot be created if this parameter is set as 0 or 1.
+ # Range: [0, INT64MAX]
+ maxPartitionNum: 1024
+ # The minimum row count of a segment required for creating index.
+ # Segments with smaller size than this parameter will not be indexed, and will be searched with brute force.
+ minSegmentSizeToEnableIndex: 1024
enableActiveStandby: false
maxDatabaseNum: 64 # Maximum number of database
maxGeneralCapacity: 65536 # upper limit for the sum of of product of partitionNumber and shardNumber
gracefulStopTimeout: 5 # seconds. force stop node without graceful stop
- ip: # if not specified, use the first unicastable address
- port: 53100
+ ip: # TCP/IP address of rootCoord. If not specified, use the first unicastable address
+ port: 53100 # TCP port of rootCoord
grpc:
- serverMaxSendSize: 536870912
- serverMaxRecvSize: 268435456
- clientMaxSendSize: 268435456
- clientMaxRecvSize: 536870912
+ serverMaxSendSize: 536870912 # The maximum size of each RPC request that the rootCoord can send, unit: byte
+ serverMaxRecvSize: 268435456 # The maximum size of each RPC request that the rootCoord can receive, unit: byte
+ clientMaxSendSize: 268435456 # The maximum size of each RPC request that the clients on rootCoord can send, unit: byte
+ clientMaxRecvSize: 536870912 # The maximum size of each RPC request that the clients on rootCoord can receive, unit: byte
# Related configuration of proxy, used to validate client requests and reduce the returned results.
proxy:
- timeTickInterval: 200 # ms, the interval that proxy synchronize the time tick
+ timeTickInterval: 200 # The interval at which proxy synchronizes the time tick, unit: ms.
healthCheckTimeout: 3000 # ms, the interval that to do component healthy check
msgStream:
timeTick:
- bufSize: 512
- maxNameLength: 255 # Maximum length of name for a collection or alias
- # Maximum number of fields in a collection.
- # As of today (2.2.0 and after) it is strongly DISCOURAGED to set maxFieldNum >= 64.
- # So adjust at your risk!
- maxFieldNum: 64
- maxVectorFieldNum: 4 # Maximum number of vector fields in a collection.
- maxShardNum: 16 # Maximum number of shards in a collection
- maxDimension: 32768 # Maximum dimension of a vector
+ bufSize: 512 # The maximum number of messages can be buffered in the timeTick message stream of the proxy when producing messages.
+ maxNameLength: 255 # The maximum length of the name or alias that can be created in Milvus, including the collection name, collection alias, partition name, and field name.
+ maxFieldNum: 64 # The maximum number of field can be created when creating in a collection. It is strongly DISCOURAGED to set maxFieldNum >= 64.
+ maxVectorFieldNum: 4 # The maximum number of vector fields that can be specified in a collection. Value range: [1, 10].
+ maxShardNum: 16 # The maximum number of shards can be created when creating in a collection.
+ maxDimension: 32768 # The maximum number of dimensions of a vector can have when creating in a collection.
# Whether to produce gin logs.\n
# please adjust in embedded Milvus: false
ginLogging: true
ginLogSkipPaths: / # skip url path for gin log
- maxTaskNum: 1024 # max task number of proxy task queue
+ maxTaskNum: 1024 # The maximum number of tasks in the task queue of the proxy.
mustUsePartitionKey: false # switch for whether proxy must use partition key for the collection
accessLog:
- enable: false # if use access log
- minioEnable: false # if upload sealed access log file to minio
- localPath: /tmp/milvus_access
- filename: # Log filename, leave empty to use stdout.
- maxSize: 64 # Max size for a single file, in MB.
- cacheSize: 0 # Size of log write cache, in B
- cacheFlushInterval: 3 # time interval of auto flush write cache, in Seconds. (Close auto flush if interval was 0)
- rotatedTime: 0 # Max time for single access log file in seconds
- remotePath: access_log/ # File path in minIO
- remoteMaxTime: 0 # Max time for log file in minIO, in hours
+ enable: false # Whether to enable the access log feature.
+ minioEnable: false # Whether to upload local access log files to MinIO. This parameter can be specified when proxy.accessLog.filename is not empty.
+ localPath: /tmp/milvus_access # The local folder path where the access log file is stored. This parameter can be specified when proxy.accessLog.filename is not empty.
+ filename: # The name of the access log file. If you leave this parameter empty, access logs will be printed to stdout.
+ maxSize: 64 # The maximum size allowed for a single access log file. If the log file size reaches this limit, a rotation process will be triggered. This process seals the current access log file, creates a new log file, and clears the contents of the original log file. Unit: MB.
+ rotatedTime: 0 # The maximum time interval allowed for rotating a single access log file. Upon reaching the specified time interval, a rotation process is triggered, resulting in the creation of a new access log file and sealing of the previous one. Unit: seconds
+ remotePath: access_log/ # The path of the object storage for uploading access log files.
+ remoteMaxTime: 0 # The time interval allowed for uploading access log files. If the upload time of a log file exceeds this interval, the file will be deleted. Setting the value to 0 disables this feature.
formatters:
base:
format: "[$time_now] [ACCESS] <$user_name: $user_addr> $method_name [status: $method_status] [code: $error_code] [sdk: $sdk_version] [msg: $error_msg] [traceID: $trace_id] [timeCost: $time_cost]"
query:
format: "[$time_now] [ACCESS] <$user_name: $user_addr> $method_name [status: $method_status] [code: $error_code] [sdk: $sdk_version] [msg: $error_msg] [traceID: $trace_id] [timeCost: $time_cost] [database: $database_name] [collection: $collection_name] [partitions: $partition_name] [expr: $method_expr]"
methods: "Query,Search,Delete"
+ cacheSize: 0 # Size of log of write cache, in byte. (Close write cache if size was 0)
+ cacheFlushInterval: 3 # time interval of auto flush write cache, in seconds. (Close auto flush if interval was 0)
connectionCheckIntervalSeconds: 120 # the interval time(in seconds) for connection manager to scan inactive client info
connectionClientInfoTTLSeconds: 86400 # inactive client info TTL duration, in seconds
maxConnectionNum: 10000 # the max client info numbers that proxy should manage, avoid too many client infos
gracefulStopTimeout: 30 # seconds. force stop node without graceful stop
slowQuerySpanInSeconds: 5 # query whose executed time exceeds the `slowQuerySpanInSeconds` can be considered slow, in seconds.
+ queryNodePooling:
+ size: 10 # the size for shardleader(querynode) client pool
http:
enabled: true # Whether to enable the http server
debug_mode: false # Whether to enable http server debug mode
port: # high-level restful api
acceptTypeAllowInt64: true # high-level restful api, whether http client can deal with int64
enablePprof: true # Whether to enable pprof middleware on the metrics port
- ip: # if not specified, use the first unicastable address
- port: 19530
+ ip: # TCP/IP address of proxy. If not specified, use the first unicastable address
+ port: 19530 # TCP port of proxy
internalPort: 19529
grpc:
- serverMaxSendSize: 268435456
- serverMaxRecvSize: 67108864
- clientMaxSendSize: 268435456
- clientMaxRecvSize: 67108864
+ serverMaxSendSize: 268435456 # The maximum size of each RPC request that the proxy can send, unit: byte
+ serverMaxRecvSize: 67108864 # The maximum size of each RPC request that the proxy can receive, unit: byte
+ clientMaxSendSize: 268435456 # The maximum size of each RPC request that the clients on proxy can send, unit: byte
+ clientMaxRecvSize: 67108864 # The maximum size of each RPC request that the clients on proxy can receive, unit: byte
# Related configuration of queryCoord, used to manage topology and load balancing for the query nodes, and handoff from growing segments to sealed segments.
queryCoord:
taskMergeCap: 1
taskExecutionCap: 256
- autoHandoff: true # Enable auto handoff
- autoBalance: true # Enable auto balance
+ # Switch value to control if to automatically replace a growing segment with the corresponding indexed sealed segment when the growing segment reaches the sealing threshold.
+ # If this parameter is set false, Milvus simply searches the growing segments with brute force.
+ autoHandoff: true
+ autoBalance: true # Switch value to control if to automatically balance the memory usage among query nodes by distributing segment loading and releasing operations evenly.
autoBalanceChannel: true # Enable auto balance channel
balancer: ScoreBasedBalancer # auto balancer used for segments on queryNodes
globalRowCountFactor: 0.1 # the weight used when balancing segments among queryNodes
scoreUnbalanceTolerationFactor: 0.05 # the least value for unbalanced extent between from and to nodes when doing balance
reverseUnBalanceTolerationFactor: 1.3 # the largest value for unbalanced extent between from and to nodes after doing balance
- overloadedMemoryThresholdPercentage: 90 # The threshold percentage that memory overload
- balanceIntervalSeconds: 60
- memoryUsageMaxDifferencePercentage: 30
+ overloadedMemoryThresholdPercentage: 90 # The threshold of memory usage (in percentage) in a query node to trigger the sealed segment balancing.
+ balanceIntervalSeconds: 60 # The interval at which query coord balances the memory usage among query nodes.
+ memoryUsageMaxDifferencePercentage: 30 # The threshold of memory usage difference (in percentage) between any two query nodes to trigger the sealed segment balancing.
rowCountFactor: 0.4 # the row count weight used when balancing segments among queryNodes
segmentCountFactor: 0.4 # the segment count weight used when balancing segments among queryNodes
globalSegmentCountFactor: 0.1 # the segment count weight used when balancing segments among queryNodes
@@ -278,6 +339,7 @@ queryCoord:
rowCountMaxSteps: 50 # segment count based plan generator max steps
randomMaxSteps: 10 # segment count based plan generator max steps
growingRowCountWeight: 4 # the memory weight of growing segment row count
+ delegatorMemoryOverloadFactor: 0.1 # the factor of delegator overloaded memory
balanceCostThreshold: 0.001 # the threshold of balance cost, if the difference of cluster's cost after executing the balance plan is less than this value, the plan will not be executed
checkSegmentInterval: 1000
checkChannelInterval: 1000
@@ -286,8 +348,6 @@ queryCoord:
channelTaskTimeout: 60000 # 1 minute
segmentTaskTimeout: 120000 # 2 minute
distPullInterval: 500
- collectionObserverInterval: 200
- checkExecutedFlagInterval: 100
heartbeatAvailableInterval: 10000 # 10s, Only QueryNodes which fetched heartbeats within the duration are available
loadTimeoutSeconds: 600
distRequestTimeout: 5000 # the request timeout for querycoord fetching data distribution from querynodes, in milliseconds
@@ -305,24 +365,30 @@ queryCoord:
gracefulStopTimeout: 5 # seconds. force stop node without graceful stop
enableStoppingBalance: true # whether enable stopping balance
channelExclusiveNodeFactor: 4 # the least node number for enable channel's exclusive mode
+ collectionObserverInterval: 200 # the interval of collection observer
+ checkExecutedFlagInterval: 100 # the interval of check executed flag to force to pull dist
+ updateCollectionLoadStatusInterval: 5 # 5m, max interval of updating collection loaded status for check health
cleanExcludeSegmentInterval: 60 # the time duration of clean pipeline exclude segment which used for filter invalid data, in seconds
- ip: # if not specified, use the first unicastable address
- port: 19531
+ ip: # TCP/IP address of queryCoord. If not specified, use the first unicastable address
+ port: 19531 # TCP port of queryCoord
grpc:
- serverMaxSendSize: 536870912
- serverMaxRecvSize: 268435456
- clientMaxSendSize: 268435456
- clientMaxRecvSize: 536870912
+ serverMaxSendSize: 536870912 # The maximum size of each RPC request that the queryCoord can send, unit: byte
+ serverMaxRecvSize: 268435456 # The maximum size of each RPC request that the queryCoord can receive, unit: byte
+ clientMaxSendSize: 268435456 # The maximum size of each RPC request that the clients on queryCoord can send, unit: byte
+ clientMaxRecvSize: 536870912 # The maximum size of each RPC request that the clients on queryCoord can receive, unit: byte
# Related configuration of queryNode, used to run hybrid search between vector and scalar data.
queryNode:
stats:
- publishInterval: 1000 # Interval for querynode to report node information (milliseconds)
+ publishInterval: 1000 # The interval that query node publishes the node statistics information, including segment status, cpu usage, memory usage, health status, etc. Unit: ms.
segcore:
knowhereThreadPoolNumRatio: 4 # The number of threads in knowhere's thread pool. If disk is enabled, the pool size will multiply with knowhereThreadPoolNumRatio([1, 32]).
- chunkRows: 128 # The number of vectors in a chunk.
+ chunkRows: 128 # Row count by which Segcore divides a segment into chunks.
interimIndex:
- enableIndex: true # Enable segment build with index to accelerate vector search when segment is in growing or binlog.
+ # Whether to create a temporary index for growing segments and sealed segments not yet indexed, improving search performance.
+ # Milvus will eventually seals and indexes all segments, but enabling this optimizes search performance for immediate queries following data insertion.
+ # This defaults to true, indicating that Milvus creates temporary index for growing segments and the sealed segments that are not indexed upon searches.
+ enableIndex: true
nlist: 128 # temp index nlist, recommend to set sqrt(chunkRows), must smaller than chunkRows/8
nprobe: 16 # nprobe to search small index, based on your accuracy requirement, must smaller than nlist
memExpansionRate: 1.15 # extra memory needed by building interim index
@@ -332,7 +398,6 @@ queryNode:
enableDisk: false # enable querynode load disk index, and search on disk index
maxDiskUsagePercentage: 95
cache:
- enabled: true
memoryLimit: 2147483648 # 2 GB, 2 * 1024 *1024 *1024
readAheadPolicy: willneed # The read ahead policy of chunk cache, options: `normal, random, sequential, willneed, dontneed`
# options: async, sync, disable.
@@ -343,10 +408,16 @@ queryNode:
# 2. If set to "disable" original vector data will only be loaded into the chunk cache during search/query.
warmup: disable
mmap:
- mmapEnabled: false # Enable mmap for loading data
- growingMmapEnabled: false # Enable mmap for growing segment
- fixedFileSizeForMmapAlloc: 4 #MB, fixed file size for mmap chunk manager to store chunk data
- maxDiskUsagePercentageForMmapAlloc: 20 # max percentage of disk usage in memory mapping
+ vectorField: false # Enable mmap for loading vector data
+ vectorIndex: false # Enable mmap for loading vector index
+ scalarField: false # Enable mmap for loading scalar data
+ scalarIndex: false # Enable mmap for loading scalar index
+ # Enable memory mapping (mmap) to optimize the handling of growing raw data.
+ # By activating this feature, the memory overhead associated with newly added or modified data will be significantly minimized.
+ # However, this optimization may come at the cost of a slight decrease in query latency for the affected data segments.
+ growingMmapEnabled: false
+ fixedFileSizeForMmapAlloc: 1 # tmp file size for mmap chunk manager
+ maxDiskUsagePercentageForMmapAlloc: 50 # disk percentage used in mmap chunk manager
lazyload:
enabled: false # Enable lazyload for loading data
waitTimeout: 30000 # max wait timeout duration in milliseconds before start to do lazyload search and retrieve
@@ -354,6 +425,7 @@ queryNode:
requestResourceRetryInterval: 2000 # retry interval in milliseconds for waiting request resource for lazy load, 2s by default
maxRetryTimes: 1 # max retry times for lazy load, 1 by default
maxEvictPerRetry: 1 # max evict count for lazy load, 1 by default
+ indexOffsetCacheEnabled: false # enable index offset cache for some scalar indexes, now is just for bitmap index, enable this param can improve performance for retrieving raw data from index
grouping:
enabled: true
maxNQ: 1000
@@ -383,17 +455,20 @@ queryNode:
maxPendingTaskPerUser: 1024 # Max pending task per user in scheduler
dataSync:
flowGraph:
- maxQueueLength: 16 # Maximum length of task queue in flowgraph
+ maxQueueLength: 16 # The maximum size of task queue cache in flow graph in query node.
maxParallelism: 1024 # Maximum number of tasks executed in parallel in the flowgraph
- enableSegmentPrune: false # use partition prune function on shard delegator
+ enableSegmentPrune: false # use partition stats to prune data in search/query on shard delegator
queryStreamBatchSize: 4194304 # return batch size of stream query
- ip: # if not specified, use the first unicastable address
- port: 21123
+ bloomFilterApplyParallelFactor: 4 # parallel factor when to apply pk to bloom filter, default to 4*CPU_CORE_NUM
+ workerPooling:
+ size: 10 # the size for worker querynode client pool
+ ip: # TCP/IP address of queryNode. If not specified, use the first unicastable address
+ port: 21123 # TCP port of queryNode
grpc:
- serverMaxSendSize: 536870912
- serverMaxRecvSize: 268435456
- clientMaxSendSize: 268435456
- clientMaxRecvSize: 536870912
+ serverMaxSendSize: 536870912 # The maximum size of each RPC request that the queryNode can send, unit: byte
+ serverMaxRecvSize: 268435456 # The maximum size of each RPC request that the queryNode can receive, unit: byte
+ clientMaxSendSize: 268435456 # The maximum size of each RPC request that the clients on queryNode can send, unit: byte
+ clientMaxRecvSize: 536870912 # The maximum size of each RPC request that the clients on queryNode can receive, unit: byte
indexCoord:
bindIndexNodeMode:
@@ -409,13 +484,13 @@ indexNode:
buildParallel: 1
enableDisk: true # enable index node build disk vector index
maxDiskUsagePercentage: 95
- ip: # if not specified, use the first unicastable address
- port: 21121
+ ip: # TCP/IP address of indexNode. If not specified, use the first unicastable address
+ port: 21121 # TCP port of indexNode
grpc:
- serverMaxSendSize: 536870912
- serverMaxRecvSize: 268435456
- clientMaxSendSize: 268435456
- clientMaxRecvSize: 536870912
+ serverMaxSendSize: 536870912 # The maximum size of each RPC request that the indexNode can send, unit: byte
+ serverMaxRecvSize: 268435456 # The maximum size of each RPC request that the indexNode can receive, unit: byte
+ clientMaxSendSize: 268435456 # The maximum size of each RPC request that the clients on indexNode can send, unit: byte
+ clientMaxRecvSize: 536870912 # The maximum size of each RPC request that the clients on indexNode can receive, unit: byte
dataCoord:
channel:
@@ -426,13 +501,11 @@ dataCoord:
checkInterval: 1 # The interval in seconds with which the channel manager advances channel states
notifyChannelOperationTimeout: 5 # Timeout notifing channel operations (in seconds).
segment:
- maxSize: 1024 # Maximum size of a segment in MB
+ maxSize: 1024 # The maximum size of a segment, unit: MB. datacoord.segment.maxSize and datacoord.segment.sealProportion together determine if a segment can be sealed.
diskSegmentMaxSize: 2048 # Maximun size of a segment in MB for collection which has Disk index
- sealProportion: 0.12
- # segment seal proportion jitter ratio, default value 0.1(10%),
- # if seal propertion is 12%, with jitter=0.1, the actuall applied ratio will be 10.8~12%
- sealProportionJitter: 0.1 #
- assignmentExpiration: 2000 # The time of the assignment expiration in ms
+ sealProportion: 0.12 # The minimum proportion to datacoord.segment.maxSize to seal a segment. datacoord.segment.maxSize and datacoord.segment.sealProportion together determine if a segment can be sealed.
+ sealProportionJitter: 0.1 # segment seal proportion jitter ratio, default value 0.1(10%), if seal proportion is 12%, with jitter=0.1, the actuall applied ratio will be 10.8~12%
+ assignmentExpiration: 2000 # Expiration time of the segment assignment, unit: ms
allocLatestExpireAttempt: 200 # The time attempting to alloc latest lastExpire from rootCoord after restart
maxLife: 86400 # The max lifetime of segment in seconds, 24*60*60
# If a segment didn't accept dml records in maxIdleTime and the size of segment is greater than
@@ -451,56 +524,53 @@ dataCoord:
# MUST BE GREATER THAN OR EQUAL TO !!!
# During compaction, the size of segment # of rows is able to exceed segment max # of rows by (expansionRate-1) * 100%.
expansionRate: 1.25
- segmentFlushInterval: 2 # the minimal interval duration(unit: Seconds) between flusing operation on same segment
sealPolicy:
channel:
- # The size threshold in MB, if the total size of growing segments of each shard
+ # The size threshold in MB, if the total size of growing segments of each shard
# exceeds this threshold, the largest growing segment will be sealed.
growingSegmentsMemSize: 4096
autoUpgradeSegmentIndex: false # whether auto upgrade segment index to index engine's version
- enableCompaction: true # Enable data segment compaction
+ segmentFlushInterval: 2 # the minimal interval duration(unit: Seconds) between flusing operation on same segment
+ # Switch value to control if to enable segment compaction.
+ # Compaction merges small-size segments into a large segment, and clears the entities deleted beyond the rentention duration of Time Travel.
+ enableCompaction: true
compaction:
+ # Switch value to control if to enable automatic segment compaction during which data coord locates and merges compactable segments in the background.
+ # This configuration takes effect only when dataCoord.enableCompaction is set as true.
enableAutoCompaction: true
indexBasedCompaction: true
rpcTimeout: 10
maxParallelTaskNum: 10
workerMaxParallelTaskNum: 2
+ dropTolerance: 86400 # Compaction task will be cleaned after finish longer than this time(in seconds)
+ gcInterval: 1800 # The time interval in seconds for compaction gc
clustering:
enable: true # Enable clustering compaction
- autoEnable: false # Enable auto background clustering compaction
+ autoEnable: false # Enable auto clustering compaction
triggerInterval: 600 # clustering compaction trigger interval in seconds
- stateCheckInterval: 10
- gcInterval: 600
minInterval: 3600 # The minimum interval between clustering compaction executions of one collection, to avoid redundant compaction
maxInterval: 259200 # If a collection haven't been clustering compacted for longer than maxInterval, force compact
newDataSizeThreshold: 512m # If new data size is large than newDataSizeThreshold, execute clustering compaction
- timeout: 7200 # timeout in seconds for clustering compaction, the task will stop if timeout
- dropTolerance: 86400
- # clustering compaction will try best to distribute data into segments with size range in [preferSegmentSize, maxSegmentSize].
- # data will be clustered by preferSegmentSize, if a cluster is larger than maxSegmentSize, will spilt it into multi segment
- # buffer between (preferSegmentSize, maxSegmentSize) is left for new data in the same cluster(range), to avoid globally redistribute too often
- preferSegmentSize: 512m
- maxSegmentSize: 1024m
-
- # vector clustering related
+ preferSegmentSizeRatio: 0.8
+ maxSegmentSizeRatio: 1
maxTrainSizeRatio: 0.8 # max data size ratio in Kmeans train, if larger than it, will down sampling to meet this limit
maxCentroidsNum: 10240 # maximum centroids number in Kmeans train
minCentroidsNum: 16 # minimum centroids number in Kmeans train
minClusterSizeRatio: 0.01 # minimum cluster size / avg size in Kmeans train
- maxClusterSizeRatio: 10 #maximum cluster size / avg size in Kmeans train
+ maxClusterSizeRatio: 10 # maximum cluster size / avg size in Kmeans train
maxClusterSize: 5g # maximum cluster size in Kmeans train
-
levelzero:
forceTrigger:
minSize: 8388608 # The minmum size in bytes to force trigger a LevelZero Compaction, default as 8MB
maxSize: 67108864 # The maxmum size in bytes to force trigger a LevelZero Compaction, default as 64MB
deltalogMinNum: 10 # The minimum number of deltalog files to force trigger a LevelZero Compaction
deltalogMaxNum: 30 # The maxmum number of deltalog files to force trigger a LevelZero Compaction, default as 30
- enableGarbageCollection: true
+ syncSegmentsInterval: 300 # The time interval for regularly syncing segments
+ enableGarbageCollection: true # Switch value to control if to enable garbage collection to clear the discarded data in MinIO or S3 service.
gc:
- interval: 3600 # meta-based gc scanning interval in seconds
- missingTolerance: 86400 # orphan file gc tolerance duration in seconds (orphan file which last modified time before the tolerance interval ago will be deleted)
- dropTolerance: 10800 # meta-based gc tolerace duration in seconds (file which meta is marked as dropped before the tolerace interval ago will be deleted)
+ interval: 3600 # The interval at which data coord performs garbage collection, unit: second.
+ missingTolerance: 86400 # The retention duration of the unrecorded binary log (binlog) files. Setting a reasonably large value for this parameter avoids erroneously deleting the newly created binlog files that lack metadata. Unit: second.
+ dropTolerance: 10800 # The retention duration of the binlog files of the deleted segments before they are cleared, unit: second.
removeConcurrent: 32 # number of concurrent goroutines to remove dropped s3 objects
scanInterval: 168 # orphan file (file on oss but has not been registered on meta) on object storage garbage collection scanning interval in hours
enableActiveStandby: false
@@ -517,18 +587,17 @@ dataCoord:
maxImportFileNumPerReq: 1024 # The maximum number of files allowed per single import request.
waitForIndex: true # Indicates whether the import operation waits for the completion of index building.
gracefulStopTimeout: 5 # seconds. force stop node without graceful stop
- ip: # if not specified, use the first unicastable address
- port: 13333
+ slot:
+ clusteringCompactionUsage: 16 # slot usage of clustering compaction job.
+ mixCompactionUsage: 8 # slot usage of mix compaction job.
+ l0DeleteCompactionUsage: 8 # slot usage of l0 compaction job.
+ ip: # TCP/IP address of dataCoord. If not specified, use the first unicastable address
+ port: 13333 # TCP port of dataCoord
grpc:
- serverMaxSendSize: 536870912
- serverMaxRecvSize: 268435456
- clientMaxSendSize: 268435456
- clientMaxRecvSize: 536870912
- syncSegmentsInterval: 300
- slot:
- clusteringCompactionUsage: 16
- mixCompactionUsage: 8
- l0DeleteCompactionUsage: 8
+ serverMaxSendSize: 536870912 # The maximum size of each RPC request that the dataCoord can send, unit: byte
+ serverMaxRecvSize: 268435456 # The maximum size of each RPC request that the dataCoord can receive, unit: byte
+ clientMaxSendSize: 268435456 # The maximum size of each RPC request that the clients on dataCoord can send, unit: byte
+ clientMaxRecvSize: 536870912 # The maximum size of each RPC request that the clients on dataCoord can receive, unit: byte
dataNode:
dataSync:
@@ -541,7 +610,10 @@ dataNode:
skipNum: 4 # Consume one for every n records skipped
coldTime: 60 # Turn on skip mode after there are only timetick msg for x seconds
segment:
- insertBufSize: 16777216 # Max buffer size to flush for a single segment.
+ # The maximum size of each binlog file in a segment buffered in memory. Binlog files whose size exceeds this value are then flushed to MinIO or S3 service.
+ # Unit: Byte
+ # Setting this parameter too small causes the system to store a small amount of data too frequently. Setting it too large increases the system's demand for memory.
+ insertBufSize: 16777216
deleteBufBytes: 16777216 # Max buffer size in bytes to flush del for a single channel, default as 16MB
syncPeriod: 600 # The period to sync segments if buffer is not empty.
memory:
@@ -556,6 +628,8 @@ dataNode:
# if this parameter <= 0, will set it as the maximum number of CPUs that can be executing
# suggest to set it bigger on large collection numbers to avoid blocking
workPoolSize: -1
+ # specify the size of global work pool for channel checkpoint updating
+ # if this parameter <= 0, will set it as 10
updateChannelCheckpointMaxParallel: 10
updateChannelCheckpointInterval: 60 # the interval duration(in seconds) for datanode to update channel checkpoint of each channel
updateChannelCheckpointRPCTimeout: 20 # timeout in seconds for UpdateChannelCheckpoint RPC call
@@ -569,40 +643,85 @@ dataNode:
levelZeroBatchMemoryRatio: 0.05 # The minimal memory ratio of free memory for level zero compaction executing in batch mode
levelZeroMaxBatchSize: -1 # Max batch size refers to the max number of L1/L2 segments in a batch when executing L0 compaction. Default to -1, any value that is less than 1 means no limit. Valid range: >= 1.
gracefulStopTimeout: 1800 # seconds. force stop node without graceful stop
- ip: # if not specified, use the first unicastable address
- port: 21124
- grpc:
- serverMaxSendSize: 536870912
- serverMaxRecvSize: 268435456
- clientMaxSendSize: 268435456
- clientMaxRecvSize: 536870912
slot:
- slotCap: 16 # The maximum number of tasks(e.g. compaction, importing) allowed to run concurrently on a datanode.
-
+ slotCap: 16 # The maximum number of tasks(e.g. compaction, importing) allowed to run concurrently on a datanode
clusteringCompaction:
memoryBufferRatio: 0.1 # The ratio of memory buffer of clustering compaction. Data larger than threshold will be flushed to storage.
- workPoolSize: 8 # worker pool size for one clustering compaction job
-
-streamingNode:
- # can specify ip for example
- # ip: 127.0.0.1
- ip: # if not specify address, will use the first unicastable address as local ip
- port: 19532
+ workPoolSize: 8 # worker pool size for one clustering compaction job.
+ bloomFilterApplyParallelFactor: 4 # parallel factor when to apply pk to bloom filter, default to 4*CPU_CORE_NUM
+ storage:
+ deltalog: json # deltalog format, options: [json, parquet]
+ ip: # TCP/IP address of dataNode. If not specified, use the first unicastable address
+ port: 21124 # TCP port of dataNode
grpc:
- serverMaxSendSize: 536870912
- serverMaxRecvSize: 536870912
- clientMaxSendSize: 268435456
- clientMaxRecvSize: 268435456
+ serverMaxSendSize: 536870912 # The maximum size of each RPC request that the dataNode can send, unit: byte
+ serverMaxRecvSize: 268435456 # The maximum size of each RPC request that the dataNode can receive, unit: byte
+ clientMaxSendSize: 268435456 # The maximum size of each RPC request that the clients on dataNode can send, unit: byte
+ clientMaxRecvSize: 536870912 # The maximum size of each RPC request that the clients on dataNode can receive, unit: byte
+
+# This topic introduces the message channel-related configurations of Milvus.
+msgChannel:
+ chanNamePrefix:
+ # Root name prefix of the channel when a message channel is created.
+ # It is recommended to change this parameter before starting Milvus for the first time.
+ # To share a Pulsar instance among multiple Milvus instances, consider changing this to a name rather than the default one for each Milvus instance before you start them.
+ cluster: by-dev
+ # Sub-name prefix of the message channel where the root coord publishes time tick messages.
+ # The complete channel name prefix is ${msgChannel.chanNamePrefix.cluster}-${msgChannel.chanNamePrefix.rootCoordTimeTick}
+ # Caution: Changing this parameter after using Milvus for a period of time will affect your access to old data.
+ # It is recommended to change this parameter before starting Milvus for the first time.
+ rootCoordTimeTick: rootcoord-timetick
+ # Sub-name prefix of the message channel where the root coord publishes its own statistics messages.
+ # The complete channel name prefix is ${msgChannel.chanNamePrefix.cluster}-${msgChannel.chanNamePrefix.rootCoordStatistics}
+ # Caution: Changing this parameter after using Milvus for a period of time will affect your access to old data.
+ # It is recommended to change this parameter before starting Milvus for the first time.
+ rootCoordStatistics: rootcoord-statistics
+ # Sub-name prefix of the message channel where the root coord publishes Data Manipulation Language (DML) messages.
+ # The complete channel name prefix is ${msgChannel.chanNamePrefix.cluster}-${msgChannel.chanNamePrefix.rootCoordDml}
+ # Caution: Changing this parameter after using Milvus for a period of time will affect your access to old data.
+ # It is recommended to change this parameter before starting Milvus for the first time.
+ rootCoordDml: rootcoord-dml
+ replicateMsg: replicate-msg
+ # Sub-name prefix of the message channel where the query node publishes time tick messages.
+ # The complete channel name prefix is ${msgChannel.chanNamePrefix.cluster}-${msgChannel.chanNamePrefix.queryTimeTick}
+ # Caution: Changing this parameter after using Milvus for a period of time will affect your access to old data.
+ # It is recommended to change this parameter before starting Milvus for the first time.
+ queryTimeTick: queryTimeTick
+ # Sub-name prefix of the message channel where the data coord publishes time tick messages.
+ # The complete channel name prefix is ${msgChannel.chanNamePrefix.cluster}-${msgChannel.chanNamePrefix.dataCoordTimeTick}
+ # Caution: Changing this parameter after using Milvus for a period of time will affect your access to old data.
+ # It is recommended to change this parameter before starting Milvus for the first time.
+ dataCoordTimeTick: datacoord-timetick-channel
+ # Sub-name prefix of the message channel where the data coord publishes segment information messages.
+ # The complete channel name prefix is ${msgChannel.chanNamePrefix.cluster}-${msgChannel.chanNamePrefix.dataCoordSegmentInfo}
+ # Caution: Changing this parameter after using Milvus for a period of time will affect your access to old data.
+ # It is recommended to change this parameter before starting Milvus for the first time.
+ dataCoordSegmentInfo: segment-info-channel
+ subNamePrefix:
+ # Subscription name prefix of the data coord.
+ # Caution: Changing this parameter after using Milvus for a period of time will affect your access to old data.
+ # It is recommended to change this parameter before starting Milvus for the first time.
+ dataCoordSubNamePrefix: dataCoord
+ # Subscription name prefix of the data node.
+ # Caution: Changing this parameter after using Milvus for a period of time will affect your access to old data.
+ # It is recommended to change this parameter before starting Milvus for the first time.
+ dataNodeSubNamePrefix: dataNode
# Configures the system log output.
log:
- level: info # Only supports debug, info, warn, error, panic, or fatal. Default 'info'.
+ # Milvus log level. Option: debug, info, warn, error, panic, and fatal.
+ # It is recommended to use debug level under test and development environments, and info level in production environment.
+ level: info
file:
- rootPath: # root dir path to put logs, default "" means no log file will print. please adjust in embedded Milvus: /tmp/milvus/logs
- maxSize: 300 # MB
- maxAge: 10 # Maximum time for log retention in day.
- maxBackups: 20
- format: text # text or json
+ # Root path to the log files.
+ # The default value is set empty, indicating to output log files to standard output (stdout) and standard error (stderr).
+ # If this parameter is set to a valid local path, Milvus writes and stores log files in this path.
+ # Set this parameter as the path that you have permission to write.
+ rootPath:
+ maxSize: 300 # The maximum size of a log file, unit: MB.
+ maxAge: 10 # The maximum retention time before a log file is automatically cleared, unit: day. The minimum value is 1.
+ maxBackups: 20 # The maximum number of log files to back up, unit: day. The minimum value is 1.
+ format: text # Milvus log format. Option: text and JSON
stdout: true # Stdout enable or not
grpc:
@@ -617,6 +736,7 @@ grpc:
maxMaxAttempts: 10
initialBackoff: 0.2
maxBackoff: 10
+ backoffMultiplier: 2
minResetInterval: 1000
maxCancelError: 32
minSessionCheckInterval: 200
@@ -628,10 +748,10 @@ tls:
caPemPath: configs/cert/ca.pem
common:
- defaultPartitionName: _default # default partition name for a collection
- defaultIndexName: _default_idx # default index name
+ defaultPartitionName: _default # Name of the default partition when a collection is created
+ defaultIndexName: _default_idx # Name of the index when it is created with name unspecified
entityExpiration: -1 # Entity expiration in seconds, CAUTION -1 means never expire
- indexSliceSize: 16 # MB
+ indexSliceSize: 16 # Index slice size in MB
threadCoreCoefficient:
highPriority: 10 # This parameter specify how many times the number of threads is the number of cores in high priority pool
middlePriority: 5 # This parameter specify how many times the number of threads is the number of cores in middle priority pool
@@ -647,6 +767,7 @@ common:
BeamWidthRatio: 4
gracefulTime: 5000 # milliseconds. it represents the interval (in ms) by which the request arrival time needs to be subtracted in the case of Bounded Consistency.
gracefulStopTimeout: 1800 # seconds. it will force quit the server if the graceful stop process is not completed during this time.
+ bitmapIndexCardinalityBound: 500
storageType: remote # please adjust in embedded Milvus: local, available values are [local, remote, opendal], value minio is deprecated, use remote instead
# Default value: auto
# Valid values: [auto, avx512, avx2, avx, sse4_2]
@@ -657,8 +778,8 @@ common:
# The superusers will ignore some system check processes,
# like the old password verification when updating the credential
superUsers:
+ defaultRootPassword: Milvus # default password for root user
tlsMode: 0
- defaultRootPassword: Milvus
session:
ttl: 30 # ttl value when session granting a lease to register service
retryTimes: 30 # retry times when session sending etcd requests
@@ -671,14 +792,18 @@ common:
storage:
scheme: s3
enablev2: false
- ttMsgEnabled: true # Whether the instance disable sending ts messages
+ # Whether to disable the internal time messaging mechanism for the system.
+ # If disabled (set to false), the system will not allow DML operations, including insertion, deletion, queries, and searches.
+ # This helps Milvus-CDC synchronize incremental data
+ ttMsgEnabled: true
traceLogMode: 0 # trace request info
bloomFilterSize: 100000 # bloom filter initial size
+ bloomFilterType: BlockedBloomFilter # bloom filter type, support BasicBloomFilter and BlockedBloomFilter
maxBloomFalsePositive: 0.001 # max false positive rate for bloom filter
- # clustering key/compaction related
- usePartitionKeyAsClusteringKey: false
- useVectorAsClusteringKey: false
- enableVectorClusteringKey: false
+ bloomFilterApplyBatchSize: 1000 # batch size when to apply pk to bloom filter
+ usePartitionKeyAsClusteringKey: false # if true, do clustering compaction and segment prune on partition key field
+ useVectorAsClusteringKey: false # if true, do clustering compaction and segment prune on vector field
+ enableVectorClusteringKey: false # if true, enable vector clustering key and vector clustering compaction
# QuotaConfig, configurations of Milvus quota and limits.
# By default, we enable:
@@ -702,43 +827,62 @@ quotaAndLimits:
allocWaitInterval: 1000 # retry wait duration when delete alloc forward data rate failed, in millisecond
complexDeleteLimitEnable: false # whether complex delete check forward data by limiter
maxCollectionNum: 65536
- maxCollectionNumPerDB: 65536
+ maxCollectionNumPerDB: 65536 # Maximum number of collections per database.
maxInsertSize: -1 # maximum size of a single insert request, in bytes, -1 means no limit
maxResourceGroupNumOfQueryNode: 1024 # maximum number of resource groups of query nodes
ddl:
- enabled: false
- collectionRate: -1 # qps, default no limit, rate for CreateCollection, DropCollection, LoadCollection, ReleaseCollection
- partitionRate: -1 # qps, default no limit, rate for CreatePartition, DropPartition, LoadPartition, ReleasePartition
+ enabled: false # Whether DDL request throttling is enabled.
+ # Maximum number of collection-related DDL requests per second.
+ # Setting this item to 10 indicates that Milvus processes no more than 10 collection-related DDL requests per second, including collection creation requests, collection drop requests, collection load requests, and collection release requests.
+ # To use this setting, set quotaAndLimits.ddl.enabled to true at the same time.
+ collectionRate: -1
+ # Maximum number of partition-related DDL requests per second.
+ # Setting this item to 10 indicates that Milvus processes no more than 10 partition-related requests per second, including partition creation requests, partition drop requests, partition load requests, and partition release requests.
+ # To use this setting, set quotaAndLimits.ddl.enabled to true at the same time.
+ partitionRate: -1
db:
collectionRate: -1 # qps of db level , default no limit, rate for CreateCollection, DropCollection, LoadCollection, ReleaseCollection
partitionRate: -1 # qps of db level, default no limit, rate for CreatePartition, DropPartition, LoadPartition, ReleasePartition
indexRate:
- enabled: false
- max: -1 # qps, default no limit, rate for CreateIndex, DropIndex
+ enabled: false # Whether index-related request throttling is enabled.
+ # Maximum number of index-related requests per second.
+ # Setting this item to 10 indicates that Milvus processes no more than 10 partition-related requests per second, including index creation requests and index drop requests.
+ # To use this setting, set quotaAndLimits.indexRate.enabled to true at the same time.
+ max: -1
db:
max: -1 # qps of db level, default no limit, rate for CreateIndex, DropIndex
flushRate:
- enabled: true
- max: -1 # qps, default no limit, rate for flush
+ enabled: true # Whether flush request throttling is enabled.
+ # Maximum number of flush requests per second.
+ # Setting this item to 10 indicates that Milvus processes no more than 10 flush requests per second.
+ # To use this setting, set quotaAndLimits.flushRate.enabled to true at the same time.
+ max: -1
collection:
max: 0.1 # qps, default no limit, rate for flush at collection level.
db:
max: -1 # qps of db level, default no limit, rate for flush
compactionRate:
- enabled: false
- max: -1 # qps, default no limit, rate for manualCompaction
+ enabled: false # Whether manual compaction request throttling is enabled.
+ # Maximum number of manual-compaction requests per second.
+ # Setting this item to 10 indicates that Milvus processes no more than 10 manual-compaction requests per second.
+ # To use this setting, set quotaAndLimits.compaction.enabled to true at the same time.
+ max: -1
db:
max: -1 # qps of db level, default no limit, rate for manualCompaction
dml:
- # dml limit rates, default no limit.
- # The maximum rate will not be greater than max.
- enabled: false
+ enabled: false # Whether DML request throttling is enabled.
insertRate:
- max: -1 # MB/s, default no limit
+ # Highest data insertion rate per second.
+ # Setting this item to 5 indicates that Milvus only allows data insertion at the rate of 5 MB/s.
+ # To use this setting, set quotaAndLimits.dml.enabled to true at the same time.
+ max: -1
db:
max: -1 # MB/s, default no limit
collection:
- max: -1 # MB/s, default no limit
+ # Highest data insertion rate per collection per second.
+ # Setting this item to 5 indicates that Milvus only allows data insertion to any collection at the rate of 5 MB/s.
+ # To use this setting, set quotaAndLimits.dml.enabled to true at the same time.
+ max: -1
partition:
max: -1 # MB/s, default no limit
upsertRate:
@@ -750,11 +894,17 @@ quotaAndLimits:
partition:
max: -1 # MB/s, default no limit
deleteRate:
- max: -1 # MB/s, default no limit
+ # Highest data deletion rate per second.
+ # Setting this item to 0.1 indicates that Milvus only allows data deletion at the rate of 0.1 MB/s.
+ # To use this setting, set quotaAndLimits.dml.enabled to true at the same time.
+ max: -1
db:
max: -1 # MB/s, default no limit
collection:
- max: -1 # MB/s, default no limit
+ # Highest data deletion rate per second.
+ # Setting this item to 0.1 indicates that Milvus only allows data deletion from any collection at the rate of 0.1 MB/s.
+ # To use this setting, set quotaAndLimits.dml.enabled to true at the same time.
+ max: -1
partition:
max: -1 # MB/s, default no limit
bulkLoadRate:
@@ -766,23 +916,33 @@ quotaAndLimits:
partition:
max: -1 # MB/s, default no limit, not support yet. TODO: limit partition bulkLoad rate
dql:
- # dql limit rates, default no limit.
- # The maximum rate will not be greater than max.
- enabled: false
+ enabled: false # Whether DQL request throttling is enabled.
searchRate:
- max: -1 # vps (vectors per second), default no limit
+ # Maximum number of vectors to search per second.
+ # Setting this item to 100 indicates that Milvus only allows searching 100 vectors per second no matter whether these 100 vectors are all in one search or scattered across multiple searches.
+ # To use this setting, set quotaAndLimits.dql.enabled to true at the same time.
+ max: -1
db:
max: -1 # vps (vectors per second), default no limit
collection:
- max: -1 # vps (vectors per second), default no limit
+ # Maximum number of vectors to search per collection per second.
+ # Setting this item to 100 indicates that Milvus only allows searching 100 vectors per second per collection no matter whether these 100 vectors are all in one search or scattered across multiple searches.
+ # To use this setting, set quotaAndLimits.dql.enabled to true at the same time.
+ max: -1
partition:
max: -1 # vps (vectors per second), default no limit
queryRate:
- max: -1 # qps, default no limit
+ # Maximum number of queries per second.
+ # Setting this item to 100 indicates that Milvus only allows 100 queries per second.
+ # To use this setting, set quotaAndLimits.dql.enabled to true at the same time.
+ max: -1
db:
max: -1 # qps, default no limit
collection:
- max: -1 # qps, default no limit
+ # Maximum number of queries per collection per second.
+ # Setting this item to 100 indicates that Milvus only allows 100 queries per collection per second.
+ # To use this setting, set quotaAndLimits.dql.enabled to true at the same time.
+ max: -1
partition:
max: -1 # qps, default no limit
limitWriting:
@@ -819,35 +979,22 @@ quotaAndLimits:
diskQuotaPerDB: -1 # MB, (0, +inf), default no limit
diskQuotaPerCollection: -1 # MB, (0, +inf), default no limit
diskQuotaPerPartition: -1 # MB, (0, +inf), default no limit
+ l0SegmentsRowCountProtection:
+ enabled: false # switch to enable l0 segment row count quota
+ lowWaterLevel: 30000000 # l0 segment row count quota, low water level
+ highWaterLevel: 50000000 # l0 segment row count quota, high water level
+ deleteBufferRowCountProtection:
+ enabled: false # switch to enable delete buffer row count quota
+ lowWaterLevel: 32768 # delete buffer row count quota, low water level
+ highWaterLevel: 65536 # delete buffer row count quota, high water level
+ deleteBufferSizeProtection:
+ enabled: false # switch to enable delete buffer size quota
+ lowWaterLevel: 134217728 # delete buffer size quota, low water level
+ highWaterLevel: 268435456 # delete buffer size quota, high water level
limitReading:
# forceDeny false means dql requests are allowed (except for some
# specific conditions, such as collection has been dropped), true means always reject all dql requests.
forceDeny: false
- queueProtection:
- enabled: false
- # nqInQueueThreshold indicated that the system was under backpressure for Search/Query path.
- # If NQ in any QueryNode's queue is greater than nqInQueueThreshold, search&query rates would gradually cool off
- # until the NQ in queue no longer exceeds nqInQueueThreshold. We think of the NQ of query request as 1.
- # int, default no limit
- nqInQueueThreshold: -1
- # queueLatencyThreshold indicated that the system was under backpressure for Search/Query path.
- # If dql latency of queuing is greater than queueLatencyThreshold, search&query rates would gradually cool off
- # until the latency of queuing no longer exceeds queueLatencyThreshold.
- # The latency here refers to the averaged latency over a period of time.
- # milliseconds, default no limit
- queueLatencyThreshold: -1
- resultProtection:
- enabled: false
- # maxReadResultRate indicated that the system was under backpressure for Search/Query path.
- # If dql result rate is greater than maxReadResultRate, search&query rates would gradually cool off
- # until the read result rate no longer exceeds maxReadResultRate.
- # MB/s, default no limit
- maxReadResultRate: -1
- maxReadResultRatePerDB: -1
- maxReadResultRatePerCollection: -1
- # colOffSpeed is the speed of search&query rates cool off.
- # (0, 1]
- coolOffSpeed: 0.9
trace:
# trace exporter type, default is stdout,
@@ -860,8 +1007,10 @@ trace:
jaeger:
url: # when exporter is jaeger should set the jaeger's URL
otlp:
- endpoint: # example: "127.0.0.1:4318"
+ endpoint: # example: "127.0.0.1:4317" for grpc, "127.0.0.1:4318" for http
+ method: # otlp export method, acceptable values: ["grpc", "http"], using "grpc" by default
secure: true
+ initTimeoutSeconds: 10 # segcore initialization timeout in seconds, preventing otlp grpc hangs forever
#when using GPU indexing, Milvus will utilize a memory pool to avoid frequent memory allocation and deallocation.
#here, you can set the size of the memory occupied by the memory pool, with the unit being MB.
@@ -870,5 +1019,15 @@ trace:
#milvus will automatically initialize half of the available GPU memory,
#maxMemSize will the whole available GPU memory.
gpu:
- initMemSize: # Gpu Memory Pool init size
- maxMemSize: # Gpu Memory Pool Max size
\ No newline at end of file
+ initMemSize: 2048 # Gpu Memory Pool init size
+ maxMemSize: 4096 # Gpu Memory Pool Max size
+
+# Any configuration related to the streaming node server.
+streamingNode:
+ ip: # TCP/IP address of streamingNode. If not specified, use the first unicastable address
+ port: 22222 # TCP port of streamingNode
+ grpc:
+ serverMaxSendSize: 268435456 # The maximum size of each RPC request that the streamingNode can send, unit: byte
+ serverMaxRecvSize: 268435456 # The maximum size of each RPC request that the streamingNode can receive, unit: byte
+ clientMaxSendSize: 268435456 # The maximum size of each RPC request that the clients on streamingNode can send, unit: byte
+ clientMaxRecvSize: 268435456 # The maximum size of each RPC request that the clients on streamingNode can receive, unit: byte
diff --git a/deployments/docker/cluster-distributed-deployment/roles/deploy-etcd/tasks/main.yml b/deployments/docker/cluster-distributed-deployment/roles/deploy-etcd/tasks/main.yml
index 18cfe461a4288..229c5c9e3ed3a 100644
--- a/deployments/docker/cluster-distributed-deployment/roles/deploy-etcd/tasks/main.yml
+++ b/deployments/docker/cluster-distributed-deployment/roles/deploy-etcd/tasks/main.yml
@@ -5,7 +5,7 @@
- name: etcd
docker_container:
name: etcd
- image: quay.io/coreos/etcd:v3.5.5
+ image: quay.io/coreos/etcd:v3.5.14
volumes:
- etcd_volume:/etcd
command: etcd -advertise-client-urls=http://127.0.0.1:2379 -listen-client-urls http://0.0.0.0:2379 --data-dir /etcd
diff --git a/deployments/docker/dev/docker-compose-apple-silicon.yml b/deployments/docker/dev/docker-compose-apple-silicon.yml
index 5cc4127b51870..a74652f2feaba 100644
--- a/deployments/docker/dev/docker-compose-apple-silicon.yml
+++ b/deployments/docker/dev/docker-compose-apple-silicon.yml
@@ -2,7 +2,7 @@ version: '3.5'
services:
etcd:
- image: quay.io/coreos/etcd:v3.5.5
+ image: quay.io/coreos/etcd:v3.5.14
environment:
- ETCD_AUTO_COMPACTION_MODE=revision
- ETCD_AUTO_COMPACTION_RETENTION=1000
diff --git a/deployments/docker/dev/docker-compose.yml b/deployments/docker/dev/docker-compose.yml
index cb8da102c4a50..b772b3396430c 100644
--- a/deployments/docker/dev/docker-compose.yml
+++ b/deployments/docker/dev/docker-compose.yml
@@ -2,7 +2,7 @@ version: '3.5'
services:
etcd:
- image: quay.io/coreos/etcd:v3.5.5
+ image: quay.io/coreos/etcd:v3.5.14
environment:
- ETCD_AUTO_COMPACTION_MODE=revision
- ETCD_AUTO_COMPACTION_RETENTION=1000
diff --git a/deployments/docker/gpu/standalone/docker-compose.yml b/deployments/docker/gpu/standalone/docker-compose.yml
index 02978188207dd..7885639513530 100644
--- a/deployments/docker/gpu/standalone/docker-compose.yml
+++ b/deployments/docker/gpu/standalone/docker-compose.yml
@@ -3,7 +3,7 @@ version: '3.5'
services:
etcd:
container_name: milvus-etcd
- image: quay.io/coreos/etcd:v3.5.5
+ image: quay.io/coreos/etcd:v3.5.14
environment:
- ETCD_AUTO_COMPACTION_MODE=revision
- ETCD_AUTO_COMPACTION_RETENTION=1000
diff --git a/deployments/docker/standalone/docker-compose.yml b/deployments/docker/standalone/docker-compose.yml
index b6d9c428bb19e..2871ff80a36ec 100644
--- a/deployments/docker/standalone/docker-compose.yml
+++ b/deployments/docker/standalone/docker-compose.yml
@@ -3,7 +3,7 @@ version: '3.5'
services:
etcd:
container_name: milvus-etcd
- image: quay.io/coreos/etcd:v3.5.5
+ image: quay.io/coreos/etcd:v3.5.14
environment:
- ETCD_AUTO_COMPACTION_MODE=revision
- ETCD_AUTO_COMPACTION_RETENTION=1000
@@ -43,6 +43,7 @@ services:
security_opt:
- seccomp:unconfined
environment:
+ MINIO_REGION: us-east-1
ETCD_ENDPOINTS: etcd:2379
MINIO_ADDRESS: minio:9000
volumes:
diff --git a/deployments/export-log/README.md b/deployments/export-log/README.md
index 8df1524548ade..c213dfc4934f4 100644
--- a/deployments/export-log/README.md
+++ b/deployments/export-log/README.md
@@ -8,7 +8,7 @@ For better tracking and debugging Milvus, the script `export-milvus-log.sh` is p
>
>For milvus installed with helm-chart, if `log.persistence.enabled` is set to true (default false), the tool cannot be used to export milvus logs and the log files can be found directly under the path specified by `log.persistence.mountPath`.
>
-> For Milvus installed with docker-compose, you can use `docker-compose logs > milvus.log` to export the logs.
+> For Milvus installed with docker-compose, you can use `docker compose logs > milvus.log` to export the logs.
## Parameter Description
diff --git a/deployments/monitor/grafana/milvus-dashboard.json b/deployments/monitor/grafana/milvus-dashboard.json
index d15750edf0c68..3397707e2c2c3 100644
--- a/deployments/monitor/grafana/milvus-dashboard.json
+++ b/deployments/monitor/grafana/milvus-dashboard.json
@@ -3,7 +3,10 @@
"list": [
{
"builtIn": 1,
- "datasource": "-- Grafana --",
+ "datasource": {
+ "type": "datasource",
+ "uid": "grafana"
+ },
"enable": true,
"hide": true,
"iconColor": "rgba(0, 211, 255, 1)",
@@ -18,1700 +21,2623 @@
}
]
},
+ "description": "Recommend grafana with v8.5.20",
"editable": true,
"fiscalYearStartMonth": 0,
"graphTooltip": 0,
- "id": 34,
- "iteration": 1667987821492,
+ "id": 110,
"links": [],
"liveNow": false,
"panels": [
{
- "collapsed": false,
- "gridPos": {
- "h": 1,
- "w": 24,
- "x": 0,
- "y": 0
- },
- "id": 123248,
- "panels": [],
- "title": "Proxy",
- "type": "row"
- },
- {
- "aliasColors": {},
- "bars": false,
- "dashLength": 10,
- "dashes": false,
+ "collapsed": true,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "description": "per-second increasing rate of searching vectors.",
- "fill": 1,
- "fillGradient": 0,
"gridPos": {
- "h": 6,
- "w": 8,
+ "h": 1,
+ "w": 24,
"x": 0,
- "y": 1
- },
- "hiddenSeries": false,
- "id": 123250,
- "legend": {
- "avg": false,
- "current": false,
- "max": false,
- "min": false,
- "show": true,
- "total": false,
- "values": false
- },
- "lines": true,
- "linewidth": 1,
- "nullPointMode": "null",
- "options": {
- "alertThreshold": true
+ "y": 0
},
- "percentage": false,
- "pluginVersion": "8.3.3",
- "pointradius": 2,
- "points": false,
- "renderer": "flot",
- "seriesOverrides": [],
- "spaceLength": 10,
- "stack": false,
- "steppedLine": false,
- "targets": [
+ "id": 123399,
+ "panels": [
{
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "exemplar": true,
- "expr": "sum(increase(milvus_proxy_search_vectors_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])/120) by (pod, node_id)",
- "interval": "",
- "legendFormat": "{{pod}}-{{node_id}}",
- "queryType": "randomWalk",
- "refId": "A"
- }
- ],
- "thresholds": [],
- "timeRegions": [],
- "title": "Search Vector Count Rate",
- "tooltip": {
- "shared": true,
- "sort": 0,
- "value_type": "individual"
- },
- "type": "graph",
- "xaxis": {
- "mode": "time",
- "show": true,
- "values": []
- },
- "yaxes": [
- {
- "$$hashKey": "object:3414",
- "format": "short",
- "logBase": 1,
- "min": "0",
- "show": true
+ "description": "Slow query count in 1 minute",
+ "fill": 1,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 8,
+ "w": 8,
+ "x": 0,
+ "y": 1
+ },
+ "hiddenSeries": false,
+ "id": 123450,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "10.2.0",
+ "pointradius": 2,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "editorMode": "code",
+ "exemplar": true,
+ "expr": "increase(milvus_proxy_slow_query_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[1m])",
+ "hide": false,
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "{{pod}}-{{node_id}}-{{msg_type}}",
+ "queryType": "randomWalk",
+ "range": true,
+ "refId": "A"
+ }
+ ],
+ "thresholds": [],
+ "timeRegions": [],
+ "title": "Slow Query (in 1m)",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "$$hashKey": "object:536",
+ "decimals": 0,
+ "format": "short",
+ "logBase": 1,
+ "min": "0",
+ "show": true
+ },
+ {
+ "$$hashKey": "object:537",
+ "format": "short",
+ "logBase": 1,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false
+ }
},
{
- "$$hashKey": "object:3415",
- "format": "short",
- "logBase": 1,
- "show": true
- }
- ],
- "yaxis": {
- "align": false
- }
- },
- {
- "aliasColors": {},
- "bars": false,
- "dashLength": 10,
- "dashes": false,
- "datasource": {
- "type": "prometheus",
- "uid": "$datasource"
- },
- "description": "per-second increasing rate of inserting vectors.",
- "fill": 1,
- "fillGradient": 0,
- "gridPos": {
- "h": 6,
- "w": 8,
- "x": 8,
- "y": 1
- },
- "hiddenSeries": false,
- "id": 123315,
- "legend": {
- "avg": false,
- "current": false,
- "max": false,
- "min": false,
- "show": true,
- "total": false,
- "values": false
- },
- "lines": true,
- "linewidth": 1,
- "nullPointMode": "null",
- "options": {
- "alertThreshold": true
- },
- "percentage": false,
- "pluginVersion": "8.3.3",
- "pointradius": 2,
- "points": false,
- "renderer": "flot",
- "seriesOverrides": [],
- "spaceLength": 10,
- "stack": false,
- "steppedLine": false,
- "targets": [
- {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "exemplar": true,
- "expr": "sum(increase(milvus_proxy_insert_vectors_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])/120) by (pod, node_id)",
- "interval": "",
- "legendFormat": "{{pod}}-{{node_id}}",
- "queryType": "randomWalk",
- "refId": "A"
- }
- ],
- "thresholds": [],
- "timeRegions": [],
- "title": "Insert Vector Count Rate",
- "tooltip": {
- "shared": true,
- "sort": 0,
- "value_type": "individual"
- },
- "type": "graph",
- "xaxis": {
- "mode": "time",
- "show": true,
- "values": []
- },
- "yaxes": [
- {
- "$$hashKey": "object:3414",
- "format": "short",
- "logBase": 1,
- "min": "0",
- "show": true
- },
- {
- "$$hashKey": "object:3415",
- "format": "short",
- "logBase": 1,
- "show": true
- }
- ],
- "yaxis": {
- "align": false
- }
- },
- {
- "aliasColors": {},
- "bars": false,
- "dashLength": 10,
- "dashes": false,
- "datasource": {
- "type": "prometheus",
- "uid": "$datasource"
- },
- "description": "The 99th percentile and average latency of search request over the last 2 minutes.",
- "fill": 1,
- "fillGradient": 0,
- "gridPos": {
- "h": 6,
- "w": 8,
- "x": 16,
- "y": 1
- },
- "hiddenSeries": false,
- "id": 123264,
- "legend": {
- "avg": false,
- "current": false,
- "max": false,
- "min": false,
- "show": true,
- "total": false,
- "values": false
- },
- "lines": true,
- "linewidth": 1,
- "nullPointMode": "null",
- "options": {
- "alertThreshold": true
- },
- "percentage": false,
- "pluginVersion": "8.3.3",
- "pointradius": 2,
- "points": false,
- "renderer": "flot",
- "seriesOverrides": [],
- "spaceLength": 10,
- "stack": false,
- "steppedLine": false,
- "targets": [
+ "description": "",
+ "fieldConfig": {
+ "defaults": {
+ "unit": "none"
+ },
+ "overrides": []
+ },
+ "fill": 1,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 8,
+ "w": 8,
+ "x": 8,
+ "y": 1
+ },
+ "hiddenSeries": false,
+ "id": 123397,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "10.2.0",
+ "pointradius": 2,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "editorMode": "code",
+ "exemplar": false,
+ "expr": "sum(increase(milvus_proxy_req_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\", status=\"success\"}[1m])) by(function_name) ",
+ "interval": "",
+ "legendFormat": "{{function_name}}",
+ "range": true,
+ "refId": "A"
+ }
+ ],
+ "thresholds": [],
+ "timeRegions": [],
+ "title": "Successful Requests (in 1m)",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "$$hashKey": "object:319",
+ "format": "none",
+ "logBase": 1,
+ "min": "0",
+ "show": true
+ },
+ {
+ "$$hashKey": "object:320",
+ "format": "short",
+ "logBase": 1,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false
+ }
+ },
{
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "exemplar": true,
- "expr": "histogram_quantile(0.99, sum by (le, query_type, pod, node_id) (rate(milvus_proxy_sq_latency_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])))",
- "hide": false,
- "interval": "",
- "legendFormat": "p99-{{query_type}}-{{pod}}-{{node_id}}",
- "refId": "A"
+ "fieldConfig": {
+ "defaults": {
+ "unit": "none"
+ },
+ "overrides": []
+ },
+ "fill": 1,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 8,
+ "w": 8,
+ "x": 16,
+ "y": 1
+ },
+ "hiddenSeries": false,
+ "id": 123411,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "10.2.0",
+ "pointradius": 2,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "editorMode": "code",
+ "exemplar": true,
+ "expr": "sum(increase(milvus_proxy_req_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\", status!~\"success|total\"}[1m])) by(function_name) ",
+ "interval": "",
+ "legendFormat": "{{function_name}}",
+ "range": true,
+ "refId": "A"
+ }
+ ],
+ "thresholds": [],
+ "timeRegions": [],
+ "title": "Failed Requests (in 1m)",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "$$hashKey": "object:319",
+ "format": "none",
+ "logBase": 1,
+ "min": "0",
+ "show": true
+ },
+ {
+ "$$hashKey": "object:320",
+ "format": "short",
+ "logBase": 1,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false
+ }
},
{
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "exemplar": true,
- "expr": "sum(increase(milvus_proxy_sq_latency_sum{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by (pod, node_id, query_type) / sum(increase(milvus_proxy_sq_latency_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by (pod, node_id, query_type)",
- "hide": false,
- "interval": "",
- "legendFormat": "avg-{{query_type}}-{{pod}}-{{node_id}}",
- "refId": "B"
- }
- ],
- "thresholds": [],
- "timeRegions": [],
- "title": "Search Latency",
- "tooltip": {
- "shared": true,
- "sort": 0,
- "value_type": "individual"
- },
- "type": "graph",
- "xaxis": {
- "mode": "time",
- "show": true,
- "values": []
- },
- "yaxes": [
- {
- "$$hashKey": "object:3538",
- "format": "short",
- "logBase": 1,
- "min": "0",
- "show": true
- },
- {
- "$$hashKey": "object:3539",
- "format": "short",
- "logBase": 1,
- "show": true
- }
- ],
- "yaxis": {
- "align": false
- }
- },
- {
- "aliasColors": {},
- "bars": false,
- "dashLength": 10,
- "dashes": false,
- "datasource": {
- "type": "prometheus",
- "uid": "$datasource"
- },
- "description": "The 99th percentile and average latency of search request for a specified collection over the last 2 minutes.",
- "fill": 1,
- "fillGradient": 0,
- "gridPos": {
- "h": 6,
- "w": 8,
- "x": 0,
- "y": 7
- },
- "hiddenSeries": false,
- "id": 123377,
- "legend": {
- "avg": false,
- "current": false,
- "max": false,
- "min": false,
- "show": true,
- "total": false,
- "values": false
- },
- "lines": true,
- "linewidth": 1,
- "nullPointMode": "null",
- "options": {
- "alertThreshold": true
- },
- "percentage": false,
- "pluginVersion": "8.3.3",
- "pointradius": 2,
- "points": false,
- "renderer": "flot",
- "seriesOverrides": [],
- "spaceLength": 10,
- "stack": false,
- "steppedLine": false,
- "targets": [
+ "description": "The 99th percentile and average latency of mutation request over the last 2 minutes.",
+ "fill": 1,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 8,
+ "w": 8,
+ "x": 0,
+ "y": 9
+ },
+ "hiddenSeries": false,
+ "id": 123405,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "10.2.0",
+ "pointradius": 2,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "editorMode": "code",
+ "exemplar": true,
+ "expr": "histogram_quantile(0.99, sum by (le, msg_type, pod, node_id) (rate(milvus_proxy_mutation_latency_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])))",
+ "interval": "",
+ "legendFormat": "p99-{{pod}}-{{node_id}}-{{msg_type}}",
+ "queryType": "randomWalk",
+ "range": true,
+ "refId": "A"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "editorMode": "code",
+ "exemplar": true,
+ "expr": "sum(increase(milvus_proxy_mutation_latency_sum{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by (pod, node_id, msg_type) / sum(increase(milvus_proxy_mutation_latency_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by (pod, node_id, msg_type)",
+ "hide": false,
+ "interval": "",
+ "legendFormat": "avg-{{pod}}-{{node_id}}-{{msg_type}}",
+ "range": true,
+ "refId": "B"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "editorMode": "code",
+ "expr": "histogram_quantile(1, sum by (le, msg_type, pod, node_id) (rate(milvus_proxy_mutation_latency_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])))",
+ "hide": false,
+ "legendFormat": "max-{{pod}}-{{node-id}}-{{msg_type}}",
+ "range": true,
+ "refId": "C"
+ }
+ ],
+ "thresholds": [],
+ "timeRegions": [],
+ "title": "Mutation Latency",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "$$hashKey": "object:3538",
+ "format": "ms",
+ "logBase": 1,
+ "min": "0",
+ "show": true
+ },
+ {
+ "$$hashKey": "object:3539",
+ "format": "short",
+ "logBase": 1,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false
+ }
+ },
{
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "exemplar": true,
- "expr": "histogram_quantile(0.99, sum by (le, query_type, pod, node_id) (rate(milvus_proxy_collection_sq_latency_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\", collection_name=~\"$collection\"}[2m])))",
- "hide": false,
- "interval": "",
- "legendFormat": "p99-{{query_type}}-{{pod}}-{{node_id}}",
- "refId": "A"
+ "description": "The 99th percentile and average latency of search request over the last 2 minutes.",
+ "fill": 1,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 8,
+ "w": 8,
+ "x": 8,
+ "y": 9
+ },
+ "hiddenSeries": false,
+ "id": 123404,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "10.2.0",
+ "pointradius": 2,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "editorMode": "code",
+ "exemplar": true,
+ "expr": "histogram_quantile(0.99, sum by (le,pod, node_id) (rate(milvus_proxy_sq_latency_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\", query_type=\"search\"}[2m])))",
+ "hide": false,
+ "interval": "",
+ "legendFormat": "p99-{{pod}}-{{node_id}}",
+ "range": true,
+ "refId": "A"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "editorMode": "code",
+ "exemplar": true,
+ "expr": "sum(increase(milvus_proxy_sq_latency_sum{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\", query_type=\"search\"}[2m])) by (pod, node_id) / sum(increase(milvus_proxy_sq_latency_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\", query_type=\"search\"}[2m])) by (pod, node_id)",
+ "hide": false,
+ "interval": "",
+ "legendFormat": "avg-{{pod}}-{{node_id}}",
+ "range": true,
+ "refId": "B"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "editorMode": "code",
+ "expr": "histogram_quantile(1, sum by (le,pod, node_id) (rate(milvus_proxy_sq_latency_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\", query_type=\"search\"}[2m])))",
+ "hide": false,
+ "legendFormat": "max-{{pod}}-{{node-id}}",
+ "range": true,
+ "refId": "C"
+ }
+ ],
+ "thresholds": [],
+ "timeRegions": [],
+ "title": "Search Latency",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "$$hashKey": "object:3538",
+ "format": "ms",
+ "logBase": 1,
+ "min": "0",
+ "show": true
+ },
+ {
+ "$$hashKey": "object:3539",
+ "format": "short",
+ "logBase": 1,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false
+ }
},
{
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "exemplar": true,
- "expr": "sum(increase(milvus_proxy_collection_sq_latency_sum{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\", collection_name=~\"$collection\"}[2m])) by (pod, node_id, query_type) / sum(increase(milvus_proxy_collection_sq_latency_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\", collection_name=~\"$collection\"}[2m])) by (pod, node_id, query_type)",
- "hide": false,
- "interval": "",
- "legendFormat": "avg-{{query_type}}-{{pod}}-{{node_id}}",
- "refId": "B"
- }
- ],
- "thresholds": [],
- "timeRegions": [],
- "title": "Collection Search Latency",
- "tooltip": {
- "shared": true,
- "sort": 0,
- "value_type": "individual"
- },
- "type": "graph",
- "xaxis": {
- "mode": "time",
- "show": true,
- "values": []
- },
- "yaxes": [
- {
- "$$hashKey": "object:3538",
- "format": "short",
- "logBase": 1,
- "min": "0",
- "show": true
- },
- {
- "$$hashKey": "object:3539",
- "format": "short",
- "logBase": 1,
- "show": true
- }
- ],
- "yaxis": {
- "align": false
- }
- },
- {
- "aliasColors": {},
- "bars": false,
- "dashLength": 10,
- "dashes": false,
- "datasource": {
- "type": "prometheus",
- "uid": "$datasource"
- },
- "description": "The 99th percentile and average latency of mutation request over the last 2 minutes.",
- "fill": 1,
- "fillGradient": 0,
- "gridPos": {
- "h": 6,
- "w": 8,
- "x": 8,
- "y": 7
- },
- "hiddenSeries": false,
- "id": 123320,
- "legend": {
- "avg": false,
- "current": false,
- "max": false,
- "min": false,
- "show": true,
- "total": false,
- "values": false
- },
- "lines": true,
- "linewidth": 1,
- "nullPointMode": "null",
- "options": {
- "alertThreshold": true
- },
- "percentage": false,
- "pluginVersion": "8.3.3",
- "pointradius": 2,
- "points": false,
- "renderer": "flot",
- "seriesOverrides": [],
- "spaceLength": 10,
- "stack": false,
- "steppedLine": false,
- "targets": [
+ "description": "The 99th percentile and average latency of query request over the last 2 minutes.",
+ "fill": 1,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 8,
+ "w": 8,
+ "x": 16,
+ "y": 9
+ },
+ "hiddenSeries": false,
+ "id": 123410,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "10.2.0",
+ "pointradius": 2,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "editorMode": "code",
+ "exemplar": true,
+ "expr": "histogram_quantile(0.99, sum by (le, pod, node_id) (rate(milvus_proxy_sq_latency_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\", query_type=\"query\"}[2m])))",
+ "hide": false,
+ "interval": "",
+ "legendFormat": "p99-{{pod}}-{{node_id}}",
+ "range": true,
+ "refId": "A"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "editorMode": "code",
+ "exemplar": true,
+ "expr": "sum(increase(milvus_proxy_sq_latency_sum{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\", query_type=\"query\"}[2m])) by (pod, node_id) / sum(increase(milvus_proxy_sq_latency_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\", query_type=\"query\"}[2m])) by (pod, node_id)",
+ "hide": false,
+ "interval": "",
+ "legendFormat": "avg-{{pod}}-{{node_id}}",
+ "range": true,
+ "refId": "B"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "editorMode": "code",
+ "expr": "histogram_quantile(1, sum by (le, pod, node_id) (rate(milvus_proxy_sq_latency_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\", query_type=\"query\"}[2m])))",
+ "hide": false,
+ "legendFormat": "max-{{pod}}-{{node_id}}",
+ "range": true,
+ "refId": "C"
+ }
+ ],
+ "thresholds": [],
+ "timeRegions": [],
+ "title": "Query Latency",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "$$hashKey": "object:3538",
+ "format": "ms",
+ "logBase": 1,
+ "min": "0",
+ "show": true
+ },
+ {
+ "$$hashKey": "object:3539",
+ "format": "short",
+ "logBase": 1,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false
+ }
+ },
{
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "exemplar": true,
- "expr": "histogram_quantile(0.99, sum by (le, msg_type, pod, node_id) (rate(milvus_proxy_mutation_latency_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])))",
- "interval": "",
- "legendFormat": "p99-{{msg_type}}-{{pod}}-{{node_id}}",
- "queryType": "randomWalk",
- "refId": "A"
+ "fill": 1,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 8,
+ "w": 8,
+ "x": 0,
+ "y": 17
+ },
+ "hiddenSeries": false,
+ "id": 123402,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "10.2.0",
+ "pointradius": 2,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "editorMode": "code",
+ "expr": "sum(milvus_rootcoord_quota_states{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (quota_states)",
+ "interval": "",
+ "legendFormat": "{{quota_states}}",
+ "range": true,
+ "refId": "A"
+ }
+ ],
+ "thresholds": [],
+ "timeRegions": [],
+ "title": "RootCoord Quota State",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "$$hashKey": "object:376",
+ "format": "short",
+ "logBase": 1,
+ "min": "0",
+ "show": true
+ },
+ {
+ "$$hashKey": "object:377",
+ "format": "short",
+ "logBase": 1,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false
+ }
},
{
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "exemplar": true,
- "expr": "sum(increase(milvus_proxy_mutation_latency_sum{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by (pod, node_id, msg_type) / sum(increase(milvus_proxy_mutation_latency_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by (pod, node_id, msg_type)",
- "hide": false,
- "interval": "",
- "legendFormat": "avg-{{msg_type}}-{{pod}}-{{node_id}}",
- "refId": "B"
- }
- ],
- "thresholds": [],
- "timeRegions": [],
- "title": "Mutation Latency",
- "tooltip": {
- "shared": true,
- "sort": 0,
- "value_type": "individual"
- },
- "type": "graph",
- "xaxis": {
- "mode": "time",
- "show": true,
- "values": []
- },
- "yaxes": [
- {
- "$$hashKey": "object:3538",
- "format": "short",
- "logBase": 1,
- "min": "0",
- "show": true
- },
- {
- "$$hashKey": "object:3539",
- "format": "short",
- "logBase": 1,
- "show": true
- }
- ],
- "yaxis": {
- "align": false
- }
- },
- {
- "aliasColors": {},
- "bars": false,
- "dashLength": 10,
- "dashes": false,
- "datasource": {
- "type": "prometheus",
- "uid": "$datasource"
- },
- "description": "The 99th percentile and average latency of mutation request for a specified collection over the last 2 minutes.",
- "fill": 1,
- "fillGradient": 0,
- "gridPos": {
- "h": 6,
- "w": 8,
- "x": 16,
- "y": 7
- },
- "hiddenSeries": false,
- "id": 123378,
- "legend": {
- "avg": false,
- "current": false,
- "max": false,
- "min": false,
- "show": true,
- "total": false,
- "values": false
- },
- "lines": true,
- "linewidth": 1,
- "nullPointMode": "null",
- "options": {
- "alertThreshold": true
- },
- "percentage": false,
- "pluginVersion": "8.3.3",
- "pointradius": 2,
- "points": false,
- "renderer": "flot",
- "seriesOverrides": [],
- "spaceLength": 10,
- "stack": false,
- "steppedLine": false,
- "targets": [
+ "description": "Rate limit request per second by status",
+ "fill": 1,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 8,
+ "w": 8,
+ "x": 8,
+ "y": 17
+ },
+ "hiddenSeries": false,
+ "id": 123447,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "10.2.0",
+ "pointradius": 2,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "editorMode": "code",
+ "exemplar": false,
+ "expr": "sum(rate(milvus_proxy_rate_limit_req_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\", status=\"fail\"}[1m])) by (msg_type)",
+ "format": "time_series",
+ "instant": false,
+ "interval": "",
+ "legendFormat": "{{msg_type}}",
+ "range": true,
+ "refId": "A"
+ }
+ ],
+ "thresholds": [],
+ "timeRegions": [],
+ "title": "RateLimit Requests",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "$$hashKey": "object:376",
+ "format": "short",
+ "logBase": 1,
+ "min": "0",
+ "show": true
+ },
+ {
+ "$$hashKey": "object:377",
+ "format": "short",
+ "logBase": 1,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false
+ }
+ },
{
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "exemplar": true,
- "expr": "histogram_quantile(0.99, sum by (le, msg_type, pod, node_id) (rate(milvus_proxy_collection_mutation_latency_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\", collection_name=~\"$collection\"}[2m])))",
- "interval": "",
- "legendFormat": "p99-{{pod}}-{{node_id}}-{{msg_type}}",
- "queryType": "randomWalk",
- "refId": "A"
+ "description": "the channel cp lag, unit seconds",
+ "fieldConfig": {
+ "defaults": {
+ "unit": "s"
+ },
+ "overrides": []
+ },
+ "fill": 1,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 8,
+ "w": 8,
+ "x": 16,
+ "y": 17
+ },
+ "hiddenSeries": false,
+ "id": 123434,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "10.2.0",
+ "pointradius": 2,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "editorMode": "code",
+ "exemplar": true,
+ "expr": "sum(timestamp(milvus_datacoord_channel_checkpoint_unix_seconds{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"})-milvus_datacoord_channel_checkpoint_unix_seconds{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (channel_name)",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "{{channel_name}}",
+ "queryType": "randomWalk",
+ "range": true,
+ "refId": "A"
+ }
+ ],
+ "thresholds": [],
+ "timeRegions": [],
+ "title": "Channel Checkpoint Lag",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "$$hashKey": "object:484",
+ "format": "s",
+ "logBase": 1,
+ "show": true
+ },
+ {
+ "$$hashKey": "object:485",
+ "format": "short",
+ "logBase": 1,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false
+ }
},
{
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "exemplar": true,
- "expr": "sum(increase(milvus_proxy_collection_mutation_latency_sum{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\", collection_name=~\"$collection\"}[2m])) by (pod, node_id, msg_type) / sum(increase(milvus_proxy_collection_mutation_latency_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\", collection_name=~\"$collection\"}[2m])) by (pod, node_id, msg_type)",
- "hide": false,
- "interval": "",
- "legendFormat": "avg-{{pod}}-{{node_id}}-{{msg_type}}",
- "refId": "B"
- }
- ],
- "thresholds": [],
- "timeRegions": [],
- "title": "Collection Mutation Latency",
- "tooltip": {
- "shared": true,
- "sort": 0,
- "value_type": "individual"
- },
- "type": "graph",
- "xaxis": {
- "mode": "time",
- "show": true,
- "values": []
- },
- "yaxes": [
- {
- "$$hashKey": "object:3538",
- "format": "short",
- "logBase": 1,
- "min": "0",
- "show": true
- },
- {
- "$$hashKey": "object:3539",
- "format": "short",
- "logBase": 1,
- "show": true
- }
- ],
- "yaxis": {
- "align": false
- }
- },
- {
- "aliasColors": {},
- "bars": false,
- "dashLength": 10,
- "dashes": false,
- "datasource": {
- "type": "prometheus",
- "uid": "$datasource"
- },
- "description": "The 99th percentile and average latency of wait search result over the last 2 minutes.",
- "fill": 1,
- "fillGradient": 0,
- "gridPos": {
- "h": 6,
- "w": 8,
- "x": 0,
- "y": 13
- },
- "hiddenSeries": false,
- "id": 123348,
- "legend": {
- "avg": false,
- "current": false,
- "max": false,
- "min": false,
- "show": true,
- "total": false,
- "values": false
- },
- "lines": true,
- "linewidth": 1,
- "nullPointMode": "null",
- "options": {
- "alertThreshold": true
- },
- "percentage": false,
- "pluginVersion": "8.3.3",
- "pointradius": 2,
- "points": false,
- "renderer": "flot",
- "seriesOverrides": [],
- "spaceLength": 10,
- "stack": false,
- "steppedLine": false,
- "targets": [
+ "description": "The max time tick delay of flow graphs. unit ms",
+ "fieldConfig": {
+ "defaults": {
+ "unit": "ms"
+ },
+ "overrides": []
+ },
+ "fill": 1,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 8,
+ "w": 8,
+ "x": 0,
+ "y": 25
+ },
+ "hiddenSeries": false,
+ "id": 123407,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "10.2.0",
+ "pointradius": 2,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "exemplar": true,
+ "expr": "sum(milvus_rootcoord_time_tick_delay{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (role_name, node_id)",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "{{role_name}}-{{node_id}}",
+ "queryType": "randomWalk",
+ "refId": "A"
+ }
+ ],
+ "thresholds": [],
+ "timeRegions": [],
+ "title": "Time Tick Delay",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "$$hashKey": "object:484",
+ "format": "ms",
+ "logBase": 1,
+ "show": true
+ },
+ {
+ "$$hashKey": "object:485",
+ "format": "short",
+ "logBase": 1,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false
+ }
+ },
{
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "exemplar": true,
- "expr": "histogram_quantile(0.99, sum by (le, query_type, pod, node_id) (rate(milvus_proxy_sq_wait_result_latency_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])))",
- "hide": false,
- "interval": "",
- "legendFormat": "p99-{{pod}}-{{node_id}}-{{query_type}}",
- "refId": "A"
+ "description": "",
+ "fieldConfig": {
+ "defaults": {
+ "unit": "decmbytes"
+ },
+ "overrides": []
+ },
+ "fill": 1,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 8,
+ "w": 8,
+ "x": 8,
+ "y": 25
+ },
+ "hiddenSeries": false,
+ "id": 123412,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "10.2.0",
+ "pointradius": 2,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "editorMode": "code",
+ "exemplar": true,
+ "expr": "sum(milvus_querynode_disk_used_size{namespace=\"$namespace\",pod=~\"$instance-milvus.*\"} ) by(pod) ",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "{{pod}}",
+ "queryType": "randomWalk",
+ "range": true,
+ "refId": "A"
+ }
+ ],
+ "thresholds": [],
+ "timeRegions": [],
+ "title": "Disk Usage",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "$$hashKey": "object:484",
+ "format": "decmbytes",
+ "logBase": 1,
+ "show": true
+ },
+ {
+ "$$hashKey": "object:485",
+ "format": "short",
+ "logBase": 1,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false
+ }
},
{
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "exemplar": true,
- "expr": "sum(increase(milvus_proxy_sq_wait_result_latency_sum{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by (pod, node_id, query_type) / sum(increase(milvus_proxy_sq_wait_result_latency_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by (pod, node_id, query_type)",
- "hide": false,
- "interval": "",
- "legendFormat": "avg-{{pod}}-{{node_id}}-{{query_type}}",
- "refId": "B"
- }
- ],
- "thresholds": [],
- "timeRegions": [],
- "title": "Wait Search Result Latency",
- "tooltip": {
- "shared": true,
- "sort": 0,
- "value_type": "individual"
- },
- "type": "graph",
- "xaxis": {
- "mode": "time",
- "show": true,
- "values": []
- },
- "yaxes": [
- {
- "$$hashKey": "object:3538",
- "format": "short",
- "logBase": 1,
- "min": "0",
- "show": true
- },
- {
- "$$hashKey": "object:3539",
- "format": "short",
- "logBase": 1,
- "show": true
- }
- ],
- "yaxis": {
- "align": false
- }
- },
- {
- "aliasColors": {},
- "bars": false,
- "dashLength": 10,
- "dashes": false,
- "datasource": {
- "type": "prometheus",
- "uid": "$datasource"
- },
- "description": "The 99th percentile and average latency of reduce search result over the last 2 minutes.",
- "fill": 1,
- "fillGradient": 0,
- "gridPos": {
- "h": 6,
- "w": 8,
- "x": 8,
- "y": 13
- },
- "hiddenSeries": false,
- "id": 123316,
- "legend": {
- "avg": false,
- "current": false,
- "max": false,
- "min": false,
- "show": true,
- "total": false,
- "values": false
- },
- "lines": true,
- "linewidth": 1,
- "nullPointMode": "null",
- "options": {
- "alertThreshold": true
- },
- "percentage": false,
- "pluginVersion": "8.3.3",
- "pointradius": 2,
- "points": false,
- "renderer": "flot",
- "seriesOverrides": [],
- "spaceLength": 10,
- "stack": false,
- "steppedLine": false,
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "$datasource"
+ "description": "",
+ "fieldConfig": {
+ "defaults": {
+ "unit": "percentunit"
+ },
+ "overrides": []
},
- "exemplar": true,
- "expr": "histogram_quantile(0.99, sum by (le, query_type, pod, node_id) (rate(milvus_proxy_sq_reduce_result_latency_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])))",
- "interval": "",
- "legendFormat": "p99-{{pod}}-{{node_id}}-{{query_type}}",
- "queryType": "randomWalk",
- "refId": "A"
+ "fill": 1,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 8,
+ "w": 8,
+ "x": 16,
+ "y": 25
+ },
+ "hiddenSeries": false,
+ "id": 123408,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "10.2.0",
+ "pointradius": 2,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "editorMode": "code",
+ "exemplar": true,
+ "expr": "sum(process_resident_memory_bytes{namespace=\"$namespace\",pod=~\"$instance-milvus.*\"} ) by(pod) / sum(container_spec_memory_limit_bytes{namespace=\"$namespace\",pod=~\"$instance-milvus.*\",image!=\"\",container!=\"\"} ) by(pod)",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "{{pod}}",
+ "queryType": "randomWalk",
+ "range": true,
+ "refId": "A"
+ }
+ ],
+ "thresholds": [],
+ "timeRegions": [],
+ "title": "Memory Usage Ratio",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "$$hashKey": "object:484",
+ "format": "percentunit",
+ "logBase": 1,
+ "show": true
+ },
+ {
+ "$$hashKey": "object:485",
+ "format": "short",
+ "logBase": 1,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false
+ }
},
{
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "exemplar": true,
- "expr": "sum(increase(milvus_proxy_sq_reduce_result_latency_sum{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by (pod, node_id, query_type) / sum(increase(milvus_proxy_sq_reduce_result_latency_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by (pod, node_id, query_type)",
- "hide": false,
- "interval": "",
- "legendFormat": "avg-{{pod}}-{{node_id}}-{{query_type}}",
- "refId": "B"
- }
- ],
- "thresholds": [],
- "timeRegions": [],
- "title": "Reduce Search Result Latency",
- "tooltip": {
- "shared": true,
- "sort": 0,
- "value_type": "individual"
- },
- "type": "graph",
- "xaxis": {
- "mode": "time",
- "show": true,
- "values": []
- },
- "yaxes": [
- {
- "$$hashKey": "object:3538",
- "format": "short",
- "logBase": 1,
- "min": "0",
- "show": true
+ "description": "",
+ "fill": 1,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 8,
+ "w": 8,
+ "x": 0,
+ "y": 33
+ },
+ "hiddenSeries": false,
+ "id": 123409,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "10.2.0",
+ "pointradius": 2,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "editorMode": "code",
+ "exemplar": true,
+ "expr": "sum(rate(container_cpu_usage_seconds_total{namespace=\"$namespace\",pod=~\"$instance-milvus.*\",image!=\"\",container!=\"\"}[2m])) by (pod, namespace) / (sum(container_spec_cpu_quota{namespace=\"$namespace\",pod=~\"$instance-milvus.*\",image!=\"\",container!=\"\"}/100000) by (pod, namespace)) ",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "{{pod}}",
+ "queryType": "randomWalk",
+ "range": true,
+ "refId": "A"
+ }
+ ],
+ "thresholds": [],
+ "timeRegions": [],
+ "title": "CPU Usage Ratio",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "$$hashKey": "object:484",
+ "format": "percentunit",
+ "logBase": 1,
+ "show": true
+ },
+ {
+ "$$hashKey": "object:485",
+ "format": "short",
+ "logBase": 1,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false
+ }
},
{
- "$$hashKey": "object:3539",
- "format": "short",
- "logBase": 1,
- "show": true
- }
- ],
- "yaxis": {
- "align": false
- }
- },
- {
- "aliasColors": {},
- "bars": false,
- "dashLength": 10,
- "dashes": false,
- "datasource": {
- "type": "prometheus",
- "uid": "$datasource"
- },
- "description": "The 99th percentile and average latency of decode search result over the last 2 minutes.",
- "fill": 1,
- "fillGradient": 0,
- "gridPos": {
- "h": 6,
- "w": 8,
- "x": 16,
- "y": 13
- },
- "hiddenSeries": false,
- "id": 123317,
- "legend": {
- "avg": false,
- "current": false,
- "max": false,
- "min": false,
- "show": true,
- "total": false,
- "values": false
- },
- "lines": true,
- "linewidth": 1,
- "nullPointMode": "null",
- "options": {
- "alertThreshold": true
- },
- "percentage": false,
- "pluginVersion": "8.3.3",
- "pointradius": 2,
- "points": false,
- "renderer": "flot",
- "seriesOverrides": [],
- "spaceLength": 10,
- "stack": false,
- "steppedLine": false,
- "targets": [
- {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "exemplar": true,
- "expr": "histogram_quantile(0.99, sum by (le, query_type, pod, node_id) (rate(milvus_proxy_sq_decode_result_latency_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])))",
- "hide": false,
- "interval": "",
- "legendFormat": "p99-{{pod}}-{{node_id}}-{{query_type}}",
- "queryType": "randomWalk",
- "refId": "A"
+ "description": "The 99th percentile and average latency of search request over the last 2 minutes.",
+ "fill": 1,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 8,
+ "w": 8,
+ "x": 8,
+ "y": 33
+ },
+ "hiddenSeries": false,
+ "id": 123468,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "10.2.0",
+ "pointradius": 2,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "editorMode": "code",
+ "exemplar": true,
+ "expr": "sum(increase(milvus_proxy_restful_req_latency_sum{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[$__rate_interval])) by (phase) / sum(increase(milvus_proxy_restful_req_latency_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[$__rate_interval])) by (phase)",
+ "hide": false,
+ "interval": "",
+ "legendFormat": "avg-{{phase}}",
+ "range": true,
+ "refId": "B"
+ }
+ ],
+ "thresholds": [],
+ "timeRegions": [],
+ "title": "Restful Search Latency Avg",
+ "tooltip": {
+ "shared": true,
+ "sort": 1,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "$$hashKey": "object:3538",
+ "format": "ms",
+ "logBase": 1,
+ "min": "0",
+ "show": true
+ },
+ {
+ "$$hashKey": "object:3539",
+ "format": "short",
+ "logBase": 1,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false
+ }
},
{
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "exemplar": true,
- "expr": "sum(increase(milvus_proxy_sq_decode_result_latency_sum{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by (pod, node_id, query_type) / sum(increase(milvus_proxy_sq_decode_resultlatency_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by (pod, node_id, query_type)",
- "hide": false,
- "interval": "",
- "legendFormat": "avg-{{pod}}-{{node_id}}-{{query_type}}",
- "refId": "B"
- }
- ],
- "thresholds": [],
- "timeRegions": [],
- "title": "Decode Search Result Latency",
- "tooltip": {
- "shared": true,
- "sort": 0,
- "value_type": "individual"
- },
- "type": "graph",
- "xaxis": {
- "mode": "time",
- "show": true,
- "values": []
- },
- "yaxes": [
- {
- "$$hashKey": "object:3538",
- "format": "short",
- "logBase": 1,
- "min": "0",
- "show": true
- },
- {
- "$$hashKey": "object:3539",
- "format": "short",
- "logBase": 1,
- "show": true
+ "description": "The 99th percentile and average latency of search request over the last 2 minutes.",
+ "fill": 1,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 8,
+ "w": 8,
+ "x": 16,
+ "y": 33
+ },
+ "hiddenSeries": false,
+ "id": 123469,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "10.2.0",
+ "pointradius": 2,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": true,
+ "steppedLine": false,
+ "targets": [
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "editorMode": "code",
+ "exemplar": true,
+ "expr": "histogram_quantile(0.99, sum by (le, phase) (rate(milvus_proxy_restful_req_latency_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[$__rate_interval])))",
+ "hide": false,
+ "interval": "",
+ "legendFormat": "p99-{{phase}}",
+ "range": true,
+ "refId": "B"
+ }
+ ],
+ "thresholds": [],
+ "timeRegions": [],
+ "title": "Restful Search Latency P99",
+ "tooltip": {
+ "shared": true,
+ "sort": 1,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "$$hashKey": "object:3538",
+ "format": "ms",
+ "logBase": 1,
+ "min": "0",
+ "show": true
+ },
+ {
+ "$$hashKey": "object:3539",
+ "format": "short",
+ "logBase": 1,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false
+ }
}
],
- "yaxis": {
- "align": false
- }
+ "title": "Service Quality",
+ "type": "row"
},
{
- "aliasColors": {},
- "bars": false,
- "dashLength": 10,
- "dashes": false,
- "datasource": {
- "type": "prometheus",
- "uid": "$datasource"
- },
- "description": "Average, maximum and minimum values of the number of msgstream objects created on all physical topics.",
- "fill": 1,
- "fillGradient": 0,
+ "collapsed": true,
"gridPos": {
- "h": 6,
- "w": 8,
+ "h": 1,
+ "w": 24,
"x": 0,
- "y": 19
- },
- "hiddenSeries": false,
- "id": 123319,
- "legend": {
- "avg": false,
- "current": false,
- "max": false,
- "min": false,
- "show": true,
- "total": false,
- "values": false
- },
- "lines": true,
- "linewidth": 1,
- "nullPointMode": "null",
- "options": {
- "alertThreshold": true
+ "y": 1
},
- "percentage": false,
- "pluginVersion": "8.3.3",
- "pointradius": 2,
- "points": false,
- "renderer": "flot",
- "seriesOverrides": [],
- "spaceLength": 10,
- "stack": false,
- "steppedLine": false,
- "targets": [
+ "id": 123455,
+ "panels": [
{
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "exemplar": true,
- "expr": "avg(milvus_proxy_msgstream_obj_num{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (pod, node_id)",
- "interval": "",
- "intervalFactor": 2,
- "legendFormat": "{{pod}}-{{node_id}}-avg",
- "queryType": "randomWalk",
- "refId": "A"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "$datasource"
+ "description": "The 99th percentile of latency for meta operations",
+ "fill": 1,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 8,
+ "w": 8,
+ "x": 0,
+ "y": 2
},
- "exemplar": true,
- "expr": "max(milvus_proxy_msgstream_obj_num{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (pod, node_id)",
- "hide": false,
- "interval": "",
- "legendFormat": "{{pod}}-{{node_id}}-max",
- "refId": "B"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "$datasource"
+ "hiddenSeries": false,
+ "id": 123453,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
},
- "exemplar": true,
- "expr": "min(milvus_proxy_msgstream_obj_num{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (pod, node_id)",
- "hide": false,
- "interval": "",
- "legendFormat": "{{pod}}-{{node_id}}-min",
- "refId": "C"
- }
- ],
- "thresholds": [],
- "timeRegions": [],
- "title": "Msg Stream Object Num",
- "tooltip": {
- "shared": true,
- "sort": 0,
- "value_type": "individual"
- },
- "type": "graph",
- "xaxis": {
- "mode": "time",
- "show": true,
- "values": []
- },
- "yaxes": [
- {
- "$$hashKey": "object:536",
- "format": "short",
- "logBase": 1,
- "min": "0",
- "show": true
+ "lines": true,
+ "linewidth": 1,
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "10.2.0",
+ "pointradius": 2,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "Prometheus"
+ },
+ "editorMode": "code",
+ "exemplar": true,
+ "expr": "histogram_quantile(0.99, sum by (le, meta_op_type) (rate(milvus_meta_request_latency_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])))",
+ "interval": "",
+ "legendFormat": "{{meta_op_type}}",
+ "queryType": "randomWalk",
+ "range": true,
+ "refId": "A"
+ }
+ ],
+ "thresholds": [],
+ "timeRegions": [],
+ "title": "Meta Operate Latency",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "$$hashKey": "object:161",
+ "format": "ms",
+ "logBase": 1,
+ "min": "0",
+ "show": true
+ },
+ {
+ "$$hashKey": "object:162",
+ "format": "short",
+ "logBase": 1,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false
+ }
},
{
- "$$hashKey": "object:537",
- "format": "short",
- "logBase": 1,
- "show": true
- }
- ],
- "yaxis": {
- "align": false
- }
- },
- {
- "aliasColors": {},
- "bars": false,
- "dashLength": 10,
- "dashes": false,
- "datasource": {
- "type": "prometheus",
- "uid": "$datasource"
- },
- "description": "The 99th percentile and average latency of send mutation over the last 2 minutes.",
- "fill": 1,
- "fillGradient": 0,
- "gridPos": {
- "h": 6,
- "w": 8,
- "x": 8,
- "y": 19
- },
- "hiddenSeries": false,
- "id": 123321,
- "legend": {
- "avg": false,
- "current": false,
- "max": false,
- "min": false,
- "show": true,
- "total": false,
- "values": false
- },
- "lines": true,
- "linewidth": 1,
- "nullPointMode": "null",
- "options": {
- "alertThreshold": true
- },
- "percentage": false,
- "pluginVersion": "8.3.3",
- "pointradius": 2,
- "points": false,
- "renderer": "flot",
- "seriesOverrides": [],
- "spaceLength": 10,
- "stack": false,
- "steppedLine": false,
- "targets": [
- {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "exemplar": true,
- "expr": "histogram_quantile(0.99, sum by (le, msg_type, pod, node_id) (rate(milvus_proxy_mutation_send_latency_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])))",
- "interval": "",
- "legendFormat": "p99-{{msg_type}}-{{pod}}-{{node_id}}",
- "queryType": "randomWalk",
- "refId": "A"
+ "description": "The 99th percentile of latency for storage operations",
+ "fill": 1,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 8,
+ "w": 8,
+ "x": 8,
+ "y": 2
+ },
+ "hiddenSeries": false,
+ "id": 123456,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "10.2.0",
+ "pointradius": 2,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "Prometheus"
+ },
+ "editorMode": "code",
+ "exemplar": true,
+ "expr": "histogram_quantile(0.99, sum by (le, persistent_data_op_type) (rate(milvus_storage_request_latency_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])))",
+ "interval": "",
+ "legendFormat": "{{persistent_data_op_type}}",
+ "queryType": "randomWalk",
+ "range": true,
+ "refId": "A"
+ }
+ ],
+ "thresholds": [],
+ "timeRegions": [],
+ "title": "Storage Operate Latency",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "$$hashKey": "object:161",
+ "format": "ms",
+ "logBase": 1,
+ "min": "0",
+ "show": true
+ },
+ {
+ "$$hashKey": "object:162",
+ "format": "short",
+ "logBase": 1,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false
+ }
},
{
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "exemplar": true,
- "expr": "sum(increase(milvus_proxy_mutation_latency_sum{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by (pod, node_id, msg_type) / sum(increase(milvus_proxy_mutation_latency_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by (pod, node_id, msg_type)",
- "hide": false,
- "interval": "",
- "legendFormat": "avg-{{msg_type}}-{{pod}}-{{node_id}}",
- "refId": "B"
- }
- ],
- "thresholds": [],
- "timeRegions": [],
- "title": "Mutation Send Latency",
- "tooltip": {
- "shared": true,
- "sort": 0,
- "value_type": "individual"
- },
- "type": "graph",
- "xaxis": {
- "mode": "time",
- "show": true,
- "values": []
- },
- "yaxes": [
- {
- "$$hashKey": "object:3538",
- "format": "short",
- "logBase": 1,
- "min": "0",
- "show": true
- },
- {
- "$$hashKey": "object:3539",
- "format": "short",
- "logBase": 1,
- "show": true
- }
- ],
- "yaxis": {
- "align": false
- }
- },
- {
- "aliasColors": {},
- "bars": false,
- "dashLength": 10,
- "dashes": false,
- "datasource": {
- "type": "prometheus",
- "uid": "$datasource"
- },
- "description": "Average cache hits per minute of cache operations.",
- "fill": 1,
- "fillGradient": 0,
- "gridPos": {
- "h": 6,
- "w": 8,
- "x": 16,
- "y": 19
- },
- "hiddenSeries": false,
- "id": 123322,
- "legend": {
- "avg": false,
- "current": false,
- "max": false,
- "min": false,
- "show": true,
- "total": false,
- "values": false
- },
- "lines": true,
- "linewidth": 1,
- "nullPointMode": "null",
- "options": {
- "alertThreshold": true
- },
- "percentage": false,
- "pluginVersion": "8.3.3",
- "pointradius": 2,
- "points": false,
- "renderer": "flot",
- "seriesOverrides": [],
- "spaceLength": 10,
- "stack": false,
- "steppedLine": false,
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "$datasource"
+ "description": "The 99th percentile of latency for storage operations",
+ "fill": 1,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 8,
+ "w": 8,
+ "x": 16,
+ "y": 2
},
- "exemplar": true,
- "expr": "sum(increase(milvus_proxy_cache_hit_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\", cache_state=\"hit\"}[2m])/120) by(cache_name, pod, node_id) / sum(increase(milvus_proxy_cache_hit_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])/120) by(cache_name, pod, node_id)",
- "interval": "",
- "legendFormat": "{{pod}}-{{node_id}}-{{cache_name}}",
- "queryType": "randomWalk",
- "refId": "A"
- }
- ],
- "thresholds": [],
- "timeRegions": [],
- "title": "Cache Hit rate",
- "tooltip": {
- "shared": true,
- "sort": 0,
- "value_type": "individual"
- },
- "type": "graph",
- "xaxis": {
- "mode": "time",
- "show": true,
- "values": []
- },
- "yaxes": [
- {
- "$$hashKey": "object:3414",
- "format": "short",
- "logBase": 1,
- "max": "1",
- "min": "0",
- "show": true
- },
- {
- "$$hashKey": "object:3415",
- "format": "short",
- "logBase": 1,
- "show": true
- }
- ],
- "yaxis": {
- "align": false
- }
- },
- {
- "aliasColors": {},
- "bars": false,
- "dashLength": 10,
- "dashes": false,
- "datasource": {
- "type": "prometheus",
- "uid": "$datasource"
- },
- "description": "The 99th percentile and average latency of update cache over the last 2 minutes.",
- "fill": 1,
- "fillGradient": 0,
- "gridPos": {
- "h": 6,
- "w": 8,
- "x": 0,
- "y": 25
- },
- "hiddenSeries": false,
- "id": 123323,
- "legend": {
- "avg": false,
- "current": false,
- "max": false,
- "min": false,
- "show": true,
- "total": false,
- "values": false
- },
- "lines": true,
- "linewidth": 1,
- "nullPointMode": "null",
- "options": {
- "alertThreshold": true
- },
- "percentage": false,
- "pluginVersion": "8.3.3",
- "pointradius": 2,
- "points": false,
- "renderer": "flot",
- "seriesOverrides": [],
- "spaceLength": 10,
- "stack": false,
- "steppedLine": false,
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "$datasource"
+ "hiddenSeries": false,
+ "id": 123457,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
},
- "exemplar": true,
- "expr": "histogram_quantile(0.99, sum by (le, pod, node_id) (rate(milvus_proxy_cache_update_latency_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])))",
- "interval": "",
- "legendFormat": "p99-{{pod}}-{{node_id}}",
- "queryType": "randomWalk",
- "refId": "A"
+ "lines": true,
+ "linewidth": 1,
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "10.2.0",
+ "pointradius": 2,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "Prometheus"
+ },
+ "editorMode": "code",
+ "exemplar": true,
+ "expr": "histogram_quantile(0.99, sum by (le, message_op_type) (rate(milvus_msgstream_request_latency_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])))",
+ "interval": "",
+ "legendFormat": "{{message_op_type}}",
+ "queryType": "randomWalk",
+ "range": true,
+ "refId": "A"
+ }
+ ],
+ "thresholds": [],
+ "timeRegions": [],
+ "title": "Message Operate Latency",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "$$hashKey": "object:161",
+ "format": "ms",
+ "logBase": 1,
+ "min": "0",
+ "show": true
+ },
+ {
+ "$$hashKey": "object:162",
+ "format": "short",
+ "logBase": 1,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false
+ }
},
{
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "exemplar": true,
- "expr": "sum(increase(milvus_proxy_cache_update_latency_sum{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by (pod, node_id) / sum(increase(milvus_proxy_cache_update_latency_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by (pod, node_id)",
- "hide": false,
- "interval": "",
- "legendFormat": "avg-{{pod}}-{{node_id}}",
- "refId": "B"
- }
- ],
- "thresholds": [],
- "timeRegions": [],
- "title": "Cache Update Latency",
- "tooltip": {
- "shared": true,
- "sort": 0,
- "value_type": "individual"
- },
- "type": "graph",
- "xaxis": {
- "mode": "time",
- "show": true,
- "values": []
- },
- "yaxes": [
- {
- "$$hashKey": "object:3538",
- "format": "short",
- "logBase": 1,
- "min": "0",
- "show": true
- },
- {
- "$$hashKey": "object:3539",
- "format": "short",
- "logBase": 1,
- "show": true
- }
- ],
- "yaxis": {
- "align": false
- }
- },
- {
- "aliasColors": {},
- "bars": false,
- "dashLength": 10,
- "dashes": false,
- "datasource": {
- "type": "prometheus",
- "uid": "P1809F7CD0C75ACF3"
- },
- "description": "Average, maximum and minimum values of the timestamps for time tick behind.",
- "fill": 1,
- "fillGradient": 0,
- "gridPos": {
- "h": 6,
- "w": 8,
- "x": 8,
- "y": 25
- },
- "hiddenSeries": false,
- "id": 123325,
- "legend": {
- "avg": false,
- "current": false,
- "max": false,
- "min": false,
- "show": true,
- "total": false,
- "values": false
- },
- "lines": true,
- "linewidth": 1,
- "nullPointMode": "null",
- "options": {
- "alertThreshold": true
- },
- "percentage": false,
- "pluginVersion": "8.3.3",
- "pointradius": 2,
- "points": false,
- "renderer": "flot",
- "seriesOverrides": [],
- "spaceLength": 10,
- "stack": false,
- "steppedLine": false,
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "$datasource"
+ "description": "Meta request rate",
+ "fill": 1,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 8,
+ "w": 8,
+ "x": 0,
+ "y": 10
},
- "exemplar": true,
- "expr": "avg(milvus_proxy_tt_lag_ms{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (pod, node_id)",
- "hide": false,
- "interval": "",
- "intervalFactor": 2,
- "legendFormat": "{{pod}}-{{node_id}}-avg",
- "queryType": "randomWalk",
- "refId": "A"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "$datasource"
+ "hiddenSeries": false,
+ "id": 123458,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
},
- "exemplar": true,
- "expr": "max(milvus_proxy_tt_lag_ms{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (pod, node_id)",
- "hide": false,
- "interval": "",
- "legendFormat": "{{pod}}-{{node_id}}-max",
- "refId": "B"
+ "lines": true,
+ "linewidth": 1,
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "10.2.0",
+ "pointradius": 2,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "Prometheus"
+ },
+ "editorMode": "code",
+ "exemplar": true,
+ "expr": "sum(rate(milvus_meta_op_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[1m])) by (meta_op_type, status)",
+ "interval": "",
+ "legendFormat": "{{meta_op_type}}-{{status}}",
+ "queryType": "randomWalk",
+ "range": true,
+ "refId": "A"
+ }
+ ],
+ "thresholds": [],
+ "timeRegions": [],
+ "title": "Meta Request Rate",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "$$hashKey": "object:161",
+ "format": "short",
+ "logBase": 1,
+ "min": "0",
+ "show": true
+ },
+ {
+ "$$hashKey": "object:162",
+ "format": "short",
+ "logBase": 1,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false
+ }
},
{
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "exemplar": true,
- "expr": "min(milvus_proxy_tt_lag_ms{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (pod, node_id)",
- "hide": false,
- "interval": "",
- "legendFormat": "{{pod}}-{{node_id}}-min",
- "refId": "C"
+ "description": "Storage request rate",
+ "fill": 1,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 8,
+ "w": 8,
+ "x": 8,
+ "y": 10
+ },
+ "hiddenSeries": false,
+ "id": 123459,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "10.2.0",
+ "pointradius": 2,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "Prometheus"
+ },
+ "editorMode": "code",
+ "exemplar": true,
+ "expr": "sum(rate(milvus_storage_op_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[1m])) by (persistent_data_op_type, status)",
+ "interval": "",
+ "legendFormat": "{{persistent_data_op_type}}-{{status}}",
+ "queryType": "randomWalk",
+ "range": true,
+ "refId": "A"
+ }
+ ],
+ "thresholds": [],
+ "timeRegions": [],
+ "title": "Storage Request Rate",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "$$hashKey": "object:161",
+ "format": "short",
+ "logBase": 1,
+ "min": "0",
+ "show": true
+ },
+ {
+ "$$hashKey": "object:162",
+ "format": "short",
+ "logBase": 1,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false
+ }
},
{
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "P1809F7CD0C75ACF3"
+ "uid": "${datasource}"
},
- "exemplar": true,
- "expr": "",
- "hide": false,
- "interval": "",
- "legendFormat": "",
- "refId": "D"
- }
- ],
- "thresholds": [],
- "timeRegions": [],
- "title": "Produced Timetick Lag Behind Now",
- "tooltip": {
- "shared": true,
- "sort": 0,
- "value_type": "individual"
- },
- "type": "graph",
- "xaxis": {
- "mode": "time",
- "show": true,
- "values": []
- },
- "yaxes": [
- {
- "$$hashKey": "object:536",
- "decimals": 0,
- "format": "ms",
- "logBase": 1,
- "show": true
+ "description": "Message request rate",
+ "fill": 1,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 8,
+ "w": 8,
+ "x": 16,
+ "y": 10
+ },
+ "hiddenSeries": false,
+ "id": 123460,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "10.2.0",
+ "pointradius": 2,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "Prometheus"
+ },
+ "editorMode": "code",
+ "exemplar": true,
+ "expr": "sum(rate(milvus_msgstream_op_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[1m])) by (message_op_type, status)",
+ "interval": "",
+ "legendFormat": "{{message_op_type}}-{{status}}",
+ "queryType": "randomWalk",
+ "range": true,
+ "refId": "A"
+ }
+ ],
+ "thresholds": [],
+ "timeRegions": [],
+ "title": "Message Request Rate",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "$$hashKey": "object:161",
+ "format": "short",
+ "logBase": 1,
+ "min": "0",
+ "show": true
+ },
+ {
+ "$$hashKey": "object:162",
+ "format": "short",
+ "logBase": 1,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false
+ }
},
{
- "$$hashKey": "object:537",
- "format": "short",
- "logBase": 1,
- "show": true
- }
- ],
- "yaxis": {
- "align": false
- }
- },
- {
- "aliasColors": {},
- "bars": false,
- "dashLength": 10,
- "dashes": false,
- "datasource": {
- "type": "prometheus",
- "uid": "$datasource"
- },
- "description": "The 99th percentile of latency for applying PK over the last 2 minutes.",
- "fill": 1,
- "fillGradient": 0,
- "gridPos": {
- "h": 6,
- "w": 8,
- "x": 16,
- "y": 25
- },
- "hiddenSeries": false,
- "id": 123326,
- "legend": {
- "avg": false,
- "current": false,
- "max": false,
- "min": false,
- "show": true,
- "total": false,
- "values": false
- },
- "lines": true,
- "linewidth": 1,
- "nullPointMode": "null",
- "options": {
- "alertThreshold": true
- },
- "percentage": false,
- "pluginVersion": "8.3.3",
- "pointradius": 2,
- "points": false,
- "renderer": "flot",
- "seriesOverrides": [],
- "spaceLength": 10,
- "stack": false,
- "steppedLine": false,
- "targets": [
- {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "exemplar": true,
- "expr": "histogram_quantile(0.99, sum by (le, pod, node_id) (rate(milvus_proxy_apply_pk_latency_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])))",
- "interval": "",
- "legendFormat": "p99-{{pod}}-{{node_id}}",
- "queryType": "randomWalk",
- "refId": "A"
+ "description": "Meta operation throughput",
+ "fill": 1,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 8,
+ "w": 8,
+ "x": 0,
+ "y": 18
+ },
+ "hiddenSeries": false,
+ "id": 123461,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "10.2.0",
+ "pointradius": 2,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "Prometheus"
+ },
+ "editorMode": "code",
+ "exemplar": true,
+ "expr": "sum(rate(milvus_meta_kv_size_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[1m])) by (meta_op_type)",
+ "interval": "",
+ "legendFormat": "{{meta_op_type}}",
+ "queryType": "randomWalk",
+ "range": true,
+ "refId": "A"
+ }
+ ],
+ "thresholds": [],
+ "timeRegions": [],
+ "title": "Meta Operation Throughput",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "$$hashKey": "object:161",
+ "format": "Bps",
+ "logBase": 1,
+ "min": "0",
+ "show": true
+ },
+ {
+ "$$hashKey": "object:162",
+ "format": "short",
+ "logBase": 1,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false
+ }
},
{
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "exemplar": true,
- "expr": "sum(increase(milvus_proxy_apply_pk_latency_sum{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by (pod, node_id) / sum(increase(milvus_proxy_apply_pk_latency_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by (pod, node_id)",
- "hide": false,
- "interval": "",
- "legendFormat": "avg-{{pod}}-{{node_id}}",
- "refId": "B"
- }
- ],
- "thresholds": [],
- "timeRegions": [],
- "title": "Apply PK Latency",
- "tooltip": {
- "shared": true,
- "sort": 0,
- "value_type": "individual"
- },
- "type": "graph",
- "xaxis": {
- "mode": "time",
- "show": true,
- "values": []
- },
- "yaxes": [
- {
- "$$hashKey": "object:3538",
- "format": "short",
- "logBase": 1,
- "min": "0",
- "show": true
- },
- {
- "$$hashKey": "object:3539",
- "format": "short",
- "logBase": 1,
- "show": true
- }
- ],
- "yaxis": {
- "align": false
- }
- },
- {
- "aliasColors": {},
- "bars": false,
- "dashLength": 10,
- "dashes": false,
- "datasource": {
- "type": "prometheus",
- "uid": "$datasource"
- },
- "description": "The 99th percentile and average latency of apply timestamp over the last 2 minutes.",
- "fill": 1,
- "fillGradient": 0,
- "gridPos": {
- "h": 6,
- "w": 8,
- "x": 0,
- "y": 31
- },
- "hiddenSeries": false,
- "id": 123327,
- "legend": {
- "avg": false,
- "current": false,
- "max": false,
- "min": false,
- "show": true,
- "total": false,
- "values": false
- },
- "lines": true,
- "linewidth": 1,
- "nullPointMode": "null",
- "options": {
- "alertThreshold": true
- },
- "percentage": false,
- "pluginVersion": "8.3.3",
- "pointradius": 2,
- "points": false,
- "renderer": "flot",
- "seriesOverrides": [],
- "spaceLength": 10,
- "stack": false,
- "steppedLine": false,
- "targets": [
+ "description": "Storage operation throughput",
+ "fill": 1,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 8,
+ "w": 8,
+ "x": 8,
+ "y": 18
+ },
+ "hiddenSeries": false,
+ "id": 123462,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "10.2.0",
+ "pointradius": 2,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "Prometheus"
+ },
+ "editorMode": "code",
+ "exemplar": true,
+ "expr": "sum(rate(milvus_storage_kv_size_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[1m])) by (persistent_data_op_type)",
+ "interval": "",
+ "legendFormat": "{{persistent_data_op_type}}",
+ "queryType": "randomWalk",
+ "range": true,
+ "refId": "A"
+ }
+ ],
+ "thresholds": [],
+ "timeRegions": [],
+ "title": "Storage Operation Throughput",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "$$hashKey": "object:161",
+ "format": "Bps",
+ "logBase": 1,
+ "min": "0",
+ "show": true
+ },
+ {
+ "$$hashKey": "object:162",
+ "format": "short",
+ "logBase": 1,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false
+ }
+ },
{
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "exemplar": true,
- "expr": "histogram_quantile(0.99, sum by (le, pod, node_id) (rate(milvus_proxy_apply_timestamp_latency_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])))",
- "interval": "",
- "legendFormat": "p99-{{pod}}-{{node_id}}",
- "queryType": "randomWalk",
- "refId": "A"
+ "description": "The 99th percentile of latency for storage operations",
+ "fill": 1,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 8,
+ "w": 8,
+ "x": 16,
+ "y": 18
+ },
+ "hiddenSeries": false,
+ "id": 123463,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "10.2.0",
+ "pointradius": 2,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "Prometheus"
+ },
+ "editorMode": "code",
+ "exemplar": true,
+ "expr": "histogram_quantile(0.99, sum by (le, persistent_data_op_type) (rate(internal_storage_request_latency_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])))",
+ "interval": "",
+ "legendFormat": "{{persistent_data_op_type}}",
+ "queryType": "randomWalk",
+ "range": true,
+ "refId": "A"
+ }
+ ],
+ "thresholds": [],
+ "timeRegions": [],
+ "title": "Storage Operate Latency[cpp]",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "$$hashKey": "object:161",
+ "format": "ms",
+ "logBase": 1,
+ "min": "0",
+ "show": true
+ },
+ {
+ "$$hashKey": "object:162",
+ "format": "short",
+ "logBase": 1,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false
+ }
},
{
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "exemplar": true,
- "expr": "sum(increase(milvus_proxy_apply_timestamp_latency_sum{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by (pod, node_id) / sum(increase(milvus_proxy_apply_timestamp_latency_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by (pod, node_id)",
- "hide": false,
- "interval": "",
- "legendFormat": "avg-{{pod}}-{{node_id}}",
- "refId": "B"
- }
- ],
- "thresholds": [],
- "timeRegions": [],
- "title": "Apply Timestamp Latency",
- "tooltip": {
- "shared": true,
- "sort": 0,
- "value_type": "individual"
- },
- "type": "graph",
- "xaxis": {
- "mode": "time",
- "show": true,
- "values": []
- },
- "yaxes": [
- {
- "$$hashKey": "object:3538",
- "format": "short",
- "logBase": 1,
- "min": "0",
- "show": true
- },
- {
- "$$hashKey": "object:3539",
- "format": "short",
- "logBase": 1,
- "show": true
- }
- ],
- "yaxis": {
- "align": false
- }
- },
- {
- "aliasColors": {},
- "bars": false,
- "dashLength": 10,
- "dashes": false,
- "datasource": {
- "type": "prometheus",
- "uid": "$datasource"
- },
- "description": "per-second increasing rate of success requests.",
+ "description": "Storage request rate in cpp",
+ "fieldConfig": {
+ "defaults": {
+ "unit": "none"
+ },
+ "overrides": []
+ },
+ "fill": 1,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 8,
+ "w": 8,
+ "x": 0,
+ "y": 26
+ },
+ "hiddenSeries": false,
+ "id": 123464,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "10.2.0",
+ "pointradius": 2,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "Prometheus"
+ },
+ "editorMode": "code",
+ "exemplar": true,
+ "expr": "sum(increase(internal_storage_op_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])/2) by (persistent_data_op_type, status)",
+ "interval": "",
+ "legendFormat": "{{persistent_data_op_type}}-{{status}}",
+ "queryType": "randomWalk",
+ "range": true,
+ "refId": "A"
+ }
+ ],
+ "thresholds": [],
+ "timeRegions": [],
+ "title": "Storage Request Rate[cpp]",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "$$hashKey": "object:161",
+ "format": "none",
+ "logBase": 1,
+ "min": "0",
+ "show": true
+ },
+ {
+ "$$hashKey": "object:162",
+ "format": "short",
+ "logBase": 1,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "description": "Storage operation throughput in cpp",
+ "fill": 1,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 8,
+ "w": 8,
+ "x": 8,
+ "y": 26
+ },
+ "hiddenSeries": false,
+ "id": 123465,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "10.2.0",
+ "pointradius": 2,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "Prometheus"
+ },
+ "editorMode": "code",
+ "exemplar": true,
+ "expr": "sum(rate(internal_storage_kv_size_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[1m])) by (persistent_data_op_type)",
+ "interval": "",
+ "legendFormat": "{{persistent_data_op_type}}",
+ "queryType": "randomWalk",
+ "range": true,
+ "refId": "A"
+ }
+ ],
+ "thresholds": [],
+ "timeRegions": [],
+ "title": "Storage Operation Throughput[cpp]",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "$$hashKey": "object:161",
+ "format": "Bps",
+ "logBase": 1,
+ "min": "0",
+ "show": true
+ },
+ {
+ "$$hashKey": "object:162",
+ "format": "short",
+ "logBase": 1,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false
+ }
+ }
+ ],
+ "title": "Dependencies",
+ "type": "row"
+ },
+ {
+ "collapsed": false,
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "gridPos": {
+ "h": 1,
+ "w": 24,
+ "x": 0,
+ "y": 2
+ },
+ "id": 123248,
+ "panels": [],
+ "title": "Proxy",
+ "type": "row"
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "description": "per-second increasing rate of searching vectors.",
+ "fieldConfig": {
+ "defaults": {
+ "unit": "cps"
+ },
+ "overrides": []
+ },
"fill": 1,
"fillGradient": 0,
"gridPos": {
- "h": 6,
+ "h": 8,
"w": 8,
- "x": 8,
- "y": 31
+ "x": 0,
+ "y": 3
},
"hiddenSeries": false,
- "id": 123329,
+ "id": 123250,
"legend": {
"avg": false,
"current": false,
@@ -1728,7 +2654,7 @@
"alertThreshold": true
},
"percentage": false,
- "pluginVersion": "8.3.3",
+ "pluginVersion": "10.2.0",
"pointradius": 2,
"points": false,
"renderer": "flot",
@@ -1740,19 +2666,31 @@
{
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
"exemplar": true,
- "expr": "sum(increase(milvus_proxy_req_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\", status=\"success\"}[2m])/120) by(function_name, pod, node_id)",
+ "expr": "sum(increase(milvus_proxy_search_vectors_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])/120) by (pod, node_id)",
"interval": "",
- "legendFormat": "{{function_name}}-{{pod}}-{{node_id}}",
+ "legendFormat": "{{pod}}-{{node_id}}",
"queryType": "randomWalk",
"refId": "A"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "editorMode": "code",
+ "expr": "sum(rate(milvus_proxy_search_vectors_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[1m]))",
+ "hide": false,
+ "legendFormat": "total",
+ "range": true,
+ "refId": "B"
}
],
"thresholds": [],
"timeRegions": [],
- "title": "Success Request Rate",
+ "title": "Search Vector Count Rate",
"tooltip": {
"shared": true,
"sort": 0,
@@ -1767,7 +2705,7 @@
"yaxes": [
{
"$$hashKey": "object:3414",
- "format": "short",
+ "format": "cps",
"logBase": 1,
"min": "0",
"show": true
@@ -1790,19 +2728,25 @@
"dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
+ },
+ "description": "per-second increasing rate of inserting vectors.",
+ "fieldConfig": {
+ "defaults": {
+ "unit": "cps"
+ },
+ "overrides": []
},
- "description": "per-second increasing rate of faild requests.",
"fill": 1,
"fillGradient": 0,
"gridPos": {
- "h": 6,
+ "h": 8,
"w": 8,
- "x": 16,
- "y": 31
+ "x": 8,
+ "y": 3
},
"hiddenSeries": false,
- "id": 123379,
+ "id": 123315,
"legend": {
"avg": false,
"current": false,
@@ -1819,7 +2763,7 @@
"alertThreshold": true
},
"percentage": false,
- "pluginVersion": "8.3.3",
+ "pluginVersion": "10.2.0",
"pointradius": 2,
"points": false,
"renderer": "flot",
@@ -1831,19 +2775,19 @@
{
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
"exemplar": true,
- "expr": "sum(increase(milvus_proxy_req_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\", status=\"fail\"}[2m])/120) by(function_name, pod, node_id)",
+ "expr": "sum(increase(milvus_proxy_insert_vectors_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])/120) by (pod, node_id)",
"interval": "",
- "legendFormat": "{{function_name}}-{{pod}}-{{node_id}}",
+ "legendFormat": "{{pod}}-{{node_id}}",
"queryType": "randomWalk",
"refId": "A"
}
],
"thresholds": [],
"timeRegions": [],
- "title": "Faild Request Rate",
+ "title": "Insert Vector Count Rate",
"tooltip": {
"shared": true,
"sort": 0,
@@ -1858,7 +2802,7 @@
"yaxes": [
{
"$$hashKey": "object:3414",
- "format": "short",
+ "format": "cps",
"logBase": 1,
"min": "0",
"show": true
@@ -1881,19 +2825,19 @@
"dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "description": "The 99th percentile and average latency of request over the last 2 minutes.",
+ "description": "The 99th percentile and average latency of search request over the last 2 minutes.",
"fill": 1,
"fillGradient": 0,
"gridPos": {
- "h": 6,
+ "h": 8,
"w": 8,
- "x": 0,
- "y": 37
+ "x": 16,
+ "y": 3
},
"hiddenSeries": false,
- "id": 123381,
+ "id": 123264,
"legend": {
"avg": false,
"current": false,
@@ -1910,7 +2854,7 @@
"alertThreshold": true
},
"percentage": false,
- "pluginVersion": "8.3.3",
+ "pluginVersion": "10.2.0",
"pointradius": 2,
"points": false,
"renderer": "flot",
@@ -1922,31 +2866,35 @@
{
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
+ "editorMode": "code",
"exemplar": true,
- "expr": "histogram_quantile(0.99, sum by (le, pod, node_id, function_name) (rate(milvus_proxy_req_latency_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])))",
+ "expr": "histogram_quantile(0.99, sum by (le, query_type, pod, node_id) (rate(milvus_proxy_sq_latency_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])))",
+ "hide": false,
"interval": "",
- "legendFormat": "p99-{{function_name}}-{{pod}}-{{node_id}}",
- "queryType": "randomWalk",
- "refId": "A"
+ "legendFormat": "p99-{{pod}}-{{node_id}}-{{query_type}}",
+ "range": true,
+ "refId": "A"
},
{
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
+ "editorMode": "code",
"exemplar": true,
- "expr": "sum(increase(milvus_proxy_req_latency_sum{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by (pod, node_id, function_name) / sum(increase(milvus_proxy_req_latency_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by (pod, node_id, function_name)",
+ "expr": "sum(increase(milvus_proxy_sq_latency_sum{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by (pod, node_id, query_type) / sum(increase(milvus_proxy_sq_latency_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by (pod, node_id, query_type)",
"hide": false,
"interval": "",
- "legendFormat": "avg-{{function_name}}-{{pod}}-{{node_id}}",
+ "legendFormat": "avg-{{pod}}-{{node_id}}-{{query_type}}",
+ "range": true,
"refId": "B"
}
],
"thresholds": [],
"timeRegions": [],
- "title": "Request Latency",
+ "title": "Search Latency",
"tooltip": {
"shared": true,
"sort": 0,
@@ -1961,7 +2909,7 @@
"yaxes": [
{
"$$hashKey": "object:3538",
- "format": "short",
+ "format": "ms",
"logBase": 1,
"min": "0",
"show": true
@@ -1984,19 +2932,19 @@
"dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "description": "per-second increasing rate of bytes received in proxy",
+ "description": "The 99th percentile and average latency of search request for a specified collection over the last 2 minutes.",
"fill": 1,
"fillGradient": 0,
"gridPos": {
- "h": 6,
+ "h": 8,
"w": 8,
- "x": 8,
- "y": 37
+ "x": 0,
+ "y": 11
},
"hiddenSeries": false,
- "id": 123368,
+ "id": 123377,
"legend": {
"avg": false,
"current": false,
@@ -2013,7 +2961,7 @@
"alertThreshold": true
},
"percentage": false,
- "pluginVersion": "8.3.3",
+ "pluginVersion": "10.2.0",
"pointradius": 2,
"points": false,
"renderer": "flot",
@@ -2025,19 +2973,31 @@
{
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
"exemplar": true,
- "expr": "sum(increase(milvus_proxy_receive_bytes_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])/120) by(pod, node_id)",
+ "expr": "histogram_quantile(0.99, sum by (le, query_type, pod, node_id) (rate(milvus_proxy_collection_sq_latency_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\", collection_name=~\"$collection\"}[2m])))",
+ "hide": false,
"interval": "",
- "legendFormat": "{{pod}}-{{node_id}}",
- "queryType": "randomWalk",
+ "legendFormat": "p99-{{query_type}}-{{pod}}-{{node_id}}",
"refId": "A"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "exemplar": true,
+ "expr": "sum(increase(milvus_proxy_collection_sq_latency_sum{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\", collection_name=~\"$collection\"}[2m])) by (pod, node_id, query_type) / sum(increase(milvus_proxy_collection_sq_latency_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\", collection_name=~\"$collection\"}[2m])) by (pod, node_id, query_type)",
+ "hide": false,
+ "interval": "",
+ "legendFormat": "avg-{{query_type}}-{{pod}}-{{node_id}}",
+ "refId": "B"
}
],
"thresholds": [],
"timeRegions": [],
- "title": "Received Byte Rate",
+ "title": "Collection Search Latency",
"tooltip": {
"shared": true,
"sort": 0,
@@ -2051,14 +3011,14 @@
},
"yaxes": [
{
- "$$hashKey": "object:3414",
- "format": "short",
+ "$$hashKey": "object:3538",
+ "format": "ms",
"logBase": 1,
"min": "0",
"show": true
},
{
- "$$hashKey": "object:3415",
+ "$$hashKey": "object:3539",
"format": "short",
"logBase": 1,
"show": true
@@ -2075,19 +3035,19 @@
"dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "description": "per-second increasing rate of bytes sent back to the client by the Proxy in response to a Search or Query request.",
+ "description": "The 99th percentile and average latency of mutation request over the last 2 minutes.",
"fill": 1,
"fillGradient": 0,
"gridPos": {
- "h": 6,
+ "h": 8,
"w": 8,
- "x": 16,
- "y": 37
+ "x": 8,
+ "y": 11
},
"hiddenSeries": false,
- "id": 123369,
+ "id": 123320,
"legend": {
"avg": false,
"current": false,
@@ -2104,7 +3064,7 @@
"alertThreshold": true
},
"percentage": false,
- "pluginVersion": "8.3.3",
+ "pluginVersion": "10.2.0",
"pointradius": 2,
"points": false,
"renderer": "flot",
@@ -2116,19 +3076,35 @@
{
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
+ "editorMode": "code",
"exemplar": true,
- "expr": "sum(increase(milvus_proxy_send_bytes_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])/120) by(pod, node_id)",
+ "expr": "histogram_quantile(0.95, sum by (le, msg_type, pod, node_id) (rate(milvus_proxy_mutation_latency_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])))",
"interval": "",
- "legendFormat": "{{pod}}-{{node_id}}",
+ "legendFormat": "p99-{{pod}}-{{node_id}}-{{msg_type}}",
"queryType": "randomWalk",
+ "range": true,
"refId": "A"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "editorMode": "code",
+ "exemplar": true,
+ "expr": "sum(increase(milvus_proxy_mutation_latency_sum{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by (pod, node_id, msg_type) / sum(increase(milvus_proxy_mutation_latency_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by (pod, node_id, msg_type)",
+ "hide": false,
+ "interval": "",
+ "legendFormat": "avg-{{pod}}-{{node_id}}-{{msg_type}}",
+ "range": true,
+ "refId": "B"
}
],
"thresholds": [],
"timeRegions": [],
- "title": "Send Byte Rate",
+ "title": "Mutation Latency",
"tooltip": {
"shared": true,
"sort": 0,
@@ -2142,14 +3118,14 @@
},
"yaxes": [
{
- "$$hashKey": "object:3414",
- "format": "short",
+ "$$hashKey": "object:3538",
+ "format": "ms",
"logBase": 1,
"min": "0",
"show": true
},
{
- "$$hashKey": "object:3415",
+ "$$hashKey": "object:3539",
"format": "short",
"logBase": 1,
"show": true
@@ -2159,19 +3135,6 @@
"align": false
}
},
- {
- "collapsed": false,
- "gridPos": {
- "h": 1,
- "w": 24,
- "x": 0,
- "y": 43
- },
- "id": 123155,
- "panels": [],
- "title": "Root Coordinator",
- "type": "row"
- },
{
"aliasColors": {},
"bars": false,
@@ -2179,19 +3142,19 @@
"dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "description": "Number of proxy nodes which has register with etcd",
+ "description": "The 99th percentile and average latency of mutation request for a specified collection over the last 2 minutes.",
"fill": 1,
"fillGradient": 0,
"gridPos": {
- "h": 6,
+ "h": 8,
"w": 8,
- "x": 0,
- "y": 44
+ "x": 16,
+ "y": 11
},
"hiddenSeries": false,
- "id": 123141,
+ "id": 123378,
"legend": {
"avg": false,
"current": false,
@@ -2208,7 +3171,7 @@
"alertThreshold": true
},
"percentage": false,
- "pluginVersion": "8.3.3",
+ "pluginVersion": "10.2.0",
"pointradius": 2,
"points": false,
"renderer": "flot",
@@ -2220,20 +3183,31 @@
{
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
"exemplar": true,
- "expr": "sum(milvus_rootcoord_proxy_num{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (app_kubernetes_io_instance)",
+ "expr": "histogram_quantile(0.99, sum by (le, msg_type, pod, node_id) (rate(milvus_proxy_collection_mutation_latency_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\", collection_name=~\"$collection\"}[2m])))",
"interval": "",
- "intervalFactor": 2,
- "legendFormat": "num",
+ "legendFormat": "p99-{{pod}}-{{node_id}}-{{msg_type}}",
"queryType": "randomWalk",
"refId": "A"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "exemplar": true,
+ "expr": "sum(increase(milvus_proxy_collection_mutation_latency_sum{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\", collection_name=~\"$collection\"}[2m])) by (pod, node_id, msg_type) / sum(increase(milvus_proxy_collection_mutation_latency_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\", collection_name=~\"$collection\"}[2m])) by (pod, node_id, msg_type)",
+ "hide": false,
+ "interval": "",
+ "legendFormat": "avg-{{pod}}-{{node_id}}-{{msg_type}}",
+ "refId": "B"
}
],
"thresholds": [],
"timeRegions": [],
- "title": "Proxy Node Num",
+ "title": "Collection Mutation Latency",
"tooltip": {
"shared": true,
"sort": 0,
@@ -2247,14 +3221,14 @@
},
"yaxes": [
{
- "$$hashKey": "object:4353",
- "format": "short",
+ "$$hashKey": "object:3538",
+ "format": "ms",
"logBase": 1,
"min": "0",
"show": true
},
{
- "$$hashKey": "object:4354",
+ "$$hashKey": "object:3539",
"format": "short",
"logBase": 1,
"show": true
@@ -2271,19 +3245,19 @@
"dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "P1809F7CD0C75ACF3"
+ "uid": "${datasource}"
},
- "description": "Average, maximum and minimum values of the timestamps for time tick behind.",
+ "description": "The 99th percentile and average search latency in step",
"fill": 1,
"fillGradient": 0,
"gridPos": {
- "h": 6,
+ "h": 8,
"w": 8,
- "x": 8,
- "y": 44
+ "x": 0,
+ "y": 19
},
"hiddenSeries": false,
- "id": 123384,
+ "id": 123348,
"legend": {
"avg": false,
"current": false,
@@ -2300,7 +3274,7 @@
"alertThreshold": true
},
"percentage": false,
- "pluginVersion": "8.3.3",
+ "pluginVersion": "10.2.0",
"pointradius": 2,
"points": false,
"renderer": "flot",
@@ -2312,45 +3286,83 @@
{
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
+ "editorMode": "code",
"exemplar": true,
- "expr": "avg(milvus_rootcoord_produce_tt_lag_ms{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (pod, node_id)",
+ "expr": "histogram_quantile(0.99, sum by (le, query_type, pod, node_id) (rate(milvus_proxy_sq_wait_result_latency_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])))",
"hide": false,
"interval": "",
- "intervalFactor": 2,
- "legendFormat": "{{pod}}-{{node_id}}-avg",
- "queryType": "randomWalk",
+ "legendFormat": "p99-{{pod}}-{{node_id}}-{{query_type}}-wait-result",
+ "range": true,
"refId": "A"
},
{
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
+ "editorMode": "code",
"exemplar": true,
- "expr": "max(milvus_rootcoord_produce_tt_lag_ms{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (pod, node_id)",
+ "expr": "sum(increase(milvus_proxy_sq_wait_result_latency_sum{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by (pod, node_id, query_type) / sum(increase(milvus_proxy_sq_wait_result_latency_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by (pod, node_id, query_type)",
"hide": false,
"interval": "",
- "legendFormat": "{{pod}}-{{node_id}}-max",
+ "legendFormat": "avg-{{pod}}-{{node_id}}-{{query_type}}-wait-result",
+ "range": true,
"refId": "B"
},
{
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "exemplar": true,
- "expr": "min(milvus_rootcoord_produce_tt_lag_ms{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (pod, node_id)",
+ "editorMode": "code",
+ "expr": "histogram_quantile(0.99, sum by (le, query_type, pod, node_id) (rate(milvus_proxy_sq_reduce_result_latency_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])))",
"hide": false,
- "interval": "",
- "legendFormat": "{{pod}}-{{node_id}}-min",
+ "legendFormat": "p99-{{pod}}-{{node_id}}-{{query_type}}-reduce",
+ "range": true,
"refId": "C"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "editorMode": "code",
+ "expr": "sum(increase(milvus_proxy_sq_reduce_result_latency_sum{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by (pod, node_id, query_type) / sum(increase(milvus_proxy_sq_reduce_result_latency_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by (pod, node_id, query_type)",
+ "hide": false,
+ "legendFormat": "avg-{{pod}}-{{node_id}}-{{query_type}}-reduce",
+ "range": true,
+ "refId": "D"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "editorMode": "code",
+ "expr": "histogram_quantile(0.99, sum by (le, query_type, pod, node_id) (rate(milvus_proxy_sq_decode_result_latency_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])))\n",
+ "hide": false,
+ "legendFormat": "p99-{{pod}}-{{node_id}}-{{query_type}}-decode",
+ "range": true,
+ "refId": "E"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "editorMode": "code",
+ "expr": "sum(increase(milvus_proxy_sq_decode_result_latency_sum{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by (pod, node_id, query_type) / sum(increase(milvus_proxy_sq_decode_resultlatency_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by (pod, node_id, query_type)",
+ "hide": false,
+ "legendFormat": "avg-{{pod}}-{{node_id}}-{{query_type}}-decode",
+ "range": true,
+ "refId": "F"
}
],
"thresholds": [],
"timeRegions": [],
- "title": "Produced Timetick Lag Behind Now",
+ "title": "Search Latency In Step",
"tooltip": {
"shared": true,
"sort": 0,
@@ -2364,14 +3376,14 @@
},
"yaxes": [
{
- "$$hashKey": "object:536",
- "decimals": 0,
+ "$$hashKey": "object:3538",
"format": "ms",
"logBase": 1,
+ "min": "0",
"show": true
},
{
- "$$hashKey": "object:537",
+ "$$hashKey": "object:3539",
"format": "short",
"logBase": 1,
"show": true
@@ -2388,19 +3400,19 @@
"dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "description": "The 99th percentile and average latency for rootcoord to finish synchronizing timestamp messages to all pchanels.",
+ "description": "The 99th percentile and average latency of send mutation over the last 2 minutes.",
"fill": 1,
"fillGradient": 0,
"gridPos": {
- "h": 6,
+ "h": 8,
"w": 8,
- "x": 16,
- "y": 44
+ "x": 8,
+ "y": 19
},
"hiddenSeries": false,
- "id": 123338,
+ "id": 123321,
"legend": {
"avg": false,
"current": false,
@@ -2417,7 +3429,7 @@
"alertThreshold": true
},
"percentage": false,
- "pluginVersion": "8.3.3",
+ "pluginVersion": "10.2.0",
"pointradius": 2,
"points": false,
"renderer": "flot",
@@ -2429,31 +3441,35 @@
{
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
+ "editorMode": "code",
"exemplar": true,
- "expr": "histogram_quantile(0.99, sum by (le) (rate(milvus_rootcoord_sync_timetick_latency_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])))",
+ "expr": "histogram_quantile(0.99, sum by (le, msg_type, pod, node_id) (rate(milvus_proxy_mutation_send_latency_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])))",
"interval": "",
- "legendFormat": "p99-latency",
+ "legendFormat": "p99{{pod}}-{{node_id}}-{{msg_type}}",
"queryType": "randomWalk",
+ "range": true,
"refId": "A"
},
{
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
+ "editorMode": "code",
"exemplar": true,
- "expr": "sum(increase(milvus_rootcoord_sync_timetick_latency_sum{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) / sum(increase(milvus_rootcoord_sync_timetick_latency_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m]))",
+ "expr": "sum(increase(milvus_proxy_mutation_send_latency_sum{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by (pod, node_id, msg_type) / sum(increase(milvus_proxy_mutation_send_latency_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by (pod, node_id, msg_type)",
"hide": false,
"interval": "",
- "legendFormat": "avg-latency",
+ "legendFormat": "avg-{{pod}}-{{node_id}}-{{msg_type}}",
+ "range": true,
"refId": "B"
}
],
"thresholds": [],
"timeRegions": [],
- "title": "Produced Timetick Time Taken",
+ "title": "Mutation Send Latency",
"tooltip": {
"shared": true,
"sort": 0,
@@ -2467,14 +3483,14 @@
},
"yaxes": [
{
- "$$hashKey": "object:161",
+ "$$hashKey": "object:3538",
"format": "ms",
"logBase": 1,
"min": "0",
"show": true
},
{
- "$$hashKey": "object:162",
+ "$$hashKey": "object:3539",
"format": "short",
"logBase": 1,
"show": true
@@ -2491,19 +3507,19 @@
"dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "description": "The 99th percentile and average latency of DDL request over the last 2 minutes.",
+ "description": "The 99th percentile and average latency of mq mutation over the last 2 minutes.",
"fill": 1,
"fillGradient": 0,
"gridPos": {
- "h": 6,
+ "h": 8,
"w": 8,
- "x": 0,
- "y": 50
+ "x": 16,
+ "y": 19
},
"hiddenSeries": false,
- "id": 123337,
+ "id": 123448,
"legend": {
"avg": false,
"current": false,
@@ -2520,7 +3536,7 @@
"alertThreshold": true
},
"percentage": false,
- "pluginVersion": "8.3.3",
+ "pluginVersion": "10.2.0",
"pointradius": 2,
"points": false,
"renderer": "flot",
@@ -2532,31 +3548,35 @@
{
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
+ "editorMode": "code",
"exemplar": true,
- "expr": "histogram_quantile(0.99, sum by (le, function_name) (rate(milvus_rootcoord_ddl_req_latency_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])))",
+ "expr": "histogram_quantile(0.99, sum by (le, pod) (rate(milvus_msgstream_request_latency_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\", message_op_type=\"produce\"}[2m])))",
"interval": "",
- "legendFormat": "p99-{{function_name}}",
+ "legendFormat": "p99-{{pod}}",
"queryType": "randomWalk",
+ "range": true,
"refId": "A"
},
{
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
+ "editorMode": "code",
"exemplar": true,
- "expr": "sum(increase(milvus_rootcoord_ddl_req_latency_sum{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by (function_name) / sum(increase(milvus_rootcoord_ddl_req_latency_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by (function_name)",
+ "expr": "sum(increase(milvus_msgstream_request_latency_sum{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\", message_op_type=\"produce\"}[2m])) by (pod) / sum(increase(milvus_msgstream_request_latency_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\", message_op_type=\"produce\"}[2m])) by (pod)",
"hide": false,
"interval": "",
- "legendFormat": "avg-{{function_name}}",
+ "legendFormat": "avg-{{pod}}",
+ "range": true,
"refId": "B"
}
],
"thresholds": [],
"timeRegions": [],
- "title": "DDL Request Latency",
+ "title": "MQ Send Latency",
"tooltip": {
"shared": true,
"sort": 0,
@@ -2570,14 +3590,14 @@
},
"yaxes": [
{
- "$$hashKey": "object:161",
- "format": "short",
+ "$$hashKey": "object:3538",
+ "format": "ms",
"logBase": 1,
"min": "0",
"show": true
},
{
- "$$hashKey": "object:162",
+ "$$hashKey": "object:3539",
"format": "short",
"logBase": 1,
"show": true
@@ -2594,19 +3614,19 @@
"dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "description": "RootCoord stores pre-assigned timestamps in the metastore",
+ "description": "The 99th percentile and average latency of apply timestamp over the last 2 minutes.",
"fill": 1,
"fillGradient": 0,
"gridPos": {
- "h": 6,
+ "h": 8,
"w": 8,
- "x": 8,
- "y": 50
+ "x": 0,
+ "y": 27
},
"hiddenSeries": false,
- "id": 123340,
+ "id": 123327,
"legend": {
"avg": false,
"current": false,
@@ -2623,7 +3643,7 @@
"alertThreshold": true
},
"percentage": false,
- "pluginVersion": "8.3.3",
+ "pluginVersion": "10.2.0",
"pointradius": 2,
"points": false,
"renderer": "flot",
@@ -2635,20 +3655,31 @@
{
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
"exemplar": true,
- "expr": "milvus_rootcoord_timestamp_saved{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}",
+ "expr": "histogram_quantile(0.99, sum by (le, pod, node_id) (rate(milvus_proxy_apply_timestamp_latency_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])))",
"interval": "",
- "intervalFactor": 2,
- "legendFormat": "tiestamp",
+ "legendFormat": "p99-{{pod}}-{{node_id}}",
"queryType": "randomWalk",
"refId": "A"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "exemplar": true,
+ "expr": "sum(increase(milvus_proxy_apply_timestamp_latency_sum{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by (pod, node_id) / sum(increase(milvus_proxy_apply_timestamp_latency_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by (pod, node_id)",
+ "hide": false,
+ "interval": "",
+ "legendFormat": "avg-{{pod}}-{{node_id}}",
+ "refId": "B"
}
],
"thresholds": [],
"timeRegions": [],
- "title": "Timestamp Saved",
+ "title": "Apply Timestamp Latency",
"tooltip": {
"shared": true,
"sort": 0,
@@ -2662,15 +3693,15 @@
},
"yaxes": [
{
- "$$hashKey": "object:4353",
- "format": "short",
+ "$$hashKey": "object:3538",
+ "format": "ms",
"logBase": 1,
"min": "0",
"show": true
},
{
- "$$hashKey": "object:4354",
- "format": "short",
+ "$$hashKey": "object:3539",
+ "format": "ms",
"logBase": 1,
"show": true
}
@@ -2686,19 +3717,19 @@
"dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "description": "per-second increasing rate of DDL request",
+ "description": "The 99th percentile of latency for applying PK over the last 2 minutes.",
"fill": 1,
"fillGradient": 0,
"gridPos": {
- "h": 6,
+ "h": 8,
"w": 8,
- "x": 16,
- "y": 50
+ "x": 8,
+ "y": 27
},
"hiddenSeries": false,
- "id": 123347,
+ "id": 123326,
"legend": {
"avg": false,
"current": false,
@@ -2715,7 +3746,7 @@
"alertThreshold": true
},
"percentage": false,
- "pluginVersion": "8.3.3",
+ "pluginVersion": "10.2.0",
"pointradius": 2,
"points": false,
"renderer": "flot",
@@ -2727,19 +3758,31 @@
{
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
"exemplar": true,
- "expr": "sum(increase(milvus_rootcoord_ddl_req_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])/120) by (status, function_name)",
+ "expr": "histogram_quantile(0.99, sum by (le, pod, node_id) (rate(milvus_proxy_apply_pk_latency_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])))",
"interval": "",
- "legendFormat": "{{function_name}}-{{status}}",
+ "legendFormat": "p99-{{pod}}-{{node_id}}",
"queryType": "randomWalk",
"refId": "A"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "exemplar": true,
+ "expr": "sum(increase(milvus_proxy_apply_pk_latency_sum{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by (pod, node_id) / sum(increase(milvus_proxy_apply_pk_latency_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by (pod, node_id)",
+ "hide": false,
+ "interval": "",
+ "legendFormat": "avg-{{pod}}-{{node_id}}",
+ "refId": "B"
}
],
"thresholds": [],
"timeRegions": [],
- "title": "DDL Request Rate",
+ "title": "Apply PK Latency",
"tooltip": {
"shared": true,
"sort": 0,
@@ -2753,14 +3796,14 @@
},
"yaxes": [
{
- "$$hashKey": "object:1456",
- "format": "short",
+ "$$hashKey": "object:3538",
+ "format": "ms",
"logBase": 1,
"min": "0",
"show": true
},
{
- "$$hashKey": "object:1457",
+ "$$hashKey": "object:3539",
"format": "short",
"logBase": 1,
"show": true
@@ -2777,19 +3820,19 @@
"dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "description": "RoootCoord current latest timestamp",
+ "description": "The 99th percentile and average latency of rpc in queue over the last 2 minutes.",
"fill": 1,
"fillGradient": 0,
"gridPos": {
- "h": 6,
+ "h": 8,
"w": 8,
- "x": 0,
- "y": 56
+ "x": 16,
+ "y": 27
},
"hiddenSeries": false,
- "id": 123339,
+ "id": 123470,
"legend": {
"avg": false,
"current": false,
@@ -2806,7 +3849,7 @@
"alertThreshold": true
},
"percentage": false,
- "pluginVersion": "8.3.3",
+ "pluginVersion": "10.2.0",
"pointradius": 2,
"points": false,
"renderer": "flot",
@@ -2818,20 +3861,35 @@
{
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
+ "editorMode": "code",
"exemplar": true,
- "expr": "milvus_rootcoord_timestamp{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}",
+ "expr": "histogram_quantile(0.99, sum by (le, pod, function_name) (rate(milvus_proxy_req_in_queue_latency_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])))",
"interval": "",
- "intervalFactor": 2,
- "legendFormat": "tiestamp",
+ "legendFormat": "p99-{{pod}}-{{function_name}}",
"queryType": "randomWalk",
+ "range": true,
"refId": "A"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "editorMode": "code",
+ "exemplar": true,
+ "expr": "sum(increase(milvus_proxy_req_in_queue_latency_sum{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by (pod, function_name) / sum(increase(milvus_proxy_req_in_queue_latency_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by (pod, function_name)",
+ "hide": false,
+ "interval": "",
+ "legendFormat": "avg-{{pod}}-{{function_name}}",
+ "range": true,
+ "refId": "B"
}
],
"thresholds": [],
"timeRegions": [],
- "title": "Timestamp",
+ "title": "In Queue Latency",
"tooltip": {
"shared": true,
"sort": 0,
@@ -2845,14 +3903,14 @@
},
"yaxes": [
{
- "$$hashKey": "object:4353",
- "format": "short",
+ "$$hashKey": "object:3538",
+ "format": "ms",
"logBase": 1,
"min": "0",
"show": true
},
{
- "$$hashKey": "object:4354",
+ "$$hashKey": "object:3539",
"format": "short",
"logBase": 1,
"show": true
@@ -2869,19 +3927,19 @@
"dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "description": "The number of DML channels",
+ "description": "Average, maximum and minimum values of the number of msgstream objects created on all physical topics.",
"fill": 1,
"fillGradient": 0,
"gridPos": {
- "h": 6,
+ "h": 8,
"w": 8,
- "x": 8,
- "y": 56
+ "x": 0,
+ "y": 35
},
"hiddenSeries": false,
- "id": 123345,
+ "id": 123319,
"legend": {
"avg": false,
"current": false,
@@ -2898,7 +3956,7 @@
"alertThreshold": true
},
"percentage": false,
- "pluginVersion": "8.3.3",
+ "pluginVersion": "10.2.0",
"pointradius": 2,
"points": false,
"renderer": "flot",
@@ -2910,20 +3968,44 @@
{
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
"exemplar": true,
- "expr": "sum(milvus_rootcoord_dml_channel_num{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (app_kubernetes_io_instance)",
+ "expr": "avg(milvus_proxy_msgstream_obj_num{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (pod, node_id)",
"interval": "",
"intervalFactor": 2,
- "legendFormat": "num",
+ "legendFormat": "{{pod}}-{{node_id}}-avg",
"queryType": "randomWalk",
"refId": "A"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "exemplar": true,
+ "expr": "max(milvus_proxy_msgstream_obj_num{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (pod, node_id)",
+ "hide": false,
+ "interval": "",
+ "legendFormat": "{{pod}}-{{node_id}}-max",
+ "refId": "B"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "exemplar": true,
+ "expr": "min(milvus_proxy_msgstream_obj_num{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (pod, node_id)",
+ "hide": false,
+ "interval": "",
+ "legendFormat": "{{pod}}-{{node_id}}-min",
+ "refId": "C"
}
],
"thresholds": [],
"timeRegions": [],
- "title": "DML Channel Num",
+ "title": "Msg Stream Object Num",
"tooltip": {
"shared": true,
"sort": 0,
@@ -2937,14 +4019,14 @@
},
"yaxes": [
{
- "$$hashKey": "object:4353",
+ "$$hashKey": "object:536",
"format": "short",
"logBase": 1,
"min": "0",
"show": true
},
{
- "$$hashKey": "object:4354",
+ "$$hashKey": "object:537",
"format": "short",
"logBase": 1,
"show": true
@@ -2961,19 +4043,19 @@
"dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "description": "per-second increasing rate of IDs assigned by RootCoord",
+ "description": "Average, maximum and minimum values of the timestamps for time tick behind.",
"fill": 1,
"fillGradient": 0,
"gridPos": {
- "h": 6,
+ "h": 8,
"w": 8,
- "x": 16,
- "y": 56
+ "x": 8,
+ "y": 35
},
"hiddenSeries": false,
- "id": 123221,
+ "id": 123325,
"legend": {
"avg": false,
"current": false,
@@ -2990,7 +4072,7 @@
"alertThreshold": true
},
"percentage": false,
- "pluginVersion": "8.3.3",
+ "pluginVersion": "10.2.0",
"pointradius": 2,
"points": false,
"renderer": "flot",
@@ -3002,19 +4084,57 @@
{
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
"exemplar": true,
- "expr": "sum(increase(milvus_rootcoord_id_alloc_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])/120)",
+ "expr": "avg(milvus_proxy_tt_lag_ms{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (pod, node_id)",
+ "hide": false,
"interval": "",
- "legendFormat": "total",
+ "intervalFactor": 2,
+ "legendFormat": "{{pod}}-{{node_id}}-avg",
"queryType": "randomWalk",
"refId": "A"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "exemplar": true,
+ "expr": "max(milvus_proxy_tt_lag_ms{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (pod, node_id)",
+ "hide": false,
+ "interval": "",
+ "legendFormat": "{{pod}}-{{node_id}}-max",
+ "refId": "B"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "exemplar": true,
+ "expr": "min(milvus_proxy_tt_lag_ms{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (pod, node_id)",
+ "hide": false,
+ "interval": "",
+ "legendFormat": "{{pod}}-{{node_id}}-min",
+ "refId": "C"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "exemplar": true,
+ "expr": "",
+ "hide": false,
+ "interval": "",
+ "legendFormat": "",
+ "refId": "D"
}
],
"thresholds": [],
"timeRegions": [],
- "title": "ID Alloc Rate",
+ "title": "Produced Timetick Lag Behind Now",
"tooltip": {
"shared": true,
"sort": 0,
@@ -3028,14 +4148,14 @@
},
"yaxes": [
{
- "$$hashKey": "object:1456",
- "format": "short",
+ "$$hashKey": "object:536",
+ "decimals": 0,
+ "format": "ms",
"logBase": 1,
- "min": "0",
"show": true
},
{
- "$$hashKey": "object:1457",
+ "$$hashKey": "object:537",
"format": "short",
"logBase": 1,
"show": true
@@ -3052,19 +4172,19 @@
"dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "description": "The number of partitions.",
+ "description": "The 99th percentile of latency for assigning segment id over the last 2 minutes.",
"fill": 1,
"fillGradient": 0,
"gridPos": {
- "h": 6,
+ "h": 8,
"w": 8,
- "x": 0,
- "y": 62
+ "x": 16,
+ "y": 35
},
"hiddenSeries": false,
- "id": 123344,
+ "id": 123449,
"legend": {
"avg": false,
"current": false,
@@ -3081,7 +4201,7 @@
"alertThreshold": true
},
"percentage": false,
- "pluginVersion": "8.3.3",
+ "pluginVersion": "10.2.0",
"pointradius": 2,
"points": false,
"renderer": "flot",
@@ -3093,20 +4213,31 @@
{
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
"exemplar": true,
- "expr": "sum(milvus_rootcoord_partition_num{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (app_kubernetes_io_instance)",
+ "expr": "histogram_quantile(0.99, sum by (le, pod, node_id) (rate(milvus_proxy_assign_segmentID_latency_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])))",
"interval": "",
- "intervalFactor": 2,
- "legendFormat": "num",
+ "legendFormat": "p99-{{pod}}-{{node_id}}",
"queryType": "randomWalk",
"refId": "A"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "exemplar": true,
+ "expr": "sum(increase(milvus_proxy_assign_segmentID_latency_sum{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by (pod, node_id) / sum(increase(milvus_proxy_assign_segmentID_latency_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by (pod, node_id)",
+ "hide": false,
+ "interval": "",
+ "legendFormat": "avg-{{pod}}-{{node_id}}",
+ "refId": "B"
}
],
"thresholds": [],
"timeRegions": [],
- "title": "Partition Num",
+ "title": "Assign Segment ID Latency",
"tooltip": {
"shared": true,
"sort": 0,
@@ -3120,14 +4251,14 @@
},
"yaxes": [
{
- "$$hashKey": "object:4353",
- "format": "short",
+ "$$hashKey": "object:3538",
+ "format": "ms",
"logBase": 1,
"min": "0",
"show": true
},
{
- "$$hashKey": "object:4354",
+ "$$hashKey": "object:3539",
"format": "short",
"logBase": 1,
"show": true
@@ -3144,19 +4275,19 @@
"dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "description": "The max time tick delay of flow graphs. unit ms",
+ "description": "The 99th percentile and average latency of request over the last 2 minutes.",
"fill": 1,
"fillGradient": 0,
"gridPos": {
- "h": 6,
+ "h": 8,
"w": 8,
- "x": 8,
- "y": 62
+ "x": 0,
+ "y": 43
},
"hiddenSeries": false,
- "id": 123383,
+ "id": 123381,
"legend": {
"avg": false,
"current": false,
@@ -3173,7 +4304,7 @@
"alertThreshold": true
},
"percentage": false,
- "pluginVersion": "8.3.3",
+ "pluginVersion": "10.2.0",
"pointradius": 2,
"points": false,
"renderer": "flot",
@@ -3185,19 +4316,31 @@
{
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
"exemplar": true,
- "expr": "sum(milvus_rootcoord_time_tick_delay{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (role_name, node_id)", "interval": "",
- "intervalFactor": 2,
- "legendFormat": "{{role_name}}-{{node_id}}",
+ "expr": "histogram_quantile(0.99, sum by (le, pod, node_id, function_name) (rate(milvus_proxy_req_latency_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])))",
+ "interval": "",
+ "legendFormat": "p99-{{function_name}}-{{pod}}-{{node_id}}",
"queryType": "randomWalk",
"refId": "A"
- }
- ],
- "thresholds": [],
- "timeRegions": [],
- "title": "Time Tick Delay",
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "exemplar": true,
+ "expr": "sum(increase(milvus_proxy_req_latency_sum{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by (pod, node_id, function_name) / sum(increase(milvus_proxy_req_latency_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by (pod, node_id, function_name)",
+ "hide": false,
+ "interval": "",
+ "legendFormat": "avg-{{function_name}}-{{pod}}-{{node_id}}",
+ "refId": "B"
+ }
+ ],
+ "thresholds": [],
+ "timeRegions": [],
+ "title": "Request Latency",
"tooltip": {
"shared": true,
"sort": 0,
@@ -3211,14 +4354,105 @@
},
"yaxes": [
{
- "$$hashKey": "object:4353",
+ "$$hashKey": "object:3538",
+ "format": "ms",
+ "logBase": 1,
+ "min": "0",
+ "show": true
+ },
+ {
+ "$$hashKey": "object:3539",
+ "format": "short",
+ "logBase": 1,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "description": "per-second increasing rate of success requests.",
+ "fill": 1,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 8,
+ "w": 8,
+ "x": 8,
+ "y": 43
+ },
+ "hiddenSeries": false,
+ "id": 123329,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "10.2.0",
+ "pointradius": 2,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "exemplar": true,
+ "expr": "sum(increase(milvus_proxy_req_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\", status=\"success\"}[2m])/120) by(function_name, pod, node_id)",
+ "interval": "",
+ "legendFormat": "{{function_name}}-{{pod}}-{{node_id}}",
+ "queryType": "randomWalk",
+ "refId": "A"
+ }
+ ],
+ "thresholds": [],
+ "timeRegions": [],
+ "title": "Success Request Rate",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "$$hashKey": "object:3414",
"format": "short",
"logBase": 1,
"min": "0",
"show": true
},
{
- "$$hashKey": "object:4354",
+ "$$hashKey": "object:3415",
"format": "short",
"logBase": 1,
"show": true
@@ -3235,19 +4469,19 @@
"dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "description": "The number of collections.",
+ "description": "The 99th percentile and average latency of update cache over the last 2 minutes.",
"fill": 1,
"fillGradient": 0,
"gridPos": {
- "h": 6,
+ "h": 8,
"w": 8,
"x": 16,
- "y": 62
+ "y": 43
},
"hiddenSeries": false,
- "id": 123342,
+ "id": 123323,
"legend": {
"avg": false,
"current": false,
@@ -3264,7 +4498,7 @@
"alertThreshold": true
},
"percentage": false,
- "pluginVersion": "8.3.3",
+ "pluginVersion": "10.2.0",
"pointradius": 2,
"points": false,
"renderer": "flot",
@@ -3276,20 +4510,31 @@
{
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
"exemplar": true,
- "expr": "sum(milvus_rootcoord_collection_num{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (app_kubernetes_io_instance)",
+ "expr": "histogram_quantile(0.99, sum by (le, pod, node_id) (rate(milvus_proxy_cache_update_latency_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])))",
"interval": "",
- "intervalFactor": 2,
- "legendFormat": "num",
+ "legendFormat": "p99-{{pod}}-{{node_id}}",
"queryType": "randomWalk",
"refId": "A"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "exemplar": true,
+ "expr": "sum(increase(milvus_proxy_cache_update_latency_sum{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by (pod, node_id) / sum(increase(milvus_proxy_cache_update_latency_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by (pod, node_id)",
+ "hide": false,
+ "interval": "",
+ "legendFormat": "avg-{{pod}}-{{node_id}}",
+ "refId": "B"
}
],
"thresholds": [],
"timeRegions": [],
- "title": "Collection Num",
+ "title": "Cache Update Latency",
"tooltip": {
"shared": true,
"sort": 0,
@@ -3303,14 +4548,14 @@
},
"yaxes": [
{
- "$$hashKey": "object:4353",
- "format": "short",
+ "$$hashKey": "object:3538",
+ "format": "ms",
"logBase": 1,
"min": "0",
"show": true
},
{
- "$$hashKey": "object:4354",
+ "$$hashKey": "object:3539",
"format": "short",
"logBase": 1,
"show": true
@@ -3327,19 +4572,19 @@
"dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "description": "The number of credential",
+ "description": "per-second increasing rate of bytes sent back to the client by the Proxy in response to a Search or Query request.",
"fill": 1,
"fillGradient": 0,
"gridPos": {
- "h": 6,
+ "h": 8,
"w": 8,
"x": 0,
- "y": 68
+ "y": 51
},
"hiddenSeries": false,
- "id": 123343,
+ "id": 123369,
"legend": {
"avg": false,
"current": false,
@@ -3356,7 +4601,7 @@
"alertThreshold": true
},
"percentage": false,
- "pluginVersion": "8.3.3",
+ "pluginVersion": "10.2.0",
"pointradius": 2,
"points": false,
"renderer": "flot",
@@ -3368,20 +4613,19 @@
{
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
"exemplar": true,
- "expr": "sum(milvus_rootcoord_credential_num{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (app_kubernetes_io_instance)",
+ "expr": "sum(rate(milvus_proxy_send_bytes_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[30s])) by(pod, node_id)",
"interval": "",
- "intervalFactor": 2,
- "legendFormat": "num",
+ "legendFormat": "{{pod}}-{{node_id}}",
"queryType": "randomWalk",
"refId": "A"
}
],
"thresholds": [],
"timeRegions": [],
- "title": "Credential Num",
+ "title": "Send Byte Rate",
"tooltip": {
"shared": true,
"sort": 0,
@@ -3395,14 +4639,14 @@
},
"yaxes": [
{
- "$$hashKey": "object:4353",
- "format": "short",
+ "$$hashKey": "object:3414",
+ "format": "binBps",
"logBase": 1,
"min": "0",
"show": true
},
{
- "$$hashKey": "object:4354",
+ "$$hashKey": "object:3415",
"format": "short",
"logBase": 1,
"show": true
@@ -3419,19 +4663,19 @@
"dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "description": "The number of Msgstream objects.",
+ "description": "per-second increasing rate of bytes received in proxy",
"fill": 1,
"fillGradient": 0,
"gridPos": {
- "h": 6,
+ "h": 8,
"w": 8,
"x": 8,
- "y": 68
+ "y": 51
},
"hiddenSeries": false,
- "id": 123346,
+ "id": 123368,
"legend": {
"avg": false,
"current": false,
@@ -3448,7 +4692,7 @@
"alertThreshold": true
},
"percentage": false,
- "pluginVersion": "8.3.3",
+ "pluginVersion": "10.2.0",
"pointradius": 2,
"points": false,
"renderer": "flot",
@@ -3460,20 +4704,19 @@
{
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
"exemplar": true,
- "expr": "sum(milvus_rootcoord_msgstream_obj_num{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (app_kubernetes_io_instance)",
+ "expr": "sum(rate(milvus_proxy_receive_bytes_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[1m])) by(pod, node_id)",
"interval": "",
- "intervalFactor": 2,
- "legendFormat": "num",
+ "legendFormat": "{{pod}}-{{node_id}}",
"queryType": "randomWalk",
"refId": "A"
}
],
"thresholds": [],
"timeRegions": [],
- "title": "Msgstream Num",
+ "title": "Received Byte Rate",
"tooltip": {
"shared": true,
"sort": 0,
@@ -3487,14 +4730,14 @@
},
"yaxes": [
{
- "$$hashKey": "object:4353",
- "format": "short",
+ "$$hashKey": "object:3414",
+ "format": "binBps",
"logBase": 1,
"min": "0",
"show": true
},
{
- "$$hashKey": "object:4354",
+ "$$hashKey": "object:3415",
"format": "short",
"logBase": 1,
"show": true
@@ -3505,982 +4748,764 @@
}
},
{
- "collapsed": true,
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "description": "per-second increasing rate of faild requests.",
+ "fill": 1,
+ "fillGradient": 0,
"gridPos": {
- "h": 1,
- "w": 24,
- "x": 0,
- "y": 74
+ "h": 8,
+ "w": 8,
+ "x": 16,
+ "y": 51
},
- "id": 123246,
- "panels": [
+ "hiddenSeries": false,
+ "id": 123379,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "10.2.0",
+ "pointradius": 2,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
{
- "aliasColors": {},
- "bars": false,
- "dashLength": 10,
- "dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
- },
- "description": "Total number of loaded collections.",
- "fill": 1,
- "fillGradient": 0,
- "gridPos": {
- "h": 6,
- "w": 8,
- "x": 0,
- "y": 3
- },
- "hiddenSeries": false,
- "id": 123288,
- "legend": {
- "avg": false,
- "current": false,
- "max": false,
- "min": false,
- "show": true,
- "total": false,
- "values": false
+ "uid": "${datasource}"
},
- "lines": true,
- "linewidth": 1,
- "nullPointMode": "null",
- "options": {
- "alertThreshold": true
- },
- "percentage": false,
- "pluginVersion": "8.3.3",
- "pointradius": 2,
- "points": false,
- "renderer": "flot",
- "seriesOverrides": [],
- "spaceLength": 10,
- "stack": false,
- "steppedLine": false,
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "$datasource"
- },
- "exemplar": true,
- "expr": "sum(milvus_querycoord_collection_num{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (app_kubernetes_io_instance)",
- "interval": "",
- "intervalFactor": 2,
- "legendFormat": "num",
- "queryType": "randomWalk",
- "refId": "A"
- }
- ],
- "thresholds": [],
- "timeRegions": [],
- "title": "Collection Loaded Num",
- "tooltip": {
- "shared": true,
- "sort": 0,
- "value_type": "individual"
- },
- "type": "graph",
- "xaxis": {
- "mode": "time",
- "show": true,
- "values": []
- },
- "yaxes": [
- {
- "$$hashKey": "object:536",
- "format": "short",
- "logBase": 1,
- "min": "0",
- "show": true
- },
- {
- "$$hashKey": "object:537",
- "format": "short",
- "logBase": 1,
- "show": true
- }
- ],
- "yaxis": {
- "align": false
- }
+ "exemplar": true,
+ "expr": "sum(increase(milvus_proxy_req_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\", status=\"fail\"}[2m])/120) by(function_name, pod, node_id)",
+ "interval": "",
+ "legendFormat": "{{function_name}}-{{pod}}-{{node_id}}",
+ "queryType": "randomWalk",
+ "refId": "A"
+ }
+ ],
+ "thresholds": [],
+ "timeRegions": [],
+ "title": "Faild Request Rate",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "$$hashKey": "object:3414",
+ "format": "short",
+ "logBase": 1,
+ "min": "0",
+ "show": true
},
{
- "aliasColors": {},
- "bars": false,
- "dashLength": 10,
- "dashes": false,
+ "$$hashKey": "object:3415",
+ "format": "short",
+ "logBase": 1,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "description": "Average, maximum and minimum values of the timestamps for time tick behind.",
+ "fill": 1,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 8,
+ "w": 8,
+ "x": 0,
+ "y": 59
+ },
+ "hiddenSeries": false,
+ "id": 123436,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "10.2.0",
+ "pointradius": 2,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
- },
- "description": "Total number of loaded entities.",
- "fill": 1,
- "fillGradient": 0,
- "gridPos": {
- "h": 6,
- "w": 8,
- "x": 8,
- "y": 3
- },
- "hiddenSeries": false,
- "id": 123289,
- "legend": {
- "avg": false,
- "current": false,
- "max": false,
- "min": false,
- "show": true,
- "total": false,
- "values": false
- },
- "lines": true,
- "linewidth": 1,
- "nullPointMode": "null",
- "options": {
- "alertThreshold": true
- },
- "percentage": false,
- "pluginVersion": "8.3.3",
- "pointradius": 2,
- "points": false,
- "renderer": "flot",
- "seriesOverrides": [],
- "spaceLength": 10,
- "stack": false,
- "steppedLine": false,
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "$datasource"
- },
- "exemplar": true,
- "expr": "sum(milvus_querycoord_entity_num{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (app_kubernetes_io_instance)",
- "interval": "",
- "intervalFactor": 2,
- "legendFormat": "num",
- "queryType": "randomWalk",
- "refId": "A"
- }
- ],
- "thresholds": [],
- "timeRegions": [],
- "title": "Entity Loaded Num",
- "tooltip": {
- "shared": true,
- "sort": 0,
- "value_type": "individual"
+ "uid": "${datasource}"
},
- "type": "graph",
- "xaxis": {
- "mode": "time",
- "show": true,
- "values": []
+ "editorMode": "code",
+ "exemplar": true,
+ "expr": "avg(milvus_proxy_limiter_rate{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (pod, node_id, msg_type)",
+ "hide": true,
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "{{pod}}-{{node_id}}-{{msg_type}}-avg",
+ "queryType": "randomWalk",
+ "range": true,
+ "refId": "A"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
},
- "yaxes": [
- {
- "$$hashKey": "object:536",
- "format": "short",
- "logBase": 1,
- "min": "0",
- "show": true
- },
- {
- "$$hashKey": "object:537",
- "format": "short",
- "logBase": 1,
- "show": true
- }
- ],
- "yaxis": {
- "align": false
- }
+ "editorMode": "code",
+ "exemplar": true,
+ "expr": "max(milvus_proxy_limiter_rate{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (pod, node_id, msg_type)",
+ "hide": true,
+ "interval": "",
+ "legendFormat": "{{pod}}-{{node_id}}-{{msg_type}}-max",
+ "range": true,
+ "refId": "B"
},
{
- "aliasColors": {},
- "bars": false,
- "dashLength": 10,
- "dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "description": "per-second increasing rate of load requests.",
- "fill": 1,
- "fillGradient": 0,
- "gridPos": {
- "h": 6,
- "w": 8,
- "x": 16,
- "y": 3
+ "editorMode": "code",
+ "exemplar": true,
+ "expr": "min(milvus_proxy_limiter_rate{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (pod, node_id, msg_type)",
+ "hide": false,
+ "interval": "",
+ "legendFormat": "{{pod}}-{{node_id}}-{{msg_type}}-min",
+ "range": true,
+ "refId": "C"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
},
- "hiddenSeries": false,
- "id": 123291,
- "legend": {
- "avg": false,
- "current": false,
- "max": false,
- "min": false,
- "show": true,
- "total": false,
- "values": false
- },
- "lines": true,
- "linewidth": 1,
- "nullPointMode": "null",
- "options": {
- "alertThreshold": true
- },
- "percentage": false,
- "pluginVersion": "8.3.3",
- "pointradius": 2,
- "points": false,
- "renderer": "flot",
- "seriesOverrides": [],
- "spaceLength": 10,
- "stack": false,
- "steppedLine": false,
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "$datasource"
- },
- "exemplar": true,
- "expr": "sum(increase(milvus_querycoord_load_req_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])/120) by (status)",
- "interval": "",
- "legendFormat": "{{status}}",
- "queryType": "randomWalk",
- "refId": "A"
- }
- ],
- "thresholds": [],
- "timeRegions": [],
- "title": "Load Request Rate",
- "tooltip": {
- "shared": true,
- "sort": 0,
- "value_type": "individual"
- },
- "type": "graph",
- "xaxis": {
- "mode": "time",
- "show": true,
- "values": []
- },
- "yaxes": [
- {
- "$$hashKey": "object:101",
- "format": "short",
- "logBase": 1,
- "min": "0",
- "show": true
- },
- {
- "$$hashKey": "object:102",
- "format": "short",
- "logBase": 1,
- "show": true
- }
- ],
- "yaxis": {
- "align": false
- }
+ "exemplar": true,
+ "expr": "",
+ "hide": false,
+ "interval": "",
+ "legendFormat": "",
+ "refId": "D"
+ }
+ ],
+ "thresholds": [],
+ "timeRegions": [],
+ "title": "Rate Limit",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "$$hashKey": "object:536",
+ "decimals": 0,
+ "format": "bytes",
+ "logBase": 1,
+ "show": true
},
{
- "aliasColors": {},
- "bars": false,
- "dashLength": 10,
- "dashes": false,
- "datasource": {
- "type": "prometheus",
- "uid": "$datasource"
- },
- "description": "per-second increasing rate of relaase requests.",
- "fill": 1,
- "fillGradient": 0,
- "gridPos": {
- "h": 6,
- "w": 8,
- "x": 0,
- "y": 9
- },
- "hiddenSeries": false,
- "id": 123292,
- "legend": {
- "avg": false,
- "current": false,
- "max": false,
- "min": false,
- "show": true,
- "total": false,
- "values": false
- },
- "lines": true,
- "linewidth": 1,
- "nullPointMode": "null",
- "options": {
- "alertThreshold": true
+ "$$hashKey": "object:537",
+ "format": "short",
+ "logBase": 1,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false
+ }
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "description": "Average cache hits per minute of cache operations.",
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "palette-classic"
},
- "percentage": false,
- "pluginVersion": "8.3.3",
- "pointradius": 2,
- "points": false,
- "renderer": "flot",
- "seriesOverrides": [],
- "spaceLength": 10,
- "stack": false,
- "steppedLine": false,
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "$datasource"
- },
- "exemplar": true,
- "expr": "sum(increase(milvus_querycoord_release_req_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])/120) by (status)",
- "interval": "",
- "legendFormat": "{{status}}",
- "queryType": "randomWalk",
- "refId": "A"
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "drawStyle": "line",
+ "fillOpacity": 10,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "stepAfter",
+ "lineStyle": {
+ "fill": "solid"
+ },
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": true,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
}
- ],
- "thresholds": [],
- "timeRegions": [],
- "title": "Release Request Rate",
- "tooltip": {
- "shared": true,
- "sort": 0,
- "value_type": "individual"
},
- "type": "graph",
- "xaxis": {
- "mode": "time",
- "show": true,
- "values": []
+ "mappings": [],
+ "max": 1,
+ "min": 0,
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ },
+ {
+ "color": "red",
+ "value": 80
+ }
+ ]
},
- "yaxes": [
- {
- "$$hashKey": "object:101",
- "format": "short",
- "logBase": 1,
- "min": "0",
- "show": true
- },
- {
- "$$hashKey": "object:102",
- "format": "short",
- "logBase": 1,
- "show": true
- }
- ],
- "yaxis": {
- "align": false
- }
+ "unit": "percentunit"
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 8,
+ "w": 8,
+ "x": 8,
+ "y": 59
+ },
+ "id": 123322,
+ "options": {
+ "legend": {
+ "calcs": [],
+ "displayMode": "list",
+ "placement": "bottom",
+ "showLegend": true
},
+ "tooltip": {
+ "mode": "single",
+ "sort": "none"
+ }
+ },
+ "pluginVersion": "8.3.3",
+ "targets": [
{
- "aliasColors": {},
- "bars": false,
- "dashLength": 10,
- "dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
- },
- "description": "The 99th percentile and average latency of load request over the last 2 minutes.",
- "fill": 1,
- "fillGradient": 0,
- "gridPos": {
- "h": 6,
- "w": 8,
- "x": 8,
- "y": 9
+ "uid": "${datasource}"
},
- "hiddenSeries": false,
- "id": 123294,
- "legend": {
- "avg": false,
- "current": false,
- "max": false,
- "min": false,
- "show": true,
- "total": false,
- "values": false
- },
- "lines": true,
- "linewidth": 1,
- "nullPointMode": "null",
- "options": {
- "alertThreshold": true
- },
- "percentage": false,
- "pluginVersion": "8.3.3",
- "pointradius": 2,
- "points": false,
- "renderer": "flot",
- "seriesOverrides": [],
- "spaceLength": 10,
- "stack": false,
- "steppedLine": false,
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "$datasource"
- },
- "exemplar": true,
- "expr": "histogram_quantile(0.99, sum by (le) (rate(milvus_querycoord_load_latency_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])))",
- "interval": "",
- "legendFormat": "p99-latency",
- "queryType": "randomWalk",
- "refId": "A"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "$datasource"
- },
- "exemplar": true,
- "expr": "sum(increase(milvus_querycoord_load_latency_sum{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) / sum(increase(milvus_querycoord_load_latency_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m]))",
- "hide": false,
- "interval": "",
- "legendFormat": "avg-latency",
- "refId": "B"
- }
- ],
- "thresholds": [],
- "timeRegions": [],
- "title": "Load Request Latency",
- "tooltip": {
- "shared": true,
- "sort": 0,
- "value_type": "individual"
+ "exemplar": true,
+ "expr": "sum(increase(milvus_proxy_cache_hit_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\", cache_state=\"hit\"}[2m])/120) by(cache_name, pod, node_id) / sum(increase(milvus_proxy_cache_hit_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])/120) by(cache_name, pod, node_id)",
+ "interval": "",
+ "legendFormat": "{{pod}}-{{node_id}}-{{cache_name}}",
+ "queryType": "randomWalk",
+ "refId": "A"
+ }
+ ],
+ "title": "Cache Hit rate",
+ "type": "timeseries"
+ },
+ {
+ "collapsed": false,
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "gridPos": {
+ "h": 1,
+ "w": 24,
+ "x": 0,
+ "y": 67
+ },
+ "id": 123155,
+ "panels": [],
+ "title": "Root Coordinator",
+ "type": "row"
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "description": "Number of proxy nodes which has register with etcd",
+ "fill": 1,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 8,
+ "w": 8,
+ "x": 0,
+ "y": 68
+ },
+ "hiddenSeries": false,
+ "id": 123141,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "10.2.0",
+ "pointradius": 2,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
},
- "type": "graph",
- "xaxis": {
- "mode": "time",
- "show": true,
- "values": []
+ "exemplar": true,
+ "expr": "sum(milvus_rootcoord_proxy_num{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (app_kubernetes_io_instance)",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "num",
+ "queryType": "randomWalk",
+ "refId": "A"
+ }
+ ],
+ "thresholds": [],
+ "timeRegions": [],
+ "title": "Proxy Node Num",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "$$hashKey": "object:4353",
+ "format": "short",
+ "logBase": 1,
+ "show": true
+ },
+ {
+ "$$hashKey": "object:4354",
+ "format": "short",
+ "logBase": 1,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "description": "Average, maximum and minimum values of the timestamps for time tick behind.",
+ "fill": 1,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 8,
+ "w": 8,
+ "x": 8,
+ "y": 68
+ },
+ "hiddenSeries": false,
+ "id": 123384,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "10.2.0",
+ "pointradius": 2,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
},
- "yaxes": [
- {
- "$$hashKey": "object:161",
- "format": "short",
- "logBase": 1,
- "min": "0",
- "show": true
- },
- {
- "$$hashKey": "object:162",
- "format": "short",
- "logBase": 1,
- "show": true
- }
- ],
- "yaxis": {
- "align": false
- }
+ "exemplar": true,
+ "expr": "avg(milvus_rootcoord_produce_tt_lag_ms{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (pod, node_id)",
+ "hide": false,
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "{{pod}}-{{node_id}}-avg",
+ "queryType": "randomWalk",
+ "refId": "A"
},
{
- "aliasColors": {},
- "bars": false,
- "dashLength": 10,
- "dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "description": "The 99th percentile and average latency of release request over the last 2 minutes.",
- "fill": 1,
- "fillGradient": 0,
- "gridPos": {
- "h": 6,
- "w": 8,
- "x": 16,
- "y": 9
- },
- "hiddenSeries": false,
- "id": 123313,
- "legend": {
- "avg": false,
- "current": false,
- "max": false,
- "min": false,
- "show": true,
- "total": false,
- "values": false
- },
- "lines": true,
- "linewidth": 1,
- "nullPointMode": "null",
- "options": {
- "alertThreshold": true
- },
- "percentage": false,
- "pluginVersion": "8.3.3",
- "pointradius": 2,
- "points": false,
- "renderer": "flot",
- "seriesOverrides": [],
- "spaceLength": 10,
- "stack": false,
- "steppedLine": false,
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "$datasource"
- },
- "exemplar": true,
- "expr": "histogram_quantile(0.99, sum by (le) (rate(milvus_querycoord_release_latency_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])))",
- "interval": "",
- "legendFormat": "p99-latency",
- "queryType": "randomWalk",
- "refId": "A"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "$datasource"
- },
- "exemplar": true,
- "expr": "sum(increase(milvus_querycoord_release_latency_sum{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) / sum(increase(milvus_querycoord_release_latency_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m]))",
- "hide": false,
- "interval": "",
- "legendFormat": "avg-latency",
- "refId": "B"
- }
- ],
- "thresholds": [],
- "timeRegions": [],
- "title": "Release Request Latency",
- "tooltip": {
- "shared": true,
- "sort": 0,
- "value_type": "individual"
- },
- "type": "graph",
- "xaxis": {
- "mode": "time",
- "show": true,
- "values": []
- },
- "yaxes": [
- {
- "$$hashKey": "object:161",
- "format": "short",
- "logBase": 1,
- "min": "0",
- "show": true
- },
- {
- "$$hashKey": "object:162",
- "format": "short",
- "logBase": 1,
- "show": true
- }
- ],
- "yaxis": {
- "align": false
- }
+ "exemplar": true,
+ "expr": "max(milvus_rootcoord_produce_tt_lag_ms{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (pod, node_id)",
+ "hide": false,
+ "interval": "",
+ "legendFormat": "{{pod}}-{{node_id}}-max",
+ "refId": "B"
},
{
- "aliasColors": {},
- "bars": false,
- "dashLength": 10,
- "dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
- },
- "description": "Total number of sub-load task.",
- "fill": 1,
- "fillGradient": 0,
- "gridPos": {
- "h": 6,
- "w": 8,
- "x": 0,
- "y": 15
- },
- "hiddenSeries": false,
- "id": 123295,
- "legend": {
- "avg": false,
- "current": false,
- "max": false,
- "min": false,
- "show": true,
- "total": false,
- "values": false
- },
- "lines": true,
- "linewidth": 1,
- "nullPointMode": "null",
- "options": {
- "alertThreshold": true
- },
- "percentage": false,
- "pluginVersion": "8.3.3",
- "pointradius": 2,
- "points": false,
- "renderer": "flot",
- "seriesOverrides": [],
- "spaceLength": 10,
- "stack": false,
- "steppedLine": false,
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "$datasource"
- },
- "exemplar": true,
- "expr": "sum(milvus_querycoord_child_task_num{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (app_kubernetes_io_instance)",
- "interval": "",
- "intervalFactor": 2,
- "legendFormat": "num",
- "queryType": "randomWalk",
- "refId": "A"
- }
- ],
- "thresholds": [],
- "timeRegions": [],
- "title": "Sub-Load Task",
- "tooltip": {
- "shared": true,
- "sort": 0,
- "value_type": "individual"
- },
- "type": "graph",
- "xaxis": {
- "mode": "time",
- "show": true,
- "values": []
+ "uid": "${datasource}"
},
- "yaxes": [
- {
- "$$hashKey": "object:536",
- "format": "short",
- "logBase": 1,
- "min": "0",
- "show": true
- },
- {
- "$$hashKey": "object:537",
- "format": "short",
- "logBase": 1,
- "show": true
- }
- ],
- "yaxis": {
- "align": false
- }
+ "exemplar": true,
+ "expr": "min(milvus_rootcoord_produce_tt_lag_ms{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (pod, node_id)",
+ "hide": false,
+ "interval": "",
+ "legendFormat": "{{pod}}-{{node_id}}-min",
+ "refId": "C"
+ }
+ ],
+ "thresholds": [],
+ "timeRegions": [],
+ "title": "Produced Timetick Lag Behind Now",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "$$hashKey": "object:536",
+ "decimals": 0,
+ "format": "ms",
+ "logBase": 1,
+ "show": true
},
{
- "aliasColors": {},
- "bars": false,
- "dashLength": 10,
- "dashes": false,
+ "$$hashKey": "object:537",
+ "format": "short",
+ "logBase": 1,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "description": "The 99th percentile and average latency for rootcoord to finish synchronizing timestamp messages to all pchanels.",
+ "fill": 1,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 8,
+ "w": 8,
+ "x": 16,
+ "y": 68
+ },
+ "hiddenSeries": false,
+ "id": 123338,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "10.2.0",
+ "pointradius": 2,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
- },
- "description": "Total number pf parent loading task.",
- "fill": 1,
- "fillGradient": 0,
- "gridPos": {
- "h": 6,
- "w": 8,
- "x": 8,
- "y": 15
+ "uid": "${datasource}"
},
- "hiddenSeries": false,
- "id": 123296,
- "legend": {
- "avg": false,
- "current": false,
- "max": false,
- "min": false,
- "show": true,
- "total": false,
- "values": false
- },
- "lines": true,
- "linewidth": 1,
- "nullPointMode": "null",
- "options": {
- "alertThreshold": true
- },
- "percentage": false,
- "pluginVersion": "8.3.3",
- "pointradius": 2,
- "points": false,
- "renderer": "flot",
- "seriesOverrides": [],
- "spaceLength": 10,
- "stack": false,
- "steppedLine": false,
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "$datasource"
- },
- "exemplar": true,
- "expr": "sum(milvus_querycoord_parent_task_num{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (app_kubernetes_io_instance)",
- "interval": "",
- "intervalFactor": 2,
- "legendFormat": "num",
- "queryType": "randomWalk",
- "refId": "A"
- }
- ],
- "thresholds": [],
- "timeRegions": [],
- "title": "Parent Load Task",
- "tooltip": {
- "shared": true,
- "sort": 0,
- "value_type": "individual"
- },
- "type": "graph",
- "xaxis": {
- "mode": "time",
- "show": true,
- "values": []
- },
- "yaxes": [
- {
- "$$hashKey": "object:536",
- "format": "short",
- "logBase": 1,
- "min": "0",
- "show": true
- },
- {
- "$$hashKey": "object:537",
- "format": "short",
- "logBase": 1,
- "show": true
- }
- ],
- "yaxis": {
- "align": false
- }
+ "exemplar": true,
+ "expr": "histogram_quantile(0.99, sum by (le) (rate(milvus_rootcoord_sync_timetick_latency_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])))",
+ "interval": "",
+ "legendFormat": "p99-latency",
+ "queryType": "randomWalk",
+ "refId": "A"
},
{
- "aliasColors": {},
- "bars": false,
- "dashLength": 10,
- "dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
- },
- "description": "The 99th percentile and average latency of sub-load task request over the last 2 minutes.",
- "fill": 1,
- "fillGradient": 0,
- "gridPos": {
- "h": 6,
- "w": 8,
- "x": 16,
- "y": 15
- },
- "hiddenSeries": false,
- "id": 123298,
- "legend": {
- "avg": false,
- "current": false,
- "max": false,
- "min": false,
- "show": true,
- "total": false,
- "values": false
- },
- "lines": true,
- "linewidth": 1,
- "nullPointMode": "null",
- "options": {
- "alertThreshold": true
- },
- "percentage": false,
- "pluginVersion": "8.3.3",
- "pointradius": 2,
- "points": false,
- "renderer": "flot",
- "seriesOverrides": [],
- "spaceLength": 10,
- "stack": false,
- "steppedLine": false,
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "$datasource"
- },
- "exemplar": true,
- "expr": "histogram_quantile(0.99, sum by (le) (rate(milvus_querycoord_child_task_latency_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])))",
- "interval": "",
- "legendFormat": "p99-latency",
- "queryType": "randomWalk",
- "refId": "A"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "$datasource"
- },
- "exemplar": true,
- "expr": "sum(increase(milvus_querycoord_child_task_latency_sum{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) / sum(increase(milvus_querycoord_child_task_latency_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m]))",
- "hide": false,
- "interval": "",
- "legendFormat": "avg-latency",
- "refId": "B"
- }
- ],
- "thresholds": [],
- "timeRegions": [],
- "title": "Sub-Load Task Latency",
- "tooltip": {
- "shared": true,
- "sort": 0,
- "value_type": "individual"
- },
- "type": "graph",
- "xaxis": {
- "mode": "time",
- "show": true,
- "values": []
+ "uid": "${datasource}"
},
- "yaxes": [
- {
- "$$hashKey": "object:161",
- "format": "short",
- "logBase": 1,
- "min": "0",
- "show": true
- },
- {
- "$$hashKey": "object:162",
- "format": "short",
- "logBase": 1,
- "show": true
- }
- ],
- "yaxis": {
- "align": false
- }
+ "exemplar": true,
+ "expr": "sum(increase(milvus_rootcoord_sync_timetick_latency_sum{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) / sum(increase(milvus_rootcoord_sync_timetick_latency_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m]))",
+ "hide": false,
+ "interval": "",
+ "legendFormat": "avg-latency",
+ "refId": "B"
+ }
+ ],
+ "thresholds": [],
+ "timeRegions": [],
+ "title": "Produced Timetick Time Taken",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "$$hashKey": "object:161",
+ "format": "ms",
+ "logBase": 1,
+ "min": "0",
+ "show": true
},
{
- "aliasColors": {},
- "bars": false,
- "dashLength": 10,
- "dashes": false,
+ "$$hashKey": "object:162",
+ "format": "short",
+ "logBase": 1,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "description": "The 99th percentile and average latency of DDL request over the last 2 minutes.",
+ "fill": 1,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 8,
+ "w": 8,
+ "x": 0,
+ "y": 76
+ },
+ "hiddenSeries": false,
+ "id": 123337,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "10.2.0",
+ "pointradius": 2,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
- },
- "description": "Number of Query nodes which has register with etcd.",
- "fill": 1,
- "fillGradient": 0,
- "gridPos": {
- "h": 6,
- "w": 8,
- "x": 0,
- "y": 21
+ "uid": "${datasource}"
},
- "hiddenSeries": false,
- "id": 123297,
- "legend": {
- "avg": false,
- "current": false,
- "max": false,
- "min": false,
- "show": true,
- "total": false,
- "values": false
- },
- "lines": true,
- "linewidth": 1,
- "nullPointMode": "null",
- "options": {
- "alertThreshold": true
- },
- "percentage": false,
- "pluginVersion": "8.3.3",
- "pointradius": 2,
- "points": false,
- "renderer": "flot",
- "seriesOverrides": [],
- "spaceLength": 10,
- "stack": false,
- "steppedLine": false,
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "$datasource"
- },
- "exemplar": true,
- "expr": "sum(milvus_querycoord_querynode_num{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (app_kubernetes_io_instance)",
- "interval": "",
- "intervalFactor": 2,
- "legendFormat": "num",
- "queryType": "randomWalk",
- "refId": "A"
- }
- ],
- "thresholds": [],
- "timeRegions": [],
- "title": "Query Node Num",
- "tooltip": {
- "shared": true,
- "sort": 0,
- "value_type": "individual"
- },
- "type": "graph",
- "xaxis": {
- "mode": "time",
- "show": true,
- "values": []
+ "exemplar": true,
+ "expr": "histogram_quantile(0.99, sum by (le, function_name) (rate(milvus_rootcoord_ddl_req_latency_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])))",
+ "interval": "",
+ "legendFormat": "p99-{{function_name}}",
+ "queryType": "randomWalk",
+ "refId": "A"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
},
- "yaxes": [
- {
- "$$hashKey": "object:536",
- "format": "short",
- "logBase": 1,
- "min": "0",
- "show": true
- },
- {
- "$$hashKey": "object:537",
- "format": "short",
- "logBase": 1,
- "show": true
- }
- ],
- "yaxis": {
- "align": false
- }
+ "exemplar": true,
+ "expr": "sum(increase(milvus_rootcoord_ddl_req_latency_sum{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by (function_name) / sum(increase(milvus_rootcoord_ddl_req_latency_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by (function_name)",
+ "hide": false,
+ "interval": "",
+ "legendFormat": "avg-{{function_name}}",
+ "refId": "B"
}
],
- "title": "Query Coordinator",
- "type": "row"
- },
- {
- "collapsed": false,
- "gridPos": {
- "h": 1,
- "w": 24,
- "x": 0,
- "y": 75
+ "thresholds": [],
+ "timeRegions": [],
+ "title": "DDL Request Latency",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
},
- "id": 123244,
- "panels": [],
- "title": "Query Node",
- "type": "row"
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "$$hashKey": "object:161",
+ "format": "ms",
+ "logBase": 1,
+ "min": "0",
+ "show": true
+ },
+ {
+ "$$hashKey": "object:162",
+ "format": "short",
+ "logBase": 1,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false
+ }
},
{
"aliasColors": {},
@@ -4489,19 +5514,19 @@
"dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "description": "Total number of the loaded collections in QueryNode.",
+ "description": "RootCoord stores pre-assigned timestamps in the metastore",
"fill": 1,
"fillGradient": 0,
"gridPos": {
- "h": 6,
+ "h": 8,
"w": 8,
- "x": 0,
+ "x": 8,
"y": 76
},
"hiddenSeries": false,
- "id": 123299,
+ "id": 123340,
"legend": {
"avg": false,
"current": false,
@@ -4518,7 +5543,7 @@
"alertThreshold": true
},
"percentage": false,
- "pluginVersion": "8.3.3",
+ "pluginVersion": "10.2.0",
"pointradius": 2,
"points": false,
"renderer": "flot",
@@ -4530,20 +5555,22 @@
{
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
+ "editorMode": "code",
"exemplar": true,
- "expr": "sum(milvus_querynode_collection_num{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (pod, node_id)",
+ "expr": "sum(milvus_rootcoord_timestamp_saved{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"})",
"interval": "",
- "intervalFactor": 2,
- "legendFormat": "{{pod}}-{{node_id}}",
+ "intervalFactor": 1,
+ "legendFormat": "timestamp",
"queryType": "randomWalk",
+ "range": true,
"refId": "A"
}
],
"thresholds": [],
"timeRegions": [],
- "title": "Collection Loaded Num",
+ "title": "Timestamp Saved",
"tooltip": {
"shared": true,
"sort": 0,
@@ -4557,15 +5584,14 @@
},
"yaxes": [
{
- "$$hashKey": "object:536",
- "decimals": 0,
+ "$$hashKey": "object:4353",
"format": "short",
"logBase": 1,
"min": "0",
"show": true
},
{
- "$$hashKey": "object:537",
+ "$$hashKey": "object:4354",
"format": "short",
"logBase": 1,
"show": true
@@ -4582,19 +5608,19 @@
"dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "description": "Total number of the loaded partitions in QueryNode.",
+ "description": "per-second increasing rate of DDL request",
"fill": 1,
"fillGradient": 0,
"gridPos": {
- "h": 6,
+ "h": 8,
"w": 8,
- "x": 8,
+ "x": 16,
"y": 76
},
"hiddenSeries": false,
- "id": 123303,
+ "id": 123347,
"legend": {
"avg": false,
"current": false,
@@ -4611,7 +5637,7 @@
"alertThreshold": true
},
"percentage": false,
- "pluginVersion": "8.3.3",
+ "pluginVersion": "10.2.0",
"pointradius": 2,
"points": false,
"renderer": "flot",
@@ -4623,20 +5649,19 @@
{
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
"exemplar": true,
- "expr": "sum(milvus_querynode_partition_num{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (pod, node_id)",
+ "expr": "sum(increase(milvus_rootcoord_ddl_req_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])/120) by (status, function_name)",
"interval": "",
- "intervalFactor": 2,
- "legendFormat": "{{pod}}-{{node_id}}",
+ "legendFormat": "{{function_name}}-{{status}}",
"queryType": "randomWalk",
"refId": "A"
}
],
"thresholds": [],
"timeRegions": [],
- "title": "Partition Loaded Num",
+ "title": "DDL Request Rate",
"tooltip": {
"shared": true,
"sort": 0,
@@ -4650,15 +5675,14 @@
},
"yaxes": [
{
- "$$hashKey": "object:536",
- "decimals": 0,
+ "$$hashKey": "object:1456",
"format": "short",
"logBase": 1,
"min": "0",
"show": true
},
{
- "$$hashKey": "object:537",
+ "$$hashKey": "object:1457",
"format": "short",
"logBase": 1,
"show": true
@@ -4675,19 +5699,19 @@
"dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "description": "Total number of the loaded segment in QueryNode.",
+ "description": "RoootCoord current latest timestamp",
"fill": 1,
"fillGradient": 0,
"gridPos": {
- "h": 6,
+ "h": 8,
"w": 8,
- "x": 16,
- "y": 76
+ "x": 0,
+ "y": 84
},
"hiddenSeries": false,
- "id": 123305,
+ "id": 123339,
"legend": {
"avg": false,
"current": false,
@@ -4704,32 +5728,34 @@
"alertThreshold": true
},
"percentage": false,
- "pluginVersion": "8.3.3",
+ "pluginVersion": "10.2.0",
"pointradius": 2,
"points": false,
"renderer": "flot",
"seriesOverrides": [],
"spaceLength": 10,
- "stack": true,
+ "stack": false,
"steppedLine": false,
"targets": [
{
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
+ "editorMode": "code",
"exemplar": true,
- "expr": "sum(milvus_querynode_segment_num{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (pod, node_id, segment_state)",
+ "expr": "sum(milvus_rootcoord_timestamp{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"})",
"interval": "",
- "intervalFactor": 2,
- "legendFormat": "{{pod}}-{{node_id}}-{{segment_state}}",
+ "intervalFactor": 1,
+ "legendFormat": "timestamp",
"queryType": "randomWalk",
+ "range": true,
"refId": "A"
}
],
"thresholds": [],
"timeRegions": [],
- "title": "Segment Loaded Num",
+ "title": "Timestamp",
"tooltip": {
"shared": true,
"sort": 0,
@@ -4743,15 +5769,14 @@
},
"yaxes": [
{
- "$$hashKey": "object:536",
- "decimals": 0,
+ "$$hashKey": "object:4353",
"format": "short",
"logBase": 1,
"min": "0",
"show": true
},
{
- "$$hashKey": "object:537",
+ "$$hashKey": "object:4354",
"format": "short",
"logBase": 1,
"show": true
@@ -4768,19 +5793,19 @@
"dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "P1809F7CD0C75ACF3"
+ "uid": "${datasource}"
},
- "description": "Average, maximum and minimum values of the timestamps for time tick behind.",
+ "description": "The number of DML channels",
"fill": 1,
"fillGradient": 0,
"gridPos": {
- "h": 6,
+ "h": 8,
"w": 8,
- "x": 0,
- "y": 82
+ "x": 8,
+ "y": 84
},
"hiddenSeries": false,
- "id": 123385,
+ "id": 123345,
"legend": {
"avg": false,
"current": false,
@@ -4797,7 +5822,7 @@
"alertThreshold": true
},
"percentage": false,
- "pluginVersion": "8.3.3",
+ "pluginVersion": "10.2.0",
"pointradius": 2,
"points": false,
"renderer": "flot",
@@ -4809,45 +5834,20 @@
{
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
"exemplar": true,
- "expr": "avg(milvus_querynode_consume_tt_lag_ms{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\", msg_type=\"insert\"}) by (pod, node_id)",
- "hide": false,
+ "expr": "sum(milvus_rootcoord_dml_channel_num{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (app_kubernetes_io_instance)",
"interval": "",
"intervalFactor": 2,
- "legendFormat": "{{pod}}-{{node_id}}-avg",
+ "legendFormat": "num",
"queryType": "randomWalk",
"refId": "A"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "$datasource"
- },
- "exemplar": true,
- "expr": "max(milvus_querynode_consume_tt_lag_ms{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\", msg_type=\"insert\"}) by (pod, node_id)",
- "hide": false,
- "interval": "",
- "legendFormat": "{{pod}}-{{node_id}}-max",
- "refId": "B"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "$datasource"
- },
- "exemplar": true,
- "expr": "min(milvus_querynode_consume_tt_lag_ms{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\", msg_type=\"insert\"}) by (pod, node_id)",
- "hide": false,
- "interval": "",
- "legendFormat": "{{pod}}-{{node_id}}-min",
- "refId": "C"
}
],
"thresholds": [],
"timeRegions": [],
- "title": "TimeTick Lag Behind Now (Consumed Insert)",
+ "title": "DML Channel Num",
"tooltip": {
"shared": true,
"sort": 0,
@@ -4861,14 +5861,14 @@
},
"yaxes": [
{
- "$$hashKey": "object:536",
- "decimals": 0,
- "format": "ms",
+ "$$hashKey": "object:4353",
+ "format": "short",
"logBase": 1,
+ "min": "0",
"show": true
},
{
- "$$hashKey": "object:537",
+ "$$hashKey": "object:4354",
"format": "short",
"logBase": 1,
"show": true
@@ -4885,19 +5885,19 @@
"dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "P1809F7CD0C75ACF3"
+ "uid": "${datasource}"
},
- "description": "Average, maximum and minimum values of the timestamps for time tick behind.",
+ "description": "per-second increasing rate of IDs assigned by RootCoord",
"fill": 1,
"fillGradient": 0,
"gridPos": {
- "h": 6,
+ "h": 8,
"w": 8,
- "x": 8,
- "y": 82
+ "x": 16,
+ "y": 84
},
"hiddenSeries": false,
- "id": 123386,
+ "id": 123221,
"legend": {
"avg": false,
"current": false,
@@ -4914,7 +5914,7 @@
"alertThreshold": true
},
"percentage": false,
- "pluginVersion": "8.3.3",
+ "pluginVersion": "10.2.0",
"pointradius": 2,
"points": false,
"renderer": "flot",
@@ -4926,45 +5926,19 @@
{
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
"exemplar": true,
- "expr": "avg(milvus_querynode_consume_tt_lag_ms{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\", msg_type=\"delete\"}) by (pod, node_id)",
- "hide": false,
+ "expr": "sum(increase(milvus_rootcoord_id_alloc_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])/120)",
"interval": "",
- "intervalFactor": 2,
- "legendFormat": "{{pod}}-{{node_id}}-avg",
+ "legendFormat": "total",
"queryType": "randomWalk",
"refId": "A"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "$datasource"
- },
- "exemplar": true,
- "expr": "max(milvus_querynode_consume_tt_lag_ms{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\", msg_type=\"delete\"}) by (pod, node_id)",
- "hide": false,
- "interval": "",
- "legendFormat": "{{pod}}-{{node_id}}-max",
- "refId": "B"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "$datasource"
- },
- "exemplar": true,
- "expr": "min(milvus_querynode_consume_tt_lag_ms{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\", msg_type=\"delete\"}) by (pod, node_id)",
- "hide": false,
- "interval": "",
- "legendFormat": "{{pod}}-{{node_id}}-min",
- "refId": "C"
}
],
"thresholds": [],
"timeRegions": [],
- "title": "TimeTick Lag Behind Now (Consumed Delete)",
+ "title": "ID Alloc Rate",
"tooltip": {
"shared": true,
"sort": 0,
@@ -4978,14 +5952,14 @@
},
"yaxes": [
{
- "$$hashKey": "object:536",
- "decimals": 0,
- "format": "ms",
+ "$$hashKey": "object:1456",
+ "format": "short",
"logBase": 1,
+ "min": "0",
"show": true
},
{
- "$$hashKey": "object:537",
+ "$$hashKey": "object:1457",
"format": "short",
"logBase": 1,
"show": true
@@ -5002,19 +5976,19 @@
"dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "description": "per-second increasing rate of consuming message",
+ "description": "The number of partitions.",
"fill": 1,
"fillGradient": 0,
"gridPos": {
- "h": 6,
+ "h": 8,
"w": 8,
- "x": 16,
- "y": 82
+ "x": 0,
+ "y": 92
},
"hiddenSeries": false,
- "id": 123387,
+ "id": 123344,
"legend": {
"avg": false,
"current": false,
@@ -5031,7 +6005,7 @@
"alertThreshold": true
},
"percentage": false,
- "pluginVersion": "8.3.3",
+ "pluginVersion": "10.2.0",
"pointradius": 2,
"points": false,
"renderer": "flot",
@@ -5043,32 +6017,20 @@
{
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
"exemplar": true,
- "expr": "sum(increase(milvus_querynode_consume_msg_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])/120) by (pod, node_id, msg_type)",
- "hide": false,
+ "expr": "sum(milvus_rootcoord_partition_num{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (app_kubernetes_io_instance)",
"interval": "",
- "legendFormat": "{{pod}}-{{node_id}}-{{msg_type}}",
+ "intervalFactor": 2,
+ "legendFormat": "num",
"queryType": "randomWalk",
"refId": "A"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "$datasource"
- },
- "exemplar": true,
- "expr": "sum(increase(milvus_querynode_consume_msg_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])/120) by (pod, node_id)",
- "hide": false,
- "interval": "",
- "legendFormat": "{{pod}}-{{node_id}}-all",
- "refId": "B"
}
],
"thresholds": [],
"timeRegions": [],
- "title": "Consumed Message Rate",
+ "title": "Partition Num",
"tooltip": {
"shared": true,
"sort": 0,
@@ -5082,14 +6044,14 @@
},
"yaxes": [
{
- "$$hashKey": "object:3414",
- "format": "cps",
+ "$$hashKey": "object:4353",
+ "format": "short",
"logBase": 1,
"min": "0",
"show": true
},
{
- "$$hashKey": "object:3415",
+ "$$hashKey": "object:4354",
"format": "short",
"logBase": 1,
"show": true
@@ -5106,19 +6068,25 @@
"dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
+ },
+ "description": "The max time tick delay of flow graphs. unit ms",
+ "fieldConfig": {
+ "defaults": {
+ "unit": "ms"
+ },
+ "overrides": []
},
- "description": "Total number of the queryable entities in QueryNode.",
"fill": 1,
"fillGradient": 0,
"gridPos": {
- "h": 6,
+ "h": 8,
"w": 8,
- "x": 0,
- "y": 88
+ "x": 8,
+ "y": 92
},
"hiddenSeries": false,
- "id": 123365,
+ "id": 123383,
"legend": {
"avg": false,
"current": false,
@@ -5135,7 +6103,7 @@
"alertThreshold": true
},
"percentage": false,
- "pluginVersion": "8.3.3",
+ "pluginVersion": "10.2.0",
"pointradius": 2,
"points": false,
"renderer": "flot",
@@ -5147,20 +6115,20 @@
{
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
"exemplar": true,
- "expr": "sum(milvus_querynode_entity_num{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (pod, node_id)",
+ "expr": "sum(milvus_rootcoord_time_tick_delay{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (role_name, node_id)",
"interval": "",
"intervalFactor": 2,
- "legendFormat": "{{pod}}-{{node_id}}",
+ "legendFormat": "{{role_name}}-{{node_id}}",
"queryType": "randomWalk",
"refId": "A"
}
],
"thresholds": [],
"timeRegions": [],
- "title": "Queryable Entity Num",
+ "title": "Time Tick Delay",
"tooltip": {
"shared": true,
"sort": 0,
@@ -5174,15 +6142,14 @@
},
"yaxes": [
{
- "$$hashKey": "object:536",
- "decimals": 0,
- "format": "short",
+ "$$hashKey": "object:4353",
+ "format": "ms",
"logBase": 1,
"min": "0",
"show": true
},
{
- "$$hashKey": "object:537",
+ "$$hashKey": "object:4354",
"format": "short",
"logBase": 1,
"show": true
@@ -5199,19 +6166,19 @@
"dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "description": "Total number of dml virtual channels for QueryNode watch",
+ "description": "The number of collections.",
"fill": 1,
"fillGradient": 0,
"gridPos": {
- "h": 6,
+ "h": 8,
"w": 8,
- "x": 8,
- "y": 88
+ "x": 16,
+ "y": 92
},
"hiddenSeries": false,
- "id": 123304,
+ "id": 123342,
"legend": {
"avg": false,
"current": false,
@@ -5228,7 +6195,7 @@
"alertThreshold": true
},
"percentage": false,
- "pluginVersion": "8.3.3",
+ "pluginVersion": "10.2.0",
"pointradius": 2,
"points": false,
"renderer": "flot",
@@ -5240,20 +6207,20 @@
{
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
"exemplar": true,
- "expr": "sum(milvus_querynode_dml_vchannel_num{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (pod, node_id)",
+ "expr": "sum(milvus_rootcoord_collection_num{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (app_kubernetes_io_instance)",
"interval": "",
"intervalFactor": 2,
- "legendFormat": "{{pod}}-{{node_id}}",
+ "legendFormat": "num",
"queryType": "randomWalk",
"refId": "A"
}
],
"thresholds": [],
"timeRegions": [],
- "title": "DML Virtual Channel",
+ "title": "Collection Num",
"tooltip": {
"shared": true,
"sort": 0,
@@ -5267,14 +6234,14 @@
},
"yaxes": [
{
- "$$hashKey": "object:536",
+ "$$hashKey": "object:4353",
"format": "short",
"logBase": 1,
"min": "0",
"show": true
},
{
- "$$hashKey": "object:537",
+ "$$hashKey": "object:4354",
"format": "short",
"logBase": 1,
"show": true
@@ -5291,19 +6258,19 @@
"dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "description": "Total number of delta virtual channels for QueryNode watch",
+ "description": "The number of credential",
"fill": 1,
"fillGradient": 0,
"gridPos": {
- "h": 6,
+ "h": 8,
"w": 8,
- "x": 16,
- "y": 88
+ "x": 0,
+ "y": 100
},
"hiddenSeries": false,
- "id": 123306,
+ "id": 123343,
"legend": {
"avg": false,
"current": false,
@@ -5320,7 +6287,7 @@
"alertThreshold": true
},
"percentage": false,
- "pluginVersion": "8.3.3",
+ "pluginVersion": "10.2.0",
"pointradius": 2,
"points": false,
"renderer": "flot",
@@ -5332,21 +6299,20 @@
{
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
"exemplar": true,
- "expr": "sum(milvus_querynode_delta_vchannel_num{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (pod, node_id)",
- "hide": false,
+ "expr": "sum(milvus_rootcoord_credential_num{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (app_kubernetes_io_instance)",
"interval": "",
"intervalFactor": 2,
- "legendFormat": "{{pod}}-{{node_id}}",
+ "legendFormat": "num",
"queryType": "randomWalk",
"refId": "A"
}
],
"thresholds": [],
"timeRegions": [],
- "title": "Delta Virtual Channel",
+ "title": "Credential Num",
"tooltip": {
"shared": true,
"sort": 0,
@@ -5360,14 +6326,14 @@
},
"yaxes": [
{
- "$$hashKey": "object:536",
+ "$$hashKey": "object:4353",
"format": "short",
"logBase": 1,
"min": "0",
"show": true
},
{
- "$$hashKey": "object:537",
+ "$$hashKey": "object:4354",
"format": "short",
"logBase": 1,
"show": true
@@ -5384,19 +6350,19 @@
"dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "description": "Total number of consumers in the QueryNode.",
+ "description": "The number of Msgstream objects.",
"fill": 1,
"fillGradient": 0,
"gridPos": {
- "h": 6,
+ "h": 8,
"w": 8,
- "x": 0,
- "y": 94
+ "x": 8,
+ "y": 100
},
"hiddenSeries": false,
- "id": 123307,
+ "id": 123346,
"legend": {
"avg": false,
"current": false,
@@ -5413,7 +6379,7 @@
"alertThreshold": true
},
"percentage": false,
- "pluginVersion": "8.3.3",
+ "pluginVersion": "10.2.0",
"pointradius": 2,
"points": false,
"renderer": "flot",
@@ -5425,21 +6391,20 @@
{
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
"exemplar": true,
- "expr": "sum(milvus_querynode_consumer_num{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (pod, node_id)",
- "hide": false,
+ "expr": "sum(milvus_rootcoord_msgstream_obj_num{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (app_kubernetes_io_instance)",
"interval": "",
"intervalFactor": 2,
- "legendFormat": "{{pod}}-{{node_id}}",
+ "legendFormat": "num",
"queryType": "randomWalk",
"refId": "A"
}
],
"thresholds": [],
"timeRegions": [],
- "title": "Consumer Num",
+ "title": "Msgstream Num",
"tooltip": {
"shared": true,
"sort": 0,
@@ -5453,14 +6418,14 @@
},
"yaxes": [
{
- "$$hashKey": "object:536",
+ "$$hashKey": "object:4353",
"format": "short",
"logBase": 1,
"min": "0",
"show": true
},
{
- "$$hashKey": "object:537",
+ "$$hashKey": "object:4354",
"format": "short",
"logBase": 1,
"show": true
@@ -5470,6 +6435,23 @@
"align": false
}
},
+ {
+ "collapsed": false,
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "gridPos": {
+ "h": 1,
+ "w": 24,
+ "x": 0,
+ "y": 108
+ },
+ "id": 123246,
+ "panels": [],
+ "title": "Query Coordinator",
+ "type": "row"
+ },
{
"aliasColors": {},
"bars": false,
@@ -5477,19 +6459,19 @@
"dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "description": "per-second increasing rate of searching requests.",
+ "description": "Total number of loaded collections.",
"fill": 1,
"fillGradient": 0,
"gridPos": {
- "h": 6,
+ "h": 8,
"w": 8,
- "x": 8,
- "y": 94
+ "x": 0,
+ "y": 109
},
"hiddenSeries": false,
- "id": 123350,
+ "id": 123288,
"legend": {
"avg": false,
"current": false,
@@ -5506,7 +6488,7 @@
"alertThreshold": true
},
"percentage": false,
- "pluginVersion": "8.3.3",
+ "pluginVersion": "10.2.0",
"pointradius": 2,
"points": false,
"renderer": "flot",
@@ -5518,19 +6500,20 @@
{
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
"exemplar": true,
- "expr": "sum(increase(milvus_querynode_sq_req_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])/120) by (query_type, status, pod, node_id)",
+ "expr": "sum(milvus_querycoord_collection_num{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (app_kubernetes_io_instance)",
"interval": "",
- "legendFormat": "{{pod}}-{{node_id}}-{{query_type}}-{{status}}",
+ "intervalFactor": 2,
+ "legendFormat": "num",
"queryType": "randomWalk",
"refId": "A"
}
],
"thresholds": [],
"timeRegions": [],
- "title": "Search Request Rate",
+ "title": "Collection Loaded Num",
"tooltip": {
"shared": true,
"sort": 0,
@@ -5544,14 +6527,14 @@
},
"yaxes": [
{
- "$$hashKey": "object:3414",
+ "$$hashKey": "object:536",
"format": "short",
"logBase": 1,
"min": "0",
"show": true
},
{
- "$$hashKey": "object:3415",
+ "$$hashKey": "object:537",
"format": "short",
"logBase": 1,
"show": true
@@ -5568,19 +6551,19 @@
"dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "description": "The 99th percentile and average latency of search and query request over the last 2 minutes.",
+ "description": "Total number of loaded collections.",
"fill": 1,
"fillGradient": 0,
"gridPos": {
- "h": 6,
+ "h": 8,
"w": 8,
- "x": 16,
- "y": 94
+ "x": 8,
+ "y": 109
},
"hiddenSeries": false,
- "id": 123366,
+ "id": 123403,
"legend": {
"avg": false,
"current": false,
@@ -5597,7 +6580,7 @@
"alertThreshold": true
},
"percentage": false,
- "pluginVersion": "8.3.3",
+ "pluginVersion": "10.2.0",
"pointradius": 2,
"points": false,
"renderer": "flot",
@@ -5609,31 +6592,22 @@
{
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
+ "editorMode": "code",
"exemplar": true,
- "expr": "histogram_quantile(0.99, sum by (le, pod, node_id, query_type) (rate(milvus_querynode_sq_req_latency_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])))",
+ "expr": "sum(milvus_querycoord_task_num{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (app_kubernetes_io_instance,querycoord_task_type)",
"interval": "",
- "legendFormat": "p99-{{pod}}-{{node_id}}-{{query_type}}",
+ "intervalFactor": 2,
+ "legendFormat": "{{querycoord_task_type}}",
"queryType": "randomWalk",
+ "range": true,
"refId": "A"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "$datasource"
- },
- "exemplar": true,
- "expr": "sum(increase(milvus_querynode_sq_req_latency_sum{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by(pod, node_id, query_type) / sum(increase(milvus_querynode_sq_req_latency_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by(pod, node_id, query_type)",
- "hide": false,
- "interval": "",
- "legendFormat": "avg-{{pod}}-{{node_id}}-{{query_type}}",
- "refId": "B"
}
],
"thresholds": [],
"timeRegions": [],
- "title": "Search Request Latency",
+ "title": "Task Num",
"tooltip": {
"shared": true,
"sort": 0,
@@ -5647,14 +6621,14 @@
},
"yaxes": [
{
- "$$hashKey": "object:161",
+ "$$hashKey": "object:536",
"format": "short",
"logBase": 1,
"min": "0",
"show": true
},
{
- "$$hashKey": "object:162",
+ "$$hashKey": "object:537",
"format": "short",
"logBase": 1,
"show": true
@@ -5671,19 +6645,19 @@
"dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "description": "The 99th percentile and average latency of search or query in queue over the last 2 minutes.",
+ "description": "per-second increasing rate of load requests.",
"fill": 1,
"fillGradient": 0,
"gridPos": {
- "h": 6,
+ "h": 8,
"w": 8,
- "x": 0,
- "y": 100
+ "x": 16,
+ "y": 109
},
"hiddenSeries": false,
- "id": 123372,
+ "id": 123291,
"legend": {
"avg": false,
"current": false,
@@ -5700,7 +6674,7 @@
"alertThreshold": true
},
"percentage": false,
- "pluginVersion": "8.3.3",
+ "pluginVersion": "10.2.0",
"pointradius": 2,
"points": false,
"renderer": "flot",
@@ -5712,31 +6686,19 @@
{
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
"exemplar": true,
- "expr": "histogram_quantile(0.99, sum by (le, pod, node_id, query_type) (rate(milvus_querynode_sq_queue_latency_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])))",
+ "expr": "sum(increase(milvus_querycoord_load_req_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])/120) by (status)",
"interval": "",
- "legendFormat": "p99-{{pod}}-{{node_id}}-{{query_type}}",
+ "legendFormat": "{{status}}",
"queryType": "randomWalk",
"refId": "A"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "$datasource"
- },
- "exemplar": true,
- "expr": "sum(increase(milvus_querynode_sq_queue_latency_sum{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by(pod, node_id, query_type) / sum(increase(milvus_querynode_sq_queue_latency_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by(pod, node_id, query_type)",
- "hide": false,
- "interval": "",
- "legendFormat": "avg-{{pod}}-{{node_id}}-{{query_type}}",
- "refId": "B"
}
],
"thresholds": [],
"timeRegions": [],
- "title": "Search in Queue Latency",
+ "title": "Load Request Rate",
"tooltip": {
"shared": true,
"sort": 0,
@@ -5750,14 +6712,14 @@
},
"yaxes": [
{
- "$$hashKey": "object:161",
+ "$$hashKey": "object:101",
"format": "short",
"logBase": 1,
"min": "0",
"show": true
},
{
- "$$hashKey": "object:162",
+ "$$hashKey": "object:102",
"format": "short",
"logBase": 1,
"show": true
@@ -5774,19 +6736,19 @@
"dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "description": "The 99th percentile and average latency of search segment over the last 2 minutes.",
+ "description": "Number of Query nodes which has register with etcd.",
"fill": 1,
"fillGradient": 0,
"gridPos": {
- "h": 6,
+ "h": 8,
"w": 8,
- "x": 8,
- "y": 100
+ "x": 0,
+ "y": 117
},
"hiddenSeries": false,
- "id": 123374,
+ "id": 123297,
"legend": {
"avg": false,
"current": false,
@@ -5803,7 +6765,7 @@
"alertThreshold": true
},
"percentage": false,
- "pluginVersion": "8.3.3",
+ "pluginVersion": "10.2.0",
"pointradius": 2,
"points": false,
"renderer": "flot",
@@ -5815,31 +6777,20 @@
{
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "exemplar": false,
- "expr": "histogram_quantile(0.99, sum by (le, pod, node_id, query_type, segment_state) (rate(milvus_querynode_sq_segment_latency_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])))",
+ "exemplar": true,
+ "expr": "sum(milvus_querycoord_querynode_num{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (app_kubernetes_io_instance)",
"interval": "",
- "legendFormat": "p99-{{pod}}-{{node_id}}-{{query_type}}-{{segment_state}}",
+ "intervalFactor": 2,
+ "legendFormat": "num",
"queryType": "randomWalk",
"refId": "A"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "$datasource"
- },
- "exemplar": true,
- "expr": "sum(increase(milvus_querynode_sq_segment_latency_sum{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by(pod, node_id, query_type, segment_state) / sum(increase(milvus_querynode_sq_segment_latency_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by(pod, node_id, query_type, segment_state)",
- "hide": false,
- "interval": "",
- "legendFormat": "avg-{{pod}}-{{node_id}}-{{query_type}}_{{segment_state}}",
- "refId": "B"
}
],
"thresholds": [],
"timeRegions": [],
- "title": "Search Segment Latency",
+ "title": "Query Node Num",
"tooltip": {
"shared": true,
"sort": 0,
@@ -5853,14 +6804,14 @@
},
"yaxes": [
{
- "$$hashKey": "object:161",
+ "$$hashKey": "object:536",
"format": "short",
"logBase": 1,
"min": "0",
"show": true
},
{
- "$$hashKey": "object:162",
+ "$$hashKey": "object:537",
"format": "short",
"logBase": 1,
"show": true
@@ -5877,19 +6828,19 @@
"dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "description": "The 99th percentile and average latency of search at the segcore step over the last 2 minutes.",
+ "description": "Segment Num On Stopping Node",
"fill": 1,
"fillGradient": 0,
"gridPos": {
- "h": 6,
+ "h": 8,
"w": 8,
- "x": 16,
- "y": 100
+ "x": 8,
+ "y": 117
},
"hiddenSeries": false,
- "id": 123310,
+ "id": 123439,
"legend": {
"avg": false,
"current": false,
@@ -5906,7 +6857,7 @@
"alertThreshold": true
},
"percentage": false,
- "pluginVersion": "8.3.3",
+ "pluginVersion": "10.2.0",
"pointradius": 2,
"points": false,
"renderer": "flot",
@@ -5918,31 +6869,21 @@
{
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
+ "editorMode": "code",
"exemplar": true,
- "expr": "histogram_quantile(0.99, sum by (le, query_type, pod, node_id) (rate(milvus_querynode_sq_core_latency_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])))",
+ "expr": "sum(milvus_querynode_stopping_balance_segment_num{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (pod, node_id)",
"interval": "",
- "legendFormat": "p99-{{pod}}-{{node_id}}-{{query_type}}",
+ "legendFormat": "{{pod}}-{{node_id}}",
"queryType": "randomWalk",
+ "range": true,
"refId": "A"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "$datasource"
- },
- "exemplar": true,
- "expr": "sum(increase(milvus_querynode_sq_core_latency_sum{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by(pod, node_id, query_type) / sum(increase(milvus_querynode_sq_core_latency_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by(pod, node_id, query_type)",
- "hide": false,
- "interval": "",
- "legendFormat": "avg-{{pod}}-{{node_id}}-{{query_type}}",
- "refId": "B"
}
],
"thresholds": [],
"timeRegions": [],
- "title": "Segcore Request Latency",
+ "title": "Segment Num On Stopping Node",
"tooltip": {
"shared": true,
"sort": 0,
@@ -5980,19 +6921,19 @@
"dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "description": "The 99th percentile and average latency of search or query reduce over the last 2 minutes.",
+ "description": "Channel Num On Stopping Node",
"fill": 1,
"fillGradient": 0,
"gridPos": {
- "h": 6,
+ "h": 8,
"w": 8,
- "x": 0,
- "y": 106
+ "x": 16,
+ "y": 117
},
"hiddenSeries": false,
- "id": 123367,
+ "id": 123444,
"legend": {
"avg": false,
"current": false,
@@ -6009,7 +6950,7 @@
"alertThreshold": true
},
"percentage": false,
- "pluginVersion": "8.3.3",
+ "pluginVersion": "10.2.0",
"pointradius": 2,
"points": false,
"renderer": "flot",
@@ -6021,31 +6962,21 @@
{
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
+ "editorMode": "code",
"exemplar": true,
- "expr": "histogram_quantile(0.99, sum by (le, pod, node_id, query_type) (rate(milvus_querynode_sq_reduce_latency_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])))",
+ "expr": "sum(milvus_querynode_stopping_balance_channel_num{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (pod, node_id)",
"interval": "",
- "legendFormat": "p99-{{pod}}-{{node_id}}-{{query_type}}",
+ "legendFormat": "{{pod}}-{{node_id}}",
"queryType": "randomWalk",
+ "range": true,
"refId": "A"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "$datasource"
- },
- "exemplar": true,
- "expr": "sum(increase(milvus_querynode_sq_reduce_latency_sum{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by(pod, node_id, query_type) / sum(increase(milvus_querynode_sq_reduce_latency_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by(pod, node_id, query_type)",
- "hide": false,
- "interval": "",
- "legendFormat": "avg-{{pod}}-{{node_id}}-{{query_type}}",
- "refId": "B"
}
],
"thresholds": [],
"timeRegions": [],
- "title": "Search Reduce Latency",
+ "title": "Channel Num On Stopping Node",
"tooltip": {
"shared": true,
"sort": 0,
@@ -6076,6 +7007,23 @@
"align": false
}
},
+ {
+ "collapsed": false,
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "gridPos": {
+ "h": 1,
+ "w": 24,
+ "x": 0,
+ "y": 125
+ },
+ "id": 123244,
+ "panels": [],
+ "title": "Query Node",
+ "type": "row"
+ },
{
"aliasColors": {},
"bars": false,
@@ -6083,19 +7031,19 @@
"dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "description": "The 99th percentile and average latency of load segment over the last 2 minutes.",
+ "description": "Total number of the loaded collections in QueryNode.",
"fill": 1,
"fillGradient": 0,
"gridPos": {
- "h": 6,
+ "h": 8,
"w": 8,
- "x": 8,
- "y": 106
+ "x": 0,
+ "y": 126
},
"hiddenSeries": false,
- "id": 123311,
+ "id": 123299,
"legend": {
"avg": false,
"current": false,
@@ -6112,7 +7060,7 @@
"alertThreshold": true
},
"percentage": false,
- "pluginVersion": "8.3.3",
+ "pluginVersion": "10.2.0",
"pointradius": 2,
"points": false,
"renderer": "flot",
@@ -6124,31 +7072,20 @@
{
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
"exemplar": true,
- "expr": "histogram_quantile(0.99, sum by (le, pod, node_id) (rate(milvus_querynode_load_segment_latency_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])))",
+ "expr": "sum(milvus_querynode_collection_num{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (pod, node_id)",
"interval": "",
- "legendFormat": "p99-{{pod}}-{{node_id}}",
+ "intervalFactor": 2,
+ "legendFormat": "{{pod}}-{{node_id}}",
"queryType": "randomWalk",
"refId": "A"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "$datasource"
- },
- "exemplar": true,
- "expr": "sum(increase(milvus_querynode_load_segment_latency_sum{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by(pod, node_id) / sum(increase(milvus_querynode_load_segment_latency_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by(pod, node_id)",
- "hide": false,
- "interval": "",
- "legendFormat": "avg-{{pod}}-{{node_id}}",
- "refId": "B"
}
],
"thresholds": [],
"timeRegions": [],
- "title": "Load Segment Latency",
+ "title": "Collection Loaded Num",
"tooltip": {
"shared": true,
"sort": 0,
@@ -6162,14 +7099,15 @@
},
"yaxes": [
{
- "$$hashKey": "object:161",
+ "$$hashKey": "object:536",
+ "decimals": 0,
"format": "short",
"logBase": 1,
"min": "0",
"show": true
},
{
- "$$hashKey": "object:162",
+ "$$hashKey": "object:537",
"format": "short",
"logBase": 1,
"show": true
@@ -6186,19 +7124,19 @@
"dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "description": "Total number of flowgraph",
+ "description": "Total number of the loaded partitions in QueryNode.",
"fill": 1,
"fillGradient": 0,
"gridPos": {
- "h": 6,
+ "h": 8,
"w": 8,
- "x": 16,
- "y": 106
+ "x": 8,
+ "y": 126
},
"hiddenSeries": false,
- "id": 123312,
+ "id": 123303,
"legend": {
"avg": false,
"current": false,
@@ -6215,7 +7153,7 @@
"alertThreshold": true
},
"percentage": false,
- "pluginVersion": "8.3.3",
+ "pluginVersion": "10.2.0",
"pointradius": 2,
"points": false,
"renderer": "flot",
@@ -6227,10 +7165,10 @@
{
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
"exemplar": true,
- "expr": "sum(milvus_querynode_flowgraph_num{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (pod, node_id)",
+ "expr": "sum(milvus_querynode_partition_num{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (pod, node_id)",
"interval": "",
"intervalFactor": 2,
"legendFormat": "{{pod}}-{{node_id}}",
@@ -6240,7 +7178,7 @@
],
"thresholds": [],
"timeRegions": [],
- "title": "Flowgraph Num",
+ "title": "Partition Loaded Num",
"tooltip": {
"shared": true,
"sort": 0,
@@ -6255,6 +7193,7 @@
"yaxes": [
{
"$$hashKey": "object:536",
+ "decimals": 0,
"format": "short",
"logBase": 1,
"min": "0",
@@ -6278,19 +7217,19 @@
"dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "description": "The length of the task queue for unsolved read requests",
+ "description": "Total number of the loaded segment in QueryNode.",
"fill": 1,
"fillGradient": 0,
"gridPos": {
- "h": 6,
+ "h": 8,
"w": 8,
- "x": 0,
- "y": 112
+ "x": 16,
+ "y": 126
},
"hiddenSeries": false,
- "id": 123351,
+ "id": 123305,
"legend": {
"avg": false,
"current": false,
@@ -6307,7 +7246,7 @@
"alertThreshold": true
},
"percentage": false,
- "pluginVersion": "8.3.3",
+ "pluginVersion": "10.2.0",
"pointradius": 2,
"points": false,
"renderer": "flot",
@@ -6319,20 +7258,20 @@
{
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
"exemplar": true,
- "expr": "sum(milvus_querynode_read_task_unsolved_len{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (pod, node_id)",
+ "expr": "sum(milvus_querynode_segment_num{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (pod, node_id, segment_state)",
"interval": "",
"intervalFactor": 2,
- "legendFormat": "{{pod}}-{{node_id}}",
+ "legendFormat": "{{pod}}-{{node_id}}-{{segment_state}}",
"queryType": "randomWalk",
"refId": "A"
}
],
"thresholds": [],
"timeRegions": [],
- "title": "Unsolved Read Task Length",
+ "title": "Segment Loaded Num",
"tooltip": {
"shared": true,
"sort": 0,
@@ -6347,6 +7286,7 @@
"yaxes": [
{
"$$hashKey": "object:536",
+ "decimals": 0,
"format": "short",
"logBase": 1,
"min": "0",
@@ -6370,19 +7310,19 @@
"dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "description": "The length of the task queue of read requests to be executed",
+ "description": "Average, maximum and minimum values of the timestamps for time tick behind.",
"fill": 1,
"fillGradient": 0,
"gridPos": {
- "h": 6,
+ "h": 8,
"w": 8,
- "x": 8,
- "y": 112
+ "x": 0,
+ "y": 134
},
"hiddenSeries": false,
- "id": 123356,
+ "id": 123385,
"legend": {
"avg": false,
"current": false,
@@ -6399,7 +7339,7 @@
"alertThreshold": true
},
"percentage": false,
- "pluginVersion": "8.3.3",
+ "pluginVersion": "10.2.0",
"pointradius": 2,
"points": false,
"renderer": "flot",
@@ -6411,20 +7351,45 @@
{
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
"exemplar": true,
- "expr": "sum(milvus_querynode_read_task_ready_len{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (pod, node_id)",
+ "expr": "avg(milvus_querynode_consume_tt_lag_ms{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\", msg_type=\"insert\"}) by (pod, node_id)",
+ "hide": false,
"interval": "",
"intervalFactor": 2,
- "legendFormat": "{{pod}}-{{node_id}}",
+ "legendFormat": "{{pod}}-{{node_id}}-avg",
"queryType": "randomWalk",
"refId": "A"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "exemplar": true,
+ "expr": "max(milvus_querynode_consume_tt_lag_ms{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\", msg_type=\"insert\"}) by (pod, node_id)",
+ "hide": false,
+ "interval": "",
+ "legendFormat": "{{pod}}-{{node_id}}-max",
+ "refId": "B"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "exemplar": true,
+ "expr": "min(milvus_querynode_consume_tt_lag_ms{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\", msg_type=\"insert\"}) by (pod, node_id)",
+ "hide": false,
+ "interval": "",
+ "legendFormat": "{{pod}}-{{node_id}}-min",
+ "refId": "C"
}
],
"thresholds": [],
"timeRegions": [],
- "title": "Ready Read Task Length",
+ "title": "TimeTick Lag Behind Now (Consumed Insert)",
"tooltip": {
"shared": true,
"sort": 0,
@@ -6439,9 +7404,9 @@
"yaxes": [
{
"$$hashKey": "object:536",
- "format": "short",
+ "decimals": 0,
+ "format": "ms",
"logBase": 1,
- "min": "0",
"show": true
},
{
@@ -6462,19 +7427,19 @@
"dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "description": "Number of read requests currently being executed in parallel",
+ "description": "Total number of dml virtual channels for QueryNode watch",
"fill": 1,
"fillGradient": 0,
"gridPos": {
- "h": 6,
+ "h": 8,
"w": 8,
- "x": 16,
- "y": 112
+ "x": 8,
+ "y": 134
},
"hiddenSeries": false,
- "id": 123357,
+ "id": 123304,
"legend": {
"avg": false,
"current": false,
@@ -6491,7 +7456,7 @@
"alertThreshold": true
},
"percentage": false,
- "pluginVersion": "8.3.3",
+ "pluginVersion": "10.2.0",
"pointradius": 2,
"points": false,
"renderer": "flot",
@@ -6503,10 +7468,10 @@
{
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
"exemplar": true,
- "expr": "sum(milvus_querynode_read_task_concurrency{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (pod, node_id)",
+ "expr": "sum(milvus_querynode_dml_vchannel_num{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (pod, node_id)",
"interval": "",
"intervalFactor": 2,
"legendFormat": "{{pod}}-{{node_id}}",
@@ -6516,7 +7481,7 @@
],
"thresholds": [],
"timeRegions": [],
- "title": "Parallel Read Task Num",
+ "title": "DML Virtual Channel",
"tooltip": {
"shared": true,
"sort": 0,
@@ -6554,19 +7519,19 @@
"dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "description": "cpu utilization under scheduler evaluation",
+ "description": "per-second increasing rate of consuming message",
"fill": 1,
"fillGradient": 0,
"gridPos": {
- "h": 6,
+ "h": 8,
"w": 8,
- "x": 0,
- "y": 118
+ "x": 16,
+ "y": 134
},
"hiddenSeries": false,
- "id": 123358,
+ "id": 123387,
"legend": {
"avg": false,
"current": false,
@@ -6583,7 +7548,7 @@
"alertThreshold": true
},
"percentage": false,
- "pluginVersion": "8.3.3",
+ "pluginVersion": "10.2.0",
"pointradius": 2,
"points": false,
"renderer": "flot",
@@ -6595,20 +7560,32 @@
{
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
"exemplar": true,
- "expr": "sum(milvus_querynode_estimate_cpu_usage{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (pod, node_id)",
+ "expr": "sum(increase(milvus_querynode_consume_msg_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])/120) by (pod, node_id, msg_type)",
+ "hide": false,
"interval": "",
- "intervalFactor": 2,
- "legendFormat": "{{pod}}-{{node_id}}",
+ "legendFormat": "{{pod}}-{{node_id}}-{{msg_type}}",
"queryType": "randomWalk",
"refId": "A"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "exemplar": true,
+ "expr": "sum(increase(milvus_querynode_consume_msg_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])/120) by (pod, node_id)",
+ "hide": false,
+ "interval": "",
+ "legendFormat": "{{pod}}-{{node_id}}-all",
+ "refId": "B"
}
],
"thresholds": [],
"timeRegions": [],
- "title": "Estimate CPU Usage",
+ "title": "Consumed Message Rate",
"tooltip": {
"shared": true,
"sort": 0,
@@ -6622,14 +7599,14 @@
},
"yaxes": [
{
- "$$hashKey": "object:536",
- "format": "short",
+ "$$hashKey": "object:3414",
+ "format": "cps",
"logBase": 1,
"min": "0",
"show": true
},
{
- "$$hashKey": "object:537",
+ "$$hashKey": "object:3415",
"format": "short",
"logBase": 1,
"show": true
@@ -6646,19 +7623,19 @@
"dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "description": "The number of original tasks contained in the merged search task",
+ "description": "The 99th percentile and average latency of delegator process insert/delete over the last 2 minutes.",
"fill": 1,
"fillGradient": 0,
"gridPos": {
- "h": 6,
+ "h": 8,
"w": 8,
- "x": 8,
- "y": 118
+ "x": 0,
+ "y": 142
},
"hiddenSeries": false,
- "id": 123352,
+ "id": 123438,
"legend": {
"avg": false,
"current": false,
@@ -6675,7 +7652,7 @@
"alertThreshold": true
},
"percentage": false,
- "pluginVersion": "8.3.3",
+ "pluginVersion": "10.2.0",
"pointradius": 2,
"points": false,
"renderer": "flot",
@@ -6687,31 +7664,35 @@
{
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
+ "editorMode": "code",
"exemplar": true,
- "expr": "histogram_quantile(0.99, sum by (le, pod, node_id) (rate(milvus_querynode_search_group_size_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])))",
+ "expr": "histogram_quantile(0.99, sum by (le, pod, node_id, msg_type) (rate(milvus_querynode_process_insert_or_delete_latency_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])))",
"interval": "",
- "legendFormat": "p99-{{pod}}-{{node_id}}",
+ "legendFormat": "p99-{{pod}}-{{node_id}}-{{msg_type}}",
"queryType": "randomWalk",
+ "range": true,
"refId": "A"
},
{
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
+ "editorMode": "code",
"exemplar": true,
- "expr": "sum(increase(milvus_querynode_search_group_size_sum{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by(pod, node_id) / sum(increase(milvus_querynode_search_group_size_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by(pod, node_id)",
+ "expr": "sum(increase(milvus_querynode_process_insert_or_delete_latency_sum{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by(pod, node_id, msg_type) / sum(increase(milvus_querynode_process_insert_or_delete_latency_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by(pod, node_id, msg_type)",
"hide": false,
"interval": "",
- "legendFormat": "avg-{{pod}}-{{node_id}}",
+ "legendFormat": "avg-{{pod}}-{{node_id}}-{{msg_type}}",
+ "range": true,
"refId": "B"
}
],
"thresholds": [],
"timeRegions": [],
- "title": "Search Group Size",
+ "title": "Processing Insert/Delete Latency",
"tooltip": {
"shared": true,
"sort": 0,
@@ -6726,7 +7707,7 @@
"yaxes": [
{
"$$hashKey": "object:161",
- "format": "short",
+ "format": "ms",
"logBase": 1,
"min": "0",
"show": true
@@ -6749,19 +7730,19 @@
"dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "description": "Number of queries for search requests",
+ "description": "Total number of the queryable entities in QueryNode.",
"fill": 1,
"fillGradient": 0,
"gridPos": {
- "h": 6,
+ "h": 8,
"w": 8,
- "x": 16,
- "y": 118
+ "x": 8,
+ "y": 142
},
"hiddenSeries": false,
- "id": 123361,
+ "id": 123365,
"legend": {
"avg": false,
"current": false,
@@ -6778,7 +7759,7 @@
"alertThreshold": true
},
"percentage": false,
- "pluginVersion": "8.3.3",
+ "pluginVersion": "10.2.0",
"pointradius": 2,
"points": false,
"renderer": "flot",
@@ -6790,31 +7771,34 @@
{
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
+ "editorMode": "code",
"exemplar": true,
- "expr": "histogram_quantile(0.99, sum by (le, pod, node_id) (rate(milvus_querynode_search_nq_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])))",
+ "expr": "sum(milvus_querynode_entity_num{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (pod, node_id, collection_id, segment_state)",
"interval": "",
- "legendFormat": "p99-{{pod}}-{{node_id}}",
+ "intervalFactor": 2,
+ "legendFormat": "{{pod}}-{{node_id}}-{{collection_id}}-{{segment_state}}",
"queryType": "randomWalk",
+ "range": true,
"refId": "A"
},
{
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "exemplar": true,
- "expr": "sum(increase(milvus_querynode_search_nq_sum{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by(pod, node_id) / sum(increase(milvus_querynode_search_nq_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by(pod, node_id)",
+ "editorMode": "code",
+ "expr": "sum(milvus_querynode_entity_num{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"})",
"hide": false,
- "interval": "",
- "legendFormat": "avg-{{pod}}-{{node_id}}",
+ "legendFormat": "Total",
+ "range": true,
"refId": "B"
}
],
"thresholds": [],
"timeRegions": [],
- "title": "Search NQ",
+ "title": "Queryable Entity Num",
"tooltip": {
"shared": true,
"sort": 0,
@@ -6828,14 +7812,15 @@
},
"yaxes": [
{
- "$$hashKey": "object:161",
+ "$$hashKey": "object:536",
+ "decimals": 0,
"format": "short",
"logBase": 1,
"min": "0",
"show": true
},
{
- "$$hashKey": "object:162",
+ "$$hashKey": "object:537",
"format": "short",
"logBase": 1,
"show": true
@@ -6852,19 +7837,19 @@
"dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "description": "Number of queries for the merged search requests",
+ "description": "per-second increasing rate of searching requests.",
"fill": 1,
"fillGradient": 0,
"gridPos": {
- "h": 6,
+ "h": 8,
"w": 8,
- "x": 0,
- "y": 124
+ "x": 16,
+ "y": 142
},
"hiddenSeries": false,
- "id": 123360,
+ "id": 123350,
"legend": {
"avg": false,
"current": false,
@@ -6881,7 +7866,7 @@
"alertThreshold": true
},
"percentage": false,
- "pluginVersion": "8.3.3",
+ "pluginVersion": "10.2.0",
"pointradius": 2,
"points": false,
"renderer": "flot",
@@ -6893,31 +7878,19 @@
{
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
"exemplar": true,
- "expr": "histogram_quantile(0.99, sum by (le, pod, node_id) (rate(milvus_querynode_search_group_nq_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])))",
+ "expr": "sum(increase(milvus_querynode_sq_req_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])/120) by (query_type, status, pod, node_id)",
"interval": "",
- "legendFormat": "p99-{{pod}}-{{node_id}}",
+ "legendFormat": "{{pod}}-{{node_id}}-{{query_type}}-{{status}}",
"queryType": "randomWalk",
"refId": "A"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "$datasource"
- },
- "exemplar": true,
- "expr": "sum(increase(milvus_querynode_search_group_nq_sum{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by(pod, node_id) / sum(increase(milvus_querynode_search_group_nq_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by(pod, node_id)",
- "hide": false,
- "interval": "",
- "legendFormat": "avg-milvus_querynode_search_group_nq",
- "refId": "B"
}
],
"thresholds": [],
"timeRegions": [],
- "title": "Search Group NQ",
+ "title": "Search Request Rate",
"tooltip": {
"shared": true,
"sort": 0,
@@ -6931,14 +7904,14 @@
},
"yaxes": [
{
- "$$hashKey": "object:161",
+ "$$hashKey": "object:3414",
"format": "short",
"logBase": 1,
"min": "0",
"show": true
},
{
- "$$hashKey": "object:162",
+ "$$hashKey": "object:3415",
"format": "short",
"logBase": 1,
"show": true
@@ -6955,19 +7928,19 @@
"dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "description": "Top_K for search requests",
+ "description": "search latency by phase",
"fill": 1,
"fillGradient": 0,
"gridPos": {
- "h": 6,
+ "h": 8,
"w": 8,
- "x": 8,
- "y": 124
+ "x": 0,
+ "y": 150
},
"hiddenSeries": false,
- "id": 123359,
+ "id": 123466,
"legend": {
"avg": false,
"current": false,
@@ -6984,7 +7957,7 @@
"alertThreshold": true
},
"percentage": false,
- "pluginVersion": "8.3.3",
+ "pluginVersion": "10.2.0",
"pointradius": 2,
"points": false,
"renderer": "flot",
@@ -6996,31 +7969,81 @@
{
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
+ "editorMode": "code",
"exemplar": true,
- "expr": "histogram_quantile(0.99, sum by (le, pod, node_id) (rate(milvus_querynode_search_topk_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])))",
+ "expr": "histogram_quantile(0.99, sum by (le, query_type) (rate(milvus_querynode_sq_queue_latency_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])))",
"interval": "",
- "legendFormat": "p99-{{pod}}-{{node_id}}",
+ "legendFormat": "p99-{{query_type}}-InQueue",
"queryType": "randomWalk",
+ "range": true,
"refId": "A"
},
{
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "exemplar": true,
- "expr": "sum(increase(milvus_querynode_search_topk_sum{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by(pod, node_id) / sum(increase(milvus_querynode_search_topk_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by(pod, node_id)",
+ "editorMode": "code",
+ "expr": "sum(increase(milvus_querynode_sq_queue_latency_sum{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by (query_type) / sum(increase(milvus_querynode_sq_queue_latency_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by (query_type) ",
"hide": false,
- "interval": "",
- "legendFormat": "avg-{{pod}}-{{node_id}}",
+ "legendFormat": "avg-{{query_type}}-InQueue",
+ "range": true,
"refId": "B"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "editorMode": "code",
+ "expr": "histogram_quantile(0.99, sum by (le, query_type, segment_state) (rate(milvus_querynode_sq_segment_latency_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])))",
+ "hide": false,
+ "legendFormat": "p99-{{query_type}}-{{segment_state}}-Segment",
+ "range": true,
+ "refId": "C"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "editorMode": "code",
+ "expr": "sum(increase(milvus_querynode_sq_segment_latency_sum{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by (query_type, segment_state) / sum(increase(milvus_querynode_sq_segment_latency_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by (query_type, segment_state)",
+ "hide": false,
+ "legendFormat": "avg-{{query_type}}-{{segment_state}}-Segment",
+ "range": true,
+ "refId": "D"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "editorMode": "code",
+ "expr": "histogram_quantile(0.99, sum by (le, query_type) (rate(milvus_querynode_sq_reduce_latency_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])))",
+ "hide": false,
+ "legendFormat": "p99-{{query_type}}-Reduce",
+ "range": true,
+ "refId": "E"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "editorMode": "code",
+ "expr": "(sum(increase(milvus_querynode_sq_reduce_latency_sum{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by (query_type) / sum(increase(milvus_querynode_sq_reduce_latency_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by (query_type)) ",
+ "hide": false,
+ "legendFormat": "avg-{{query_type}}-Reduce",
+ "range": true,
+ "refId": "F"
}
],
"thresholds": [],
"timeRegions": [],
- "title": "Search Top_K",
+ "title": "Search Latency By Phase",
"tooltip": {
"shared": true,
"sort": 0,
@@ -7034,14 +8057,14 @@
},
"yaxes": [
{
- "$$hashKey": "object:161",
- "format": "short",
+ "$$hashKey": "object:3414",
+ "format": "ms",
"logBase": 1,
"min": "0",
"show": true
},
{
- "$$hashKey": "object:162",
+ "$$hashKey": "object:3415",
"format": "short",
"logBase": 1,
"show": true
@@ -7058,19 +8081,25 @@
"dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
+ },
+ "description": "The 99th percentile and average latency of search segment over the last 2 minutes.",
+ "fieldConfig": {
+ "defaults": {
+ "unit": "ms"
+ },
+ "overrides": []
},
- "description": "Top_K for the merged search requests.",
"fill": 1,
"fillGradient": 0,
"gridPos": {
- "h": 6,
+ "h": 8,
"w": 8,
- "x": 16,
- "y": 124
+ "x": 8,
+ "y": 150
},
"hiddenSeries": false,
- "id": 123362,
+ "id": 123374,
"legend": {
"avg": false,
"current": false,
@@ -7087,7 +8116,7 @@
"alertThreshold": true
},
"percentage": false,
- "pluginVersion": "8.3.3",
+ "pluginVersion": "10.2.0",
"pointradius": 2,
"points": false,
"renderer": "flot",
@@ -7099,31 +8128,31 @@
{
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "exemplar": true,
- "expr": "histogram_quantile(0.99, sum by (le, pod, node_id) (rate(milvus_querynode_search_group_topk_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])))",
+ "exemplar": false,
+ "expr": "histogram_quantile(0.99, sum by (le, pod, node_id, query_type, segment_state) (rate(milvus_querynode_sq_segment_latency_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])))",
"interval": "",
- "legendFormat": "p99-{{pod}}-{{node_id}}",
+ "legendFormat": "p99-{{pod}}-{{node_id}}-{{query_type}}-{{segment_state}}",
"queryType": "randomWalk",
"refId": "A"
},
{
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
"exemplar": true,
- "expr": "sum(increase(milvus_querynode_search_group_topk_sum{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by(pod, node_id) / sum(increase(milvus_querynode_search_group_topk_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by(pod, node_id)",
+ "expr": "sum(increase(milvus_querynode_sq_segment_latency_sum{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by(pod, node_id, query_type, segment_state) / sum(increase(milvus_querynode_sq_segment_latency_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by(pod, node_id, query_type, segment_state)",
"hide": false,
"interval": "",
- "legendFormat": "avg-{{pod}}-{{node_id}}",
+ "legendFormat": "avg-{{pod}}-{{node_id}}-{{query_type}}_{{segment_state}}",
"refId": "B"
}
],
"thresholds": [],
"timeRegions": [],
- "title": "Search Group Top_K",
+ "title": "Search Segment Latency",
"tooltip": {
"shared": true,
"sort": 0,
@@ -7138,7 +8167,7 @@
"yaxes": [
{
"$$hashKey": "object:161",
- "format": "short",
+ "format": "ms",
"logBase": 1,
"min": "0",
"show": true
@@ -7161,19 +8190,19 @@
"dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "description": "per-second increasing rate of evicted read requests.",
+ "description": "The 99th percentile and average latency of search and query request over the last 2 minutes.",
"fill": 1,
"fillGradient": 0,
"gridPos": {
- "h": 6,
+ "h": 8,
"w": 8,
- "x": 0,
- "y": 130
+ "x": 16,
+ "y": 150
},
"hiddenSeries": false,
- "id": 123364,
+ "id": 123366,
"legend": {
"avg": false,
"current": false,
@@ -7190,7 +8219,7 @@
"alertThreshold": true
},
"percentage": false,
- "pluginVersion": "8.3.3",
+ "pluginVersion": "10.2.0",
"pointradius": 2,
"points": false,
"renderer": "flot",
@@ -7202,19 +8231,31 @@
{
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
"exemplar": true,
- "expr": "sum(increase(milvus_querynode_read_evicted_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])/120) by (pod, node_id)",
+ "expr": "histogram_quantile(0.99, sum by (le, pod, node_id, query_type) (rate(milvus_querynode_sq_req_latency_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])))",
"interval": "",
- "legendFormat": "{{pod}}-{{node_id}}",
+ "legendFormat": "p99-{{pod}}-{{node_id}}-{{query_type}}",
"queryType": "randomWalk",
"refId": "A"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "exemplar": true,
+ "expr": "sum(increase(milvus_querynode_sq_req_latency_sum{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by(pod, node_id, query_type) / sum(increase(milvus_querynode_sq_req_latency_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by(pod, node_id, query_type)",
+ "hide": false,
+ "interval": "",
+ "legendFormat": "avg-{{pod}}-{{node_id}}-{{query_type}}",
+ "refId": "B"
}
],
"thresholds": [],
"timeRegions": [],
- "title": "Evicted Read Requests Rate",
+ "title": "Search Request Latency",
"tooltip": {
"shared": true,
"sort": 0,
@@ -7228,14 +8269,14 @@
},
"yaxes": [
{
- "$$hashKey": "object:3414",
- "format": "short",
+ "$$hashKey": "object:161",
+ "format": "ms",
"logBase": 1,
"min": "0",
"show": true
},
{
- "$$hashKey": "object:3415",
+ "$$hashKey": "object:162",
"format": "short",
"logBase": 1,
"show": true
@@ -7246,22 +8287,25 @@
}
},
{
- "id": 123397,
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "description": "The 99th percentile and average latency of search or query in queue over the last 2 minutes.",
+ "fill": 1,
+ "fillGradient": 0,
"gridPos": {
- "h": 6,
+ "h": 8,
"w": 8,
- "x": 8,
- "y": 130
- },
- "type": "graph",
- "title": "Knowhere Search Top_K",
- "datasource": {
- "uid": "$datasource",
- "type": "prometheus"
+ "x": 0,
+ "y": 158
},
- "thresholds": [],
- "pluginVersion": "8.5.20",
- "description": "Top_K for knowhere search requests",
+ "hiddenSeries": false,
+ "id": 123372,
"legend": {
"avg": false,
"current": false,
@@ -7271,62 +8315,65 @@
"total": false,
"values": false
},
- "aliasColors": {},
- "dashLength": 10,
- "fill": 1,
"lines": true,
"linewidth": 1,
"nullPointMode": "null",
"options": {
"alertThreshold": true
},
+ "percentage": false,
+ "pluginVersion": "10.2.0",
"pointradius": 2,
+ "points": false,
"renderer": "flot",
"seriesOverrides": [],
"spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
"targets": [
{
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
"exemplar": true,
- "expr": "histogram_quantile(0.99, sum by (le, pod, node_id) (rate(knowhere_search_topk_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])))",
+ "expr": "histogram_quantile(0.99, sum by (le, pod, node_id, query_type) (rate(milvus_querynode_sq_queue_latency_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])))",
"interval": "",
- "legendFormat": "p99-{{pod}}-{{node_id}}",
+ "legendFormat": "p99-{{pod}}-{{node_id}}-{{query_type}}",
"queryType": "randomWalk",
"refId": "A"
},
{
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
"exemplar": true,
- "expr": "sum(increase(knowhere_search_topk_sum{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by(pod, node_id) / sum(increase(knowhere_search_topk_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by(pod, node_id)",
+ "expr": "sum(increase(milvus_querynode_sq_queue_latency_sum{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by(pod, node_id, query_type) / sum(increase(milvus_querynode_sq_queue_latency_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by(pod, node_id, query_type)",
"hide": false,
"interval": "",
- "legendFormat": "avg-{{pod}}-{{node_id}}",
+ "legendFormat": "avg-{{pod}}-{{node_id}}-{{query_type}}",
"refId": "B"
}
],
+ "thresholds": [],
"timeRegions": [],
+ "title": "Search in Queue Latency",
"tooltip": {
"shared": true,
"sort": 0,
"value_type": "individual"
},
+ "type": "graph",
"xaxis": {
"mode": "time",
"show": true,
- "values": [],
- "name": null,
- "buckets": null
+ "values": []
},
"yaxes": [
{
"$$hashKey": "object:161",
- "format": "short",
+ "format": "ms",
"logBase": 1,
"min": "0",
"show": true
@@ -7340,35 +8387,28 @@
],
"yaxis": {
"align": false
- },
+ }
+ },
+ {
+ "aliasColors": {},
"bars": false,
+ "dashLength": 10,
"dashes": false,
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "description": "The 99th percentile and average latency of load segment over the last 2 minutes.",
+ "fill": 1,
"fillGradient": 0,
- "hiddenSeries": false,
- "percentage": false,
- "points": false,
- "stack": false,
- "steppedLine": false,
- "timeFrom": null,
- "timeShift": null
- },
- {
- "id": 123395,
"gridPos": {
- "h": 6,
+ "h": 8,
"w": 8,
- "x": 16,
- "y": 130
+ "x": 8,
+ "y": 158
},
- "type": "graph",
- "title": "Knowhere Search Count",
- "datasource": {
- "uid": "$datasource",
- "type": "prometheus"
- },
- "thresholds": [],
- "pluginVersion": "8.5.20",
- "description": "Total number of knowhere search cnt.",
+ "hiddenSeries": false,
+ "id": 123311,
"legend": {
"avg": false,
"current": false,
@@ -7378,58 +8418,71 @@
"total": false,
"values": false
},
- "aliasColors": {},
- "dashLength": 10,
- "fill": 1,
"lines": true,
"linewidth": 1,
"nullPointMode": "null",
"options": {
"alertThreshold": true
},
+ "percentage": false,
+ "pluginVersion": "10.2.0",
"pointradius": 2,
+ "points": false,
"renderer": "flot",
"seriesOverrides": [],
"spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
"targets": [
{
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
"exemplar": true,
- "expr": "sum(knowhere_search_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (pod, node_id)",
+ "expr": "histogram_quantile(0.99, sum by (le, pod, node_id) (rate(milvus_querynode_load_segment_latency_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])))",
"interval": "",
- "intervalFactor": 2,
- "legendFormat": "{{pod}}-{{node_id}}",
+ "legendFormat": "p99-{{pod}}-{{node_id}}",
"queryType": "randomWalk",
"refId": "A"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "exemplar": true,
+ "expr": "sum(increase(milvus_querynode_load_segment_latency_sum{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by(pod, node_id) / sum(increase(milvus_querynode_load_segment_latency_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by(pod, node_id)",
+ "hide": false,
+ "interval": "",
+ "legendFormat": "avg-{{pod}}-{{node_id}}",
+ "refId": "B"
}
],
+ "thresholds": [],
"timeRegions": [],
+ "title": "Load Segment Latency",
"tooltip": {
"shared": true,
"sort": 0,
"value_type": "individual"
},
+ "type": "graph",
"xaxis": {
"mode": "time",
"show": true,
- "values": [],
- "name": null,
- "buckets": null
+ "values": []
},
"yaxes": [
{
- "$$hashKey": "object:536",
- "decimals": 0,
- "format": "short",
+ "$$hashKey": "object:161",
+ "format": "ms",
"logBase": 1,
"min": "0",
"show": true
},
{
- "$$hashKey": "object:537",
+ "$$hashKey": "object:162",
"format": "short",
"logBase": 1,
"show": true
@@ -7437,35 +8490,28 @@
],
"yaxis": {
"align": false
- },
+ }
+ },
+ {
+ "aliasColors": {},
"bars": false,
+ "dashLength": 10,
"dashes": false,
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "description": "The 99th percentile and average latency of search at the segcore step over the last 2 minutes.",
+ "fill": 1,
"fillGradient": 0,
- "hiddenSeries": false,
- "percentage": false,
- "points": false,
- "stack": false,
- "steppedLine": false,
- "timeFrom": null,
- "timeShift": null
- },
- {
- "id": 123396,
"gridPos": {
- "h": 6,
+ "h": 8,
"w": 8,
- "x": 0,
- "y": 136
- },
- "type": "graph",
- "title": "Knowhere Range Search Count",
- "datasource": {
- "uid": "$datasource",
- "type": "prometheus"
+ "x": 16,
+ "y": 158
},
- "thresholds": [],
- "pluginVersion": "8.5.20",
- "description": "Total number of knowhere range search cnt.",
+ "hiddenSeries": false,
+ "id": 123310,
"legend": {
"avg": false,
"current": false,
@@ -7475,58 +8521,71 @@
"total": false,
"values": false
},
- "aliasColors": {},
- "dashLength": 10,
- "fill": 1,
"lines": true,
"linewidth": 1,
"nullPointMode": "null",
"options": {
"alertThreshold": true
},
+ "percentage": false,
+ "pluginVersion": "10.2.0",
"pointradius": 2,
+ "points": false,
"renderer": "flot",
"seriesOverrides": [],
"spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
"targets": [
{
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
"exemplar": true,
- "expr": "sum(knowhere_range_search_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (pod, node_id)",
+ "expr": "histogram_quantile(0.99, sum by (le, query_type, pod, node_id) (rate(milvus_querynode_sq_core_latency_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])))",
"interval": "",
- "intervalFactor": 2,
- "legendFormat": "{{pod}}-{{node_id}}",
+ "legendFormat": "p99-{{pod}}-{{node_id}}-{{query_type}}",
"queryType": "randomWalk",
"refId": "A"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "exemplar": true,
+ "expr": "sum(increase(milvus_querynode_sq_core_latency_sum{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by(pod, node_id, query_type) / sum(increase(milvus_querynode_sq_core_latency_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by(pod, node_id, query_type)",
+ "hide": false,
+ "interval": "",
+ "legendFormat": "avg-{{pod}}-{{node_id}}-{{query_type}}",
+ "refId": "B"
}
],
+ "thresholds": [],
"timeRegions": [],
+ "title": "Segcore Request Latency",
"tooltip": {
"shared": true,
"sort": 0,
"value_type": "individual"
},
+ "type": "graph",
"xaxis": {
"mode": "time",
"show": true,
- "values": [],
- "name": null,
- "buckets": null
+ "values": []
},
"yaxes": [
{
- "$$hashKey": "object:536",
- "decimals": 0,
- "format": "short",
+ "$$hashKey": "object:161",
+ "format": "ms",
"logBase": 1,
"min": "0",
"show": true
},
{
- "$$hashKey": "object:537",
+ "$$hashKey": "object:162",
"format": "short",
"logBase": 1,
"show": true
@@ -7534,30 +8593,7 @@
],
"yaxis": {
"align": false
- },
- "bars": false,
- "dashes": false,
- "fillGradient": 0,
- "hiddenSeries": false,
- "percentage": false,
- "points": false,
- "stack": false,
- "steppedLine": false,
- "timeFrom": null,
- "timeShift": null
- },
- {
- "collapsed": false,
- "gridPos": {
- "h": 1,
- "w": 24,
- "x": 0,
- "y": 136
- },
- "id": 123172,
- "panels": [],
- "title": "Data Coordinator",
- "type": "row"
+ }
},
{
"aliasColors": {},
@@ -7566,19 +8602,19 @@
"dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "description": "Number of data nodes which has register with etcd.",
+ "description": "The 99th percentile and average latency of search or query reduce over the last 2 minutes.",
"fill": 1,
"fillGradient": 0,
"gridPos": {
- "h": 6,
+ "h": 8,
"w": 8,
"x": 0,
- "y": 137
+ "y": 166
},
"hiddenSeries": false,
- "id": 123207,
+ "id": 123367,
"legend": {
"avg": false,
"current": false,
@@ -7595,7 +8631,7 @@
"alertThreshold": true
},
"percentage": false,
- "pluginVersion": "8.3.3",
+ "pluginVersion": "10.2.0",
"pointradius": 2,
"points": false,
"renderer": "flot",
@@ -7607,20 +8643,31 @@
{
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
"exemplar": true,
- "expr": "sum(milvus_datacoord_datanode_num{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (app_kubernetes_io_instance)",
+ "expr": "histogram_quantile(0.99, sum by (le, pod, node_id, query_type) (rate(milvus_querynode_sq_reduce_latency_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])))",
"interval": "",
- "intervalFactor": 2,
- "legendFormat": "total",
+ "legendFormat": "p99-{{pod}}-{{node_id}}-{{query_type}}",
"queryType": "randomWalk",
"refId": "A"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "exemplar": true,
+ "expr": "sum(increase(milvus_querynode_sq_reduce_latency_sum{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by(pod, node_id, query_type) / sum(increase(milvus_querynode_sq_reduce_latency_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by(pod, node_id, query_type)",
+ "hide": false,
+ "interval": "",
+ "legendFormat": "avg-{{pod}}-{{node_id}}-{{query_type}}",
+ "refId": "B"
}
],
"thresholds": [],
"timeRegions": [],
- "title": "Data Node Num",
+ "title": "Search Reduce Latency",
"tooltip": {
"shared": true,
"sort": 0,
@@ -7634,14 +8681,14 @@
},
"yaxes": [
{
- "$$hashKey": "object:536",
- "format": "short",
+ "$$hashKey": "object:161",
+ "format": "ms",
"logBase": 1,
"min": "0",
"show": true
},
{
- "$$hashKey": "object:537",
+ "$$hashKey": "object:162",
"format": "short",
"logBase": 1,
"show": true
@@ -7658,19 +8705,19 @@
"dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "P1809F7CD0C75ACF3"
+ "uid": "${datasource}"
},
- "description": "Average, maximum and minimum values of the timestamps for time tick lag behind now from datanode.",
+ "description": "The length of the task queue of read requests to be executed",
"fill": 1,
"fillGradient": 0,
"gridPos": {
- "h": 6,
+ "h": 8,
"w": 8,
"x": 8,
- "y": 137
+ "y": 166
},
"hiddenSeries": false,
- "id": 123390,
+ "id": 123356,
"legend": {
"avg": false,
"current": false,
@@ -7687,7 +8734,7 @@
"alertThreshold": true
},
"percentage": false,
- "pluginVersion": "8.3.3",
+ "pluginVersion": "10.2.0",
"pointradius": 2,
"points": false,
"renderer": "flot",
@@ -7699,45 +8746,20 @@
{
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
"exemplar": true,
- "expr": "avg(milvus_datacoord_consume_datanode_tt_lag_ms{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (pod, node_id)",
- "hide": false,
+ "expr": "sum(milvus_querynode_read_task_ready_len{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (pod, node_id)",
"interval": "",
"intervalFactor": 2,
- "legendFormat": "{{pod}}-{{node_id}}-avg",
+ "legendFormat": "{{pod}}-{{node_id}}",
"queryType": "randomWalk",
"refId": "A"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "$datasource"
- },
- "exemplar": true,
- "expr": "max(milvus_datacoord_consume_datanode_tt_lag_ms{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (pod, node_id)",
- "hide": false,
- "interval": "",
- "legendFormat": "{{pod}}-{{node_id}}-max",
- "refId": "B"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "$datasource"
- },
- "exemplar": true,
- "expr": "min(milvus_datacoord_consume_datanode_tt_lag_ms{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (pod, node_id)",
- "hide": false,
- "interval": "",
- "legendFormat": "{{pod}}-{{node_id}}-min",
- "refId": "C"
}
],
"thresholds": [],
"timeRegions": [],
- "title": "TimeTick Lag Behind Now From DataNode",
+ "title": "Ready Read Task Length",
"tooltip": {
"shared": true,
"sort": 0,
@@ -7752,9 +8774,9 @@
"yaxes": [
{
"$$hashKey": "object:536",
- "decimals": 0,
- "format": "ms",
+ "format": "short",
"logBase": 1,
+ "min": "0",
"show": true
},
{
@@ -7775,19 +8797,19 @@
"dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "description": "The number of rows of valid data accumulated in DataCoord that flushed.",
+ "description": "The 99th percentile and average latency of search at the segcore step over the last 2 minutes.",
"fill": 1,
"fillGradient": 0,
"gridPos": {
- "h": 6,
+ "h": 8,
"w": 8,
"x": 16,
- "y": 137
+ "y": 166
},
"hiddenSeries": false,
- "id": 123269,
+ "id": 123435,
"legend": {
"avg": false,
"current": false,
@@ -7804,7 +8826,7 @@
"alertThreshold": true
},
"percentage": false,
- "pluginVersion": "8.3.3",
+ "pluginVersion": "10.2.0",
"pointradius": 2,
"points": false,
"renderer": "flot",
@@ -7816,20 +8838,31 @@
{
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
"exemplar": true,
- "expr": "sum(milvus_datacoord_stored_rows_num{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (app_kubernetes_io_instance)",
+ "expr": "histogram_quantile(0.99, sum by (le, pod, node_id, query_type) (rate(milvus_querynode_sq_wait_tsafe_latency_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])))",
"interval": "",
- "intervalFactor": 2,
- "legendFormat": "row",
+ "legendFormat": "p99-{{pod}}-{{node_id}}-{{query_type}}",
"queryType": "randomWalk",
"refId": "A"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "exemplar": true,
+ "expr": "sum(increase(milvus_querynode_sq_wait_tsafe_latency_sum{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by(pod, node_id, query_type) / sum(increase(milvus_querynode_sq_wait_tsafe_latency_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by(pod, node_id, query_type)",
+ "hide": false,
+ "interval": "",
+ "legendFormat": "avg-{{pod}}-{{node_id}}-{{query_type}}",
+ "refId": "B"
}
],
"thresholds": [],
"timeRegions": [],
- "title": "Stored Rows",
+ "title": "Wait tSafe Latency",
"tooltip": {
"shared": true,
"sort": 0,
@@ -7843,14 +8876,14 @@
},
"yaxes": [
{
- "$$hashKey": "object:536",
- "format": "short",
+ "$$hashKey": "object:161",
+ "format": "ms",
"logBase": 1,
"min": "0",
"show": true
},
{
- "$$hashKey": "object:537",
+ "$$hashKey": "object:162",
"format": "short",
"logBase": 1,
"show": true
@@ -7867,19 +8900,19 @@
"dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "description": "per-second increasing rate of data flushed.",
+ "description": "The length of the task queue for unsolved read requests",
"fill": 1,
"fillGradient": 0,
"gridPos": {
- "h": 6,
+ "h": 8,
"w": 8,
"x": 0,
- "y": 143
+ "y": 174
},
"hiddenSeries": false,
- "id": 123371,
+ "id": 123351,
"legend": {
"avg": false,
"current": false,
@@ -7896,7 +8929,7 @@
"alertThreshold": true
},
"percentage": false,
- "pluginVersion": "8.3.3",
+ "pluginVersion": "10.2.0",
"pointradius": 2,
"points": false,
"renderer": "flot",
@@ -7908,11 +8941,12 @@
{
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
"exemplar": true,
- "expr": "sum(increase(milvus_datacoord_stored_rows_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])/120) by (pod, node_id)",
+ "expr": "sum(milvus_querynode_read_task_unsolved_len{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (pod, node_id)",
"interval": "",
+ "intervalFactor": 2,
"legendFormat": "{{pod}}-{{node_id}}",
"queryType": "randomWalk",
"refId": "A"
@@ -7920,7 +8954,7 @@
],
"thresholds": [],
"timeRegions": [],
- "title": "Stored Rows Rate",
+ "title": "Unsolved Read Task Length",
"tooltip": {
"shared": true,
"sort": 0,
@@ -7934,14 +8968,14 @@
},
"yaxes": [
{
- "$$hashKey": "object:3414",
+ "$$hashKey": "object:536",
"format": "short",
"logBase": 1,
"min": "0",
"show": true
},
{
- "$$hashKey": "object:3415",
+ "$$hashKey": "object:537",
"format": "short",
"logBase": 1,
"show": true
@@ -7958,19 +8992,19 @@
"dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "description": "Number of segments with different states in the Meta of DataCoord",
+ "description": "Number of queries for search requests",
"fill": 1,
"fillGradient": 0,
"gridPos": {
- "h": 6,
+ "h": 8,
"w": 8,
"x": 8,
- "y": 143
+ "y": 174
},
"hiddenSeries": false,
- "id": 123267,
+ "id": 123361,
"legend": {
"avg": false,
"current": false,
@@ -7987,7 +9021,7 @@
"alertThreshold": true
},
"percentage": false,
- "pluginVersion": "8.3.3",
+ "pluginVersion": "10.2.0",
"pointradius": 2,
"points": false,
"renderer": "flot",
@@ -7999,20 +9033,31 @@
{
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
"exemplar": true,
- "expr": "sum(milvus_datacoord_segment_num{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (segment_state)",
+ "expr": "histogram_quantile(0.99, sum by (le, pod, node_id) (rate(milvus_querynode_search_nq_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])))",
"interval": "",
- "intervalFactor": 2,
- "legendFormat": "{{segment_state}}",
+ "legendFormat": "p99-{{pod}}-{{node_id}}",
"queryType": "randomWalk",
"refId": "A"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "exemplar": true,
+ "expr": "sum(increase(milvus_querynode_search_nq_sum{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by(pod, node_id) / sum(increase(milvus_querynode_search_nq_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by(pod, node_id)",
+ "hide": false,
+ "interval": "",
+ "legendFormat": "avg-{{pod}}-{{node_id}}",
+ "refId": "B"
}
],
"thresholds": [],
"timeRegions": [],
- "title": "Segment Num",
+ "title": "Search NQ",
"tooltip": {
"shared": true,
"sort": 0,
@@ -8026,14 +9071,14 @@
},
"yaxes": [
{
- "$$hashKey": "object:536",
+ "$$hashKey": "object:161",
"format": "short",
"logBase": 1,
"min": "0",
"show": true
},
{
- "$$hashKey": "object:537",
+ "$$hashKey": "object:162",
"format": "short",
"logBase": 1,
"show": true
@@ -8050,19 +9095,19 @@
"dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "description": "binlog size of all collections/segments, unit byte",
+ "description": "Total number of flowgraph",
"fill": 1,
"fillGradient": 0,
"gridPos": {
- "h": 6,
+ "h": 8,
"w": 8,
"x": 16,
- "y": 143
+ "y": 174
},
"hiddenSeries": false,
- "id": 123382,
+ "id": 123312,
"legend": {
"avg": false,
"current": false,
@@ -8079,7 +9124,7 @@
"alertThreshold": true
},
"percentage": false,
- "pluginVersion": "8.3.3",
+ "pluginVersion": "10.2.0",
"pointradius": 2,
"points": false,
"renderer": "flot",
@@ -8091,20 +9136,20 @@
{
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
"exemplar": true,
- "expr": "sum(milvus_datacoord_stored_binlog_size{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (app_kubernetes_io_instance)",
+ "expr": "sum(milvus_querynode_flowgraph_num{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (pod, node_id)",
"interval": "",
"intervalFactor": 2,
- "legendFormat": "size",
+ "legendFormat": "{{pod}}-{{node_id}}",
"queryType": "randomWalk",
"refId": "A"
}
],
"thresholds": [],
"timeRegions": [],
- "title": "Stored Binlog Size",
+ "title": "Flowgraph Num",
"tooltip": {
"shared": true,
"sort": 0,
@@ -8119,7 +9164,7 @@
"yaxes": [
{
"$$hashKey": "object:536",
- "format": "bytes",
+ "format": "short",
"logBase": 1,
"min": "0",
"show": true
@@ -8135,19 +9180,6 @@
"align": false
}
},
- {
- "collapsed": false,
- "gridPos": {
- "h": 1,
- "w": 24,
- "x": 0,
- "y": 149
- },
- "id": 123242,
- "panels": [],
- "title": "Data Node",
- "type": "row"
- },
{
"aliasColors": {},
"bars": false,
@@ -8155,19 +9187,19 @@
"dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "description": "Total number of flowgraph",
+ "description": "Number of queries for the merged search requests",
"fill": 1,
"fillGradient": 0,
"gridPos": {
- "h": 6,
+ "h": 8,
"w": 8,
"x": 0,
- "y": 150
+ "y": 182
},
"hiddenSeries": false,
- "id": 123272,
+ "id": 123360,
"legend": {
"avg": false,
"current": false,
@@ -8184,7 +9216,7 @@
"alertThreshold": true
},
"percentage": false,
- "pluginVersion": "8.3.3",
+ "pluginVersion": "10.2.0",
"pointradius": 2,
"points": false,
"renderer": "flot",
@@ -8196,20 +9228,31 @@
{
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
"exemplar": true,
- "expr": "sum(milvus_datanode_flowgraph_num{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (pod, node_id)",
+ "expr": "histogram_quantile(0.99, sum by (le, pod, node_id) (rate(milvus_querynode_search_group_nq_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])))",
"interval": "",
- "intervalFactor": 2,
- "legendFormat": "{{pod}}-{{node_id}}",
+ "legendFormat": "p99-{{pod}}-{{node_id}}",
"queryType": "randomWalk",
"refId": "A"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "exemplar": true,
+ "expr": "sum(increase(milvus_querynode_search_group_nq_sum{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by(pod, node_id) / sum(increase(milvus_querynode_search_group_nq_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by(pod, node_id)",
+ "hide": false,
+ "interval": "",
+ "legendFormat": "avg-milvus_querynode_search_group_nq",
+ "refId": "B"
}
],
"thresholds": [],
"timeRegions": [],
- "title": "Flowgraph Num",
+ "title": "Search Group NQ",
"tooltip": {
"shared": true,
"sort": 0,
@@ -8223,14 +9266,14 @@
},
"yaxes": [
{
- "$$hashKey": "object:536",
+ "$$hashKey": "object:161",
"format": "short",
"logBase": 1,
"min": "0",
"show": true
},
{
- "$$hashKey": "object:537",
+ "$$hashKey": "object:162",
"format": "short",
"logBase": 1,
"show": true
@@ -8247,19 +9290,19 @@
"dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "description": "Total number of prodecer created on the DataNode",
+ "description": "The number of original tasks contained in the merged search task",
"fill": 1,
"fillGradient": 0,
"gridPos": {
- "h": 6,
+ "h": 8,
"w": 8,
"x": 8,
- "y": 150
+ "y": 182
},
"hiddenSeries": false,
- "id": 123277,
+ "id": 123352,
"legend": {
"avg": false,
"current": false,
@@ -8276,7 +9319,7 @@
"alertThreshold": true
},
"percentage": false,
- "pluginVersion": "8.3.3",
+ "pluginVersion": "10.2.0",
"pointradius": 2,
"points": false,
"renderer": "flot",
@@ -8288,20 +9331,31 @@
{
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
"exemplar": true,
- "expr": "sum(milvus_datanode_producer_num{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (pod, node_id)",
+ "expr": "histogram_quantile(0.99, sum by (le, pod, node_id) (rate(milvus_querynode_search_group_size_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])))",
"interval": "",
- "intervalFactor": 2,
- "legendFormat": "{{pod}}-{{node_id}}",
+ "legendFormat": "p99-{{pod}}-{{node_id}}",
"queryType": "randomWalk",
"refId": "A"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "exemplar": true,
+ "expr": "sum(increase(milvus_querynode_search_group_size_sum{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by(pod, node_id) / sum(increase(milvus_querynode_search_group_size_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by(pod, node_id)",
+ "hide": false,
+ "interval": "",
+ "legendFormat": "avg-{{pod}}-{{node_id}}",
+ "refId": "B"
}
],
"thresholds": [],
"timeRegions": [],
- "title": "Producer Num",
+ "title": "Search Group Size",
"tooltip": {
"shared": true,
"sort": 0,
@@ -8315,14 +9369,14 @@
},
"yaxes": [
{
- "$$hashKey": "object:536",
+ "$$hashKey": "object:161",
"format": "short",
"logBase": 1,
"min": "0",
"show": true
},
{
- "$$hashKey": "object:537",
+ "$$hashKey": "object:162",
"format": "short",
"logBase": 1,
"show": true
@@ -8339,19 +9393,19 @@
"dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "P1809F7CD0C75ACF3"
+ "uid": "${datasource}"
},
- "description": "Average, maximum and minimum values of the timestamps for time tick lag behind now.",
+ "description": "Number of read requests currently being executed in parallel",
"fill": 1,
"fillGradient": 0,
"gridPos": {
- "h": 6,
+ "h": 8,
"w": 8,
"x": 16,
- "y": 150
+ "y": 182
},
"hiddenSeries": false,
- "id": 123393,
+ "id": 123357,
"legend": {
"avg": false,
"current": false,
@@ -8368,7 +9422,7 @@
"alertThreshold": true
},
"percentage": false,
- "pluginVersion": "8.3.3",
+ "pluginVersion": "10.2.0",
"pointradius": 2,
"points": false,
"renderer": "flot",
@@ -8380,45 +9434,20 @@
{
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
"exemplar": true,
- "expr": "avg(milvus_datanode_consume_tt_lag_ms{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\", msg_type=\"all\"}) by (pod, node_id)",
- "hide": false,
+ "expr": "sum(milvus_querynode_read_task_concurrency{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (pod, node_id)",
"interval": "",
"intervalFactor": 2,
- "legendFormat": "{{pod}}-{{node_id}}-avg",
+ "legendFormat": "{{pod}}-{{node_id}}",
"queryType": "randomWalk",
"refId": "A"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "$datasource"
- },
- "exemplar": true,
- "expr": "max(milvus_datanode_consume_tt_lag_ms{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\", msg_type=\"all\"}) by (pod, node_id)",
- "hide": false,
- "interval": "",
- "legendFormat": "{{pod}}-{{node_id}}-max",
- "refId": "B"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "$datasource"
- },
- "exemplar": true,
- "expr": "min(milvus_datanode_consume_tt_lag_ms{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\", msg_type=\"all\"}) by (pod, node_id)",
- "hide": false,
- "interval": "",
- "legendFormat": "{{pod}}-{{node_id}}-min",
- "refId": "C"
}
],
"thresholds": [],
"timeRegions": [],
- "title": "TimeTick Lag Behind Now (Consumed All)",
+ "title": "Parallel Read Task Num",
"tooltip": {
"shared": true,
"sort": 0,
@@ -8433,9 +9462,9 @@
"yaxes": [
{
"$$hashKey": "object:536",
- "decimals": 0,
- "format": "ms",
+ "format": "short",
"logBase": 1,
+ "min": "0",
"show": true
},
{
@@ -8456,19 +9485,19 @@
"dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "P1809F7CD0C75ACF3"
+ "uid": "${datasource}"
},
- "description": "Average, maximum and minimum values of the timestamps for time tick lag behind now, which send to DataCoord",
+ "description": "per-second increasing rate of evicted read requests.",
"fill": 1,
"fillGradient": 0,
"gridPos": {
- "h": 6,
+ "h": 8,
"w": 8,
"x": 0,
- "y": 156
+ "y": 190
},
"hiddenSeries": false,
- "id": 123388,
+ "id": 123364,
"legend": {
"avg": false,
"current": false,
@@ -8485,7 +9514,7 @@
"alertThreshold": true
},
"percentage": false,
- "pluginVersion": "8.3.3",
+ "pluginVersion": "10.2.0",
"pointradius": 2,
"points": false,
"renderer": "flot",
@@ -8497,45 +9526,19 @@
{
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
"exemplar": true,
- "expr": "avg(milvus_datanode_produce_tt_lag_ms{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (pod, node_id)",
- "hide": false,
+ "expr": "sum(increase(milvus_querynode_read_evicted_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])/120) by (pod, node_id)",
"interval": "",
- "intervalFactor": 2,
- "legendFormat": "{{pod}}-{{node_id}}-avg",
+ "legendFormat": "{{pod}}-{{node_id}}",
"queryType": "randomWalk",
"refId": "A"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "$datasource"
- },
- "exemplar": true,
- "expr": "max(milvus_datanode_produce_tt_lag_ms{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (pod, node_id)",
- "hide": false,
- "interval": "",
- "legendFormat": "{{pod}}-{{node_id}}-max",
- "refId": "B"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "$datasource"
- },
- "exemplar": true,
- "expr": "min(milvus_datanode_produce_tt_lag_ms{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (pod, node_id)",
- "hide": false,
- "interval": "",
- "legendFormat": "{{pod}}-{{node_id}}-min",
- "refId": "C"
}
],
"thresholds": [],
"timeRegions": [],
- "title": "Produced TimeTick Lag Behind Now For DC",
+ "title": "Evicted Read Requests Rate",
"tooltip": {
"shared": true,
"sort": 0,
@@ -8549,14 +9552,14 @@
},
"yaxes": [
{
- "$$hashKey": "object:536",
- "decimals": 0,
- "format": "ms",
+ "$$hashKey": "object:3414",
+ "format": "short",
"logBase": 1,
+ "min": "0",
"show": true
},
{
- "$$hashKey": "object:537",
+ "$$hashKey": "object:3415",
"format": "short",
"logBase": 1,
"show": true
@@ -8573,19 +9576,19 @@
"dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "description": "per-second increasing rate of consuming message",
+ "description": "Top_K for search requests",
"fill": 1,
"fillGradient": 0,
"gridPos": {
- "h": 6,
+ "h": 8,
"w": 8,
"x": 8,
- "y": 156
+ "y": 190
},
"hiddenSeries": false,
- "id": 123389,
+ "id": 123359,
"legend": {
"avg": false,
"current": false,
@@ -8602,7 +9605,7 @@
"alertThreshold": true
},
"percentage": false,
- "pluginVersion": "8.3.3",
+ "pluginVersion": "10.2.0",
"pointradius": 2,
"points": false,
"renderer": "flot",
@@ -8614,19 +9617,31 @@
{
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
"exemplar": true,
- "expr": "sum(increase(milvus_datanode_consume_msg_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])/120) by (pod, node_id, msg_type)",
+ "expr": "histogram_quantile(0.99, sum by (le, pod, node_id) (rate(milvus_querynode_search_topk_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])))",
"interval": "",
- "legendFormat": "{{pod}}-{{node_id}}-{{msg_type}}",
+ "legendFormat": "p99-{{pod}}-{{node_id}}",
"queryType": "randomWalk",
"refId": "A"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "exemplar": true,
+ "expr": "sum(increase(milvus_querynode_search_topk_sum{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by(pod, node_id) / sum(increase(milvus_querynode_search_topk_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by(pod, node_id)",
+ "hide": false,
+ "interval": "",
+ "legendFormat": "avg-{{pod}}-{{node_id}}",
+ "refId": "B"
}
],
"thresholds": [],
"timeRegions": [],
- "title": "Consumed Message Rate",
+ "title": "Search Top_K",
"tooltip": {
"shared": true,
"sort": 0,
@@ -8640,14 +9655,14 @@
},
"yaxes": [
{
- "$$hashKey": "object:3414",
- "format": "cps",
+ "$$hashKey": "object:161",
+ "format": "short",
"logBase": 1,
"min": "0",
"show": true
},
{
- "$$hashKey": "object:3415",
+ "$$hashKey": "object:162",
"format": "short",
"logBase": 1,
"show": true
@@ -8664,19 +9679,19 @@
"dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "description": "forward delete and timetick message to delta channel latency",
+ "description": "Top_K for the merged search requests.",
"fill": 1,
"fillGradient": 0,
"gridPos": {
- "h": 6,
+ "h": 8,
"w": 8,
"x": 16,
- "y": 156
+ "y": 190
},
"hiddenSeries": false,
- "id": 123394,
+ "id": 123362,
"legend": {
"avg": false,
"current": false,
@@ -8693,7 +9708,7 @@
"alertThreshold": true
},
"percentage": false,
- "pluginVersion": "8.3.3",
+ "pluginVersion": "10.2.0",
"pointradius": 2,
"points": false,
"renderer": "flot",
@@ -8705,31 +9720,31 @@
{
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
"exemplar": true,
- "expr": "histogram_quantile(0.99, sum by (le, pod, node_id) (rate(milvus_datanode_forward_delete_msg_time_taken_ms_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])))",
- "hide": false,
+ "expr": "histogram_quantile(0.99, sum by (le, pod, node_id) (rate(milvus_querynode_search_group_topk_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])))",
"interval": "",
"legendFormat": "p99-{{pod}}-{{node_id}}",
- "refId": "B"
+ "queryType": "randomWalk",
+ "refId": "A"
},
{
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
"exemplar": true,
- "expr": "sum(increase(milvus_datanode_forward_delete_msg_time_taken_ms_sum{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by(pod, node_id) / sum(increase(milvus_datanode_forward_delete_msg_time_taken_ms_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by(pod, node_id)",
+ "expr": "sum(increase(milvus_querynode_search_group_topk_sum{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by(pod, node_id) / sum(increase(milvus_querynode_search_group_topk_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by(pod, node_id)",
"hide": false,
"interval": "",
"legendFormat": "avg-{{pod}}-{{node_id}}",
- "refId": "C"
+ "refId": "B"
}
],
"thresholds": [],
"timeRegions": [],
- "title": "Forward Delete&Timetick Message latency",
+ "title": "Search Group Top_K",
"tooltip": {
"shared": true,
"sort": 0,
@@ -8743,14 +9758,14 @@
},
"yaxes": [
{
- "$$hashKey": "object:536",
- "decimals": 0,
- "format": "ms",
+ "$$hashKey": "object:161",
+ "format": "short",
"logBase": 1,
+ "min": "0",
"show": true
},
{
- "$$hashKey": "object:537",
+ "$$hashKey": "object:162",
"format": "short",
"logBase": 1,
"show": true
@@ -8761,842 +9776,1154 @@
}
},
{
- "aliasColors": {},
- "bars": false,
- "dashLength": 10,
- "dashes": false,
- "datasource": {
- "type": "prometheus",
- "uid": "$datasource"
- },
- "description": "Total number of consumers created on the DataNode",
- "fill": 1,
- "fillGradient": 0,
+ "collapsed": false,
"gridPos": {
- "h": 6,
- "w": 8,
+ "h": 1,
+ "w": 24,
"x": 0,
- "y": 162
+ "y": 198
},
- "hiddenSeries": false,
- "id": 123276,
- "legend": {
- "avg": false,
- "current": false,
- "max": false,
- "min": false,
- "show": true,
- "total": false,
- "values": false
+ "id": 123419,
+ "panels": [],
+ "title": "Knowhere",
+ "type": "row"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
},
- "lines": true,
- "linewidth": 1,
- "nullPointMode": "null",
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "drawStyle": "line",
+ "fillOpacity": 0,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "auto",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ },
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ },
+ {
+ "color": "red",
+ "value": 80
+ }
+ ]
+ },
+ "unit": "ms"
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 8,
+ "w": 8,
+ "x": 0,
+ "y": 199
+ },
+ "id": 123420,
"options": {
- "alertThreshold": true
+ "legend": {
+ "calcs": [],
+ "displayMode": "list",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "mode": "single",
+ "sort": "none"
+ }
},
- "percentage": false,
- "pluginVersion": "8.3.3",
- "pointradius": 2,
- "points": false,
- "renderer": "flot",
- "seriesOverrides": [],
- "spaceLength": 10,
- "stack": false,
- "steppedLine": false,
"targets": [
{
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "exemplar": true,
- "expr": "sum(milvus_datanode_consumer_num{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (pod, node_id)",
- "interval": "",
- "intervalFactor": 2,
- "legendFormat": "{{pod}}-{{node_id}}",
- "queryType": "randomWalk",
+ "editorMode": "code",
+ "expr": "histogram_quantile(0.99, sum by (le,pod, module) (rate(search_latency_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])))",
+ "legendFormat": "p99-{{module}}-{{pod}}",
+ "range": true,
"refId": "A"
- }
- ],
- "thresholds": [],
- "timeRegions": [],
- "title": "Consumer Num",
- "tooltip": {
- "shared": true,
- "sort": 0,
- "value_type": "individual"
- },
- "type": "graph",
- "xaxis": {
- "mode": "time",
- "show": true,
- "values": []
- },
- "yaxes": [
- {
- "$$hashKey": "object:536",
- "format": "short",
- "logBase": 1,
- "min": "0",
- "show": true
},
{
- "$$hashKey": "object:537",
- "format": "short",
- "logBase": 1,
- "show": true
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "editorMode": "code",
+ "expr": "sum(increase(search_latency_sum{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by (pod, module) / sum(increase(search_latency_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by (pod, module)",
+ "hide": false,
+ "legendFormat": "avg-{{module}}-{{pod}}",
+ "range": true,
+ "refId": "B"
}
],
- "yaxis": {
- "align": false
- }
+ "title": "search latency",
+ "type": "timeseries"
},
{
- "aliasColors": {},
- "bars": false,
- "dashLength": 10,
- "dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
+ },
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "drawStyle": "line",
+ "fillOpacity": 0,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "auto",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ },
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ },
+ {
+ "color": "red",
+ "value": 80
+ }
+ ]
+ },
+ "unit": "ms"
+ },
+ "overrides": []
},
- "description": "The 99th percentile and average latency of encode the data in the buffer over the last 2 minutes.",
- "fill": 1,
- "fillGradient": 0,
"gridPos": {
- "h": 6,
+ "h": 8,
"w": 8,
"x": 8,
- "y": 162
- },
- "hiddenSeries": false,
- "id": 123282,
- "legend": {
- "avg": false,
- "current": false,
- "max": false,
- "min": false,
- "show": true,
- "total": false,
- "values": false
+ "y": 199
},
- "lines": true,
- "linewidth": 1,
- "nullPointMode": "null",
+ "id": 123421,
"options": {
- "alertThreshold": true
+ "legend": {
+ "calcs": [],
+ "displayMode": "list",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "mode": "single",
+ "sort": "none"
+ }
},
- "percentage": false,
- "pluginVersion": "8.3.3",
- "pointradius": 2,
- "points": false,
- "renderer": "flot",
- "seriesOverrides": [],
- "spaceLength": 10,
- "stack": false,
- "steppedLine": false,
"targets": [
{
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "exemplar": true,
- "expr": "histogram_quantile(0.99, sum by (le, pod, node_id) (rate(milvus_datanode_encode_buffer_latency_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])))",
- "interval": "",
- "legendFormat": "p99-{{pod}}-{{node_id}}",
- "queryType": "randomWalk",
+ "editorMode": "code",
+ "expr": "histogram_quantile(0.99, sum by (le,pod, module) (rate(range_search_latency_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])))",
+ "legendFormat": "p99-{{module}}-{{pod}}",
+ "range": true,
"refId": "A"
},
{
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "exemplar": true,
- "expr": "sum(increase(milvus_datanode_encode_buffer_latency_sum{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by(pod, node_id) / sum(increase(milvus_datanode_encode_buffer_latency_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by(pod, node_id)",
+ "editorMode": "code",
+ "expr": "sum(increase(range_search_latency_sum{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by (pod, module) / sum(increase(range_search_latency_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by (pod, module)",
"hide": false,
- "interval": "",
- "legendFormat": "avg-{{pod}}-{{node_id}}",
+ "legendFormat": "avg-{{module}}-{{pod}}",
+ "range": true,
"refId": "B"
}
],
- "thresholds": [],
- "timeRegions": [],
- "title": "Encode Buffer Latency",
- "tooltip": {
- "shared": true,
- "sort": 0,
- "value_type": "individual"
- },
- "type": "graph",
- "xaxis": {
- "mode": "time",
- "show": true,
- "values": []
- },
- "yaxes": [
- {
- "$$hashKey": "object:161",
- "format": "short",
- "logBase": 1,
- "min": "0",
- "show": true
- },
- {
- "$$hashKey": "object:162",
- "format": "short",
- "logBase": 1,
- "show": true
- }
- ],
- "yaxis": {
- "align": false
- }
+ "title": "range search latency",
+ "type": "timeseries"
},
{
- "aliasColors": {},
- "bars": false,
- "dashLength": 10,
- "dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
+ },
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "drawStyle": "line",
+ "fillOpacity": 0,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "auto",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ },
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ },
+ {
+ "color": "red",
+ "value": 80
+ }
+ ]
+ },
+ "unit": "ms"
+ },
+ "overrides": []
},
- "description": "per-second increasing rate of messages consumed for insert and delete operation.",
- "fill": 1,
- "fillGradient": 0,
"gridPos": {
- "h": 6,
+ "h": 8,
"w": 8,
"x": 16,
- "y": 162
- },
- "hiddenSeries": false,
- "id": 123274,
- "legend": {
- "avg": false,
- "current": false,
- "max": false,
- "min": false,
- "show": true,
- "total": false,
- "values": false
+ "y": 199
},
- "lines": true,
- "linewidth": 1,
- "nullPointMode": "null",
+ "id": 123428,
"options": {
- "alertThreshold": true
+ "legend": {
+ "calcs": [],
+ "displayMode": "list",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "mode": "single",
+ "sort": "none"
+ }
},
- "percentage": false,
- "pluginVersion": "8.3.3",
- "pointradius": 2,
- "points": false,
- "renderer": "flot",
- "seriesOverrides": [],
- "spaceLength": 10,
- "stack": false,
- "steppedLine": false,
"targets": [
{
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "exemplar": true,
- "expr": "sum(increase(milvus_datanode_msg_rows_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])/120) by (msg_type, pod, node_id)",
- "interval": "",
- "legendFormat": "{{pod}}-{{node_id}}-{{msg_type}}",
- "queryType": "randomWalk",
+ "editorMode": "code",
+ "expr": "histogram_quantile(0.99, sum by (le,pod, module) (rate(build_latency_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])))",
+ "legendFormat": "p99-{{module}}-{{pod}}",
+ "range": true,
"refId": "A"
- }
- ],
- "thresholds": [],
- "timeRegions": [],
- "title": "Msg Rows Consumed Rate",
- "tooltip": {
- "shared": true,
- "sort": 0,
- "value_type": "individual"
- },
- "type": "graph",
- "xaxis": {
- "mode": "time",
- "show": true,
- "values": []
- },
- "yaxes": [
- {
- "$$hashKey": "object:101",
- "format": "cps",
- "logBase": 1,
- "min": "0",
- "show": true
},
{
- "$$hashKey": "object:102",
- "format": "short",
- "logBase": 1,
- "show": true
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "editorMode": "code",
+ "expr": "sum(increase(build_latency_sum{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by (pod, module) / sum(increase(knowhere_build_latency_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by (pod, module)",
+ "hide": false,
+ "legendFormat": "avg-{{module}}-{{pod}}",
+ "range": true,
+ "refId": "B"
}
],
- "yaxis": {
- "align": false
- }
+ "title": "build index latency",
+ "type": "timeseries"
},
{
- "aliasColors": {},
- "bars": false,
- "dashLength": 10,
- "dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
+ },
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "drawStyle": "line",
+ "fillOpacity": 0,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "auto",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ },
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ },
+ {
+ "color": "red",
+ "value": 80
+ }
+ ]
+ },
+ "unit": "cps"
+ },
+ "overrides": []
},
- "description": "Total number of segment that has been not flushed.",
- "fill": 1,
- "fillGradient": 0,
"gridPos": {
- "h": 6,
+ "h": 8,
"w": 8,
"x": 0,
- "y": 168
- },
- "hiddenSeries": false,
- "id": 123280,
- "legend": {
- "avg": false,
- "current": false,
- "max": false,
- "min": false,
- "show": true,
- "total": false,
- "values": false
+ "y": 207
},
- "lines": true,
- "linewidth": 1,
- "nullPointMode": "null",
+ "id": 123425,
"options": {
- "alertThreshold": true
- },
- "percentage": false,
- "pluginVersion": "8.3.3",
- "pointradius": 2,
- "points": false,
- "renderer": "flot",
- "seriesOverrides": [],
- "spaceLength": 10,
- "stack": false,
- "steppedLine": false,
+ "legend": {
+ "calcs": [],
+ "displayMode": "list",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "mode": "single",
+ "sort": "none"
+ }
+ },
"targets": [
{
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "exemplar": true,
- "expr": "sum(milvus_datanode_unflushed_segment_num{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (pod, node_id)",
- "interval": "",
- "intervalFactor": 2,
- "legendFormat": "{{pod}}-{{node_id}}",
- "queryType": "randomWalk",
+ "editorMode": "code",
+ "expr": "sum(increase(search_latency_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])/120) by (pod, module)",
+ "legendFormat": "{{module}}-{{pod}}",
+ "range": true,
"refId": "A"
}
],
- "thresholds": [],
- "timeRegions": [],
- "title": "Unflushed Segment Num",
- "tooltip": {
- "shared": true,
- "sort": 0,
- "value_type": "individual"
- },
- "type": "graph",
- "xaxis": {
- "mode": "time",
- "show": true,
- "values": []
- },
- "yaxes": [
- {
- "$$hashKey": "object:536",
- "format": "short",
- "logBase": 1,
- "min": "0",
- "show": true
- },
- {
- "$$hashKey": "object:537",
- "format": "short",
- "logBase": 1,
- "show": true
- }
- ],
- "yaxis": {
- "align": false
- }
+ "title": "search rate",
+ "type": "timeseries"
},
{
- "aliasColors": {},
- "bars": false,
- "dashLength": 10,
- "dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
+ },
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "drawStyle": "line",
+ "fillOpacity": 0,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "auto",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ },
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ },
+ {
+ "color": "red",
+ "value": 80
+ }
+ ]
+ },
+ "unit": "cps"
+ },
+ "overrides": []
},
- "description": "per-second increasing rate of auto flush operate.",
- "fill": 1,
- "fillGradient": 0,
"gridPos": {
- "h": 6,
+ "h": 8,
"w": 8,
"x": 8,
- "y": 168
- },
- "hiddenSeries": false,
- "id": 123285,
- "legend": {
- "avg": false,
- "current": false,
- "max": false,
- "min": false,
- "show": true,
- "total": false,
- "values": false
+ "y": 207
},
- "lines": true,
- "linewidth": 1,
- "nullPointMode": "null",
+ "id": 123423,
"options": {
- "alertThreshold": true
+ "legend": {
+ "calcs": [],
+ "displayMode": "list",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "mode": "single",
+ "sort": "none"
+ }
},
- "percentage": false,
- "pluginVersion": "8.3.3",
- "pointradius": 2,
- "points": false,
- "renderer": "flot",
- "seriesOverrides": [],
- "spaceLength": 10,
- "stack": false,
- "steppedLine": false,
"targets": [
{
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "exemplar": true,
- "expr": "sum(increase(milvus_datanode_autoflush_buffer_op_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])/120) by (status, pod, node_id)",
- "interval": "",
- "legendFormat": "{{pod}}-{{node_id}}-{{status}}",
- "queryType": "randomWalk",
+ "editorMode": "code",
+ "expr": "sum(increase(range_search_latencycount{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])/120) by (pod, module)",
+ "legendFormat": "{{module}}-{{pod}}",
+ "range": true,
"refId": "A"
}
],
- "thresholds": [],
- "timeRegions": [],
- "title": "Autoflush Operate Rate",
- "tooltip": {
- "shared": true,
- "sort": 0,
- "value_type": "individual"
- },
- "type": "graph",
- "xaxis": {
- "mode": "time",
- "show": true,
- "values": []
- },
- "yaxes": [
- {
- "$$hashKey": "object:101",
- "format": "short",
- "logBase": 1,
- "min": "0",
- "show": true
- },
- {
- "$$hashKey": "object:102",
- "format": "short",
- "logBase": 1,
- "show": true
- }
- ],
- "yaxis": {
- "align": false
- }
+ "title": "range search rate",
+ "type": "timeseries"
},
{
- "aliasColors": {},
- "bars": false,
- "dashLength": 10,
- "dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
+ },
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "drawStyle": "line",
+ "fillOpacity": 0,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "auto",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ },
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ },
+ {
+ "color": "red",
+ "value": 80
+ }
+ ]
+ },
+ "unit": "cps"
+ },
+ "overrides": []
},
- "description": "per-second increasing rate of each message that has been flushed.",
- "fill": 1,
- "fillGradient": 0,
"gridPos": {
- "h": 6,
+ "h": 8,
"w": 8,
"x": 16,
- "y": 168
+ "y": 207
},
- "hiddenSeries": false,
- "id": 123275,
- "legend": {
- "avg": false,
- "current": false,
- "max": false,
- "min": false,
- "show": true,
- "total": false,
- "values": false
- },
- "lines": true,
- "linewidth": 1,
- "nullPointMode": "null",
+ "id": 123417,
"options": {
- "alertThreshold": true
+ "legend": {
+ "calcs": [],
+ "displayMode": "list",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "mode": "single",
+ "sort": "none"
+ }
},
- "percentage": false,
- "pluginVersion": "8.3.3",
- "pointradius": 2,
- "points": false,
- "renderer": "flot",
- "seriesOverrides": [],
- "spaceLength": 10,
- "stack": false,
- "steppedLine": false,
"targets": [
{
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "exemplar": true,
- "expr": "sum(increase(milvus_datanode_flushed_data_size{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])/120) by (msg_type, pod, node_id)",
- "interval": "",
- "legendFormat": "{{pod}}-{{node_id}}-{{msg_type}}",
- "queryType": "randomWalk",
+ "editorMode": "code",
+ "expr": "sum(increase(build_latency_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])/120) by (pod, module)",
+ "legendFormat": "{{module}}-{{pod}}",
+ "range": true,
"refId": "A"
}
],
- "thresholds": [],
- "timeRegions": [],
- "title": "Flush Data Size Rate",
- "tooltip": {
- "shared": true,
- "sort": 0,
- "value_type": "individual"
- },
- "type": "graph",
- "xaxis": {
- "mode": "time",
- "show": true,
- "values": []
- },
- "yaxes": [
- {
- "$$hashKey": "object:101",
- "format": "short",
- "logBase": 1,
- "min": "0",
- "show": true
- },
- {
- "$$hashKey": "object:102",
- "format": "short",
- "logBase": 1,
- "show": true
- }
- ],
- "yaxis": {
- "align": false
- }
+ "title": "build index rate",
+ "type": "timeseries"
},
{
- "aliasColors": {},
- "bars": false,
- "dashLength": 10,
- "dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
+ },
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "drawStyle": "line",
+ "fillOpacity": 0,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "auto",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ },
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ },
+ {
+ "color": "red",
+ "value": 80
+ }
+ ]
+ },
+ "unit": "ms"
+ },
+ "overrides": []
},
- "description": "per-second increasing rate of flush operete.",
- "fill": 1,
- "fillGradient": 0,
"gridPos": {
- "h": 6,
+ "h": 8,
"w": 8,
"x": 0,
- "y": 174
- },
- "hiddenSeries": false,
- "id": 123284,
- "legend": {
- "avg": false,
- "current": false,
- "max": false,
- "min": false,
- "show": true,
- "total": false,
- "values": false
+ "y": 215
},
- "lines": true,
- "linewidth": 1,
- "nullPointMode": "null",
+ "id": 123443,
"options": {
- "alertThreshold": true
+ "legend": {
+ "calcs": [],
+ "displayMode": "list",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "mode": "single",
+ "sort": "none"
+ }
},
- "percentage": false,
- "pluginVersion": "8.3.3",
- "pointradius": 2,
- "points": false,
- "renderer": "flot",
- "seriesOverrides": [],
- "spaceLength": 10,
- "stack": false,
- "steppedLine": false,
"targets": [
{
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "exemplar": true,
- "expr": "sum(increase(milvus_datanode_flush_buffer_op_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])/120) by (status, pod, node_id)",
- "interval": "",
- "legendFormat": "{{pod}}-{{node_id}}-{{status}}",
- "queryType": "randomWalk",
+ "editorMode": "code",
+ "expr": "histogram_quantile(0.99, sum by (le, module, pod) (rate(load_latency_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])))",
+ "instant": false,
+ "legendFormat": "p99-{{module}}-{{pod}}",
+ "range": true,
"refId": "A"
- }
- ],
- "thresholds": [],
- "timeRegions": [],
- "title": "Flush Operate Rate",
- "tooltip": {
- "shared": true,
- "sort": 0,
- "value_type": "individual"
- },
- "type": "graph",
- "xaxis": {
- "mode": "time",
- "show": true,
- "values": []
- },
- "yaxes": [
- {
- "$$hashKey": "object:101",
- "format": "short",
- "logBase": 1,
- "min": "0",
- "show": true
},
{
- "$$hashKey": "object:102",
- "format": "short",
- "logBase": 1,
- "show": true
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "editorMode": "code",
+ "expr": "sum(increase(load_latency_sum{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by (module, pod) / sum(increase(load_latency_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by (module, pod)",
+ "hide": false,
+ "instant": false,
+ "legendFormat": "avg-{{module}}-{{pod}}",
+ "range": true,
+ "refId": "B"
}
],
- "yaxis": {
- "align": false
- }
+ "title": "Load Latency",
+ "type": "timeseries"
},
{
- "aliasColors": {},
- "bars": false,
- "dashLength": 10,
- "dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
- },
- "description": "per-second increasing rate of flush requests.",
- "fill": 1,
- "fillGradient": 0,
- "gridPos": {
- "h": 6,
- "w": 8,
- "x": 8,
- "y": 174
- },
- "hiddenSeries": false,
- "id": 123286,
- "legend": {
- "avg": false,
- "current": false,
- "max": false,
- "min": false,
- "show": true,
- "total": false,
- "values": false
- },
- "lines": true,
- "linewidth": 1,
- "nullPointMode": "null",
- "options": {
- "alertThreshold": true
+ "uid": "${datasource}"
},
- "percentage": false,
- "pluginVersion": "8.3.3",
- "pointradius": 2,
- "points": false,
- "renderer": "flot",
- "seriesOverrides": [],
- "spaceLength": 10,
- "stack": false,
- "steppedLine": false,
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "$datasource"
- },
- "exemplar": true,
- "expr": "sum(increase(milvus_datanode_flush_req_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])/120) by (status, pod, node_id)",
- "interval": "",
- "legendFormat": "{{pod}}-{{node_id}}-{{status}}",
- "queryType": "randomWalk",
- "refId": "A"
- }
- ],
- "thresholds": [],
- "timeRegions": [],
- "title": "Flush Request Rate",
- "tooltip": {
- "shared": true,
- "sort": 0,
- "value_type": "individual"
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "drawStyle": "line",
+ "fillOpacity": 0,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "auto",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ },
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ },
+ {
+ "color": "red",
+ "value": 80
+ }
+ ]
+ }
+ },
+ "overrides": []
},
- "type": "graph",
- "xaxis": {
- "mode": "time",
- "show": true,
- "values": []
+ "gridPos": {
+ "h": 8,
+ "w": 8,
+ "x": 8,
+ "y": 215
},
- "yaxes": [
+ "id": 123427,
+ "options": {
+ "legend": {
+ "calcs": [],
+ "displayMode": "list",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "mode": "single",
+ "sort": "none"
+ }
+ },
+ "targets": [
{
- "$$hashKey": "object:101",
- "format": "short",
- "logBase": 1,
- "min": "0",
- "show": true
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "editorMode": "code",
+ "expr": "histogram_quantile(0.99, sum by (le,pod, module) (rate(ann_iterator_init_latency_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])))",
+ "legendFormat": "p99-{{module}}-{{pod}}",
+ "range": true,
+ "refId": "A"
},
{
- "$$hashKey": "object:102",
- "format": "short",
- "logBase": 1,
- "show": true
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "editorMode": "code",
+ "expr": "sum(increase(ann_iterator_init_latency_sum{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by (pod, module) / sum(increase(ann_iterator_init_latency_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by (pod, module)",
+ "hide": false,
+ "legendFormat": "avg-{{module}}-{{pod}}",
+ "range": true,
+ "refId": "B"
}
],
- "yaxis": {
- "align": false
- }
+ "title": "ann iterator init latency",
+ "type": "timeseries"
},
{
- "aliasColors": {},
- "bars": false,
- "dashLength": 10,
- "dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
+ },
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "drawStyle": "line",
+ "fillOpacity": 0,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "auto",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ },
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ },
+ {
+ "color": "red",
+ "value": 80
+ }
+ ]
+ },
+ "unit": "ms"
+ },
+ "overrides": []
},
- "description": "The 99th percentile and average latency of writte the data in buffer to storage over the last 2 minutes.",
- "fill": 1,
- "fillGradient": 0,
"gridPos": {
- "h": 6,
+ "h": 8,
"w": 8,
"x": 16,
- "y": 174
- },
- "hiddenSeries": false,
- "id": 123283,
- "legend": {
- "avg": false,
- "current": false,
- "max": false,
- "min": false,
- "show": true,
- "total": false,
- "values": false
+ "y": 215
},
- "lines": true,
- "linewidth": 1,
- "nullPointMode": "null",
+ "id": 123429,
"options": {
- "alertThreshold": true
+ "legend": {
+ "calcs": [],
+ "displayMode": "list",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "mode": "single",
+ "sort": "none"
+ }
},
- "percentage": false,
- "pluginVersion": "8.3.3",
- "pointradius": 2,
- "points": false,
- "renderer": "flot",
- "seriesOverrides": [],
- "spaceLength": 10,
- "stack": false,
- "steppedLine": false,
"targets": [
{
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "exemplar": true,
- "expr": "histogram_quantile(0.99, sum by (le, pod, node_id) (rate(milvus_datanode_save_latency_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])))",
- "interval": "",
- "legendFormat": "p99-{{pod}}-{{node_id}}",
- "queryType": "randomWalk",
+ "editorMode": "code",
+ "expr": "histogram_quantile(0.99, sum by (le,pod) (rate(knowhere_index_version_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])))",
+ "legendFormat": "p99-{{pod}}",
+ "range": true,
"refId": "A"
},
{
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "exemplar": true,
- "expr": "sum(increase(milvus_datanode_save_latency_sum{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by(pod, node_id) / sum(increase(milvus_datanode_save_latency_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by(pod, node_id)",
+ "editorMode": "code",
+ "expr": "sum(increase(knowhere_index_version_sum{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by (pod) / sum(increase(knowhere_index_version_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by (pod)",
"hide": false,
- "interval": "",
- "legendFormat": "avg-{{pod}}-{{node_id}}",
+ "legendFormat": "avg-{{pod}}",
+ "range": true,
"refId": "B"
}
],
- "thresholds": [],
- "timeRegions": [],
- "title": "Save Data Latency",
- "tooltip": {
- "shared": true,
- "sort": 0,
- "value_type": "individual"
- },
- "type": "graph",
- "xaxis": {
- "mode": "time",
- "show": true,
- "values": []
+ "title": "knowhere create version index latency",
+ "type": "timeseries"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
},
- "yaxes": [
- {
- "$$hashKey": "object:161",
- "format": "short",
- "logBase": 1,
- "min": "0",
- "show": true
- },
- {
- "$$hashKey": "object:162",
- "format": "short",
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "drawStyle": "line",
+ "fillOpacity": 0,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "auto",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ },
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ },
+ {
+ "color": "red",
+ "value": 80
+ }
+ ]
+ },
+ "unit": "none"
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 8,
+ "w": 8,
+ "x": 0,
+ "y": 223
+ },
+ "id": 123433,
+ "options": {
+ "legend": {
+ "calcs": [],
+ "displayMode": "list",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "mode": "single",
+ "sort": "none"
+ }
+ },
+ "targets": [
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "editorMode": "code",
+ "expr": "histogram_quantile(0.99, sum by (le,pod, module) (rate(search_topk_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])))",
+ "legendFormat": "p99-{{module}}-{{pod}}",
+ "range": true,
+ "refId": "A"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "editorMode": "code",
+ "expr": "sum(increase(search_topk_sum{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by (pod, module) / sum(increase(search_topk_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by (pod, module)",
+ "hide": false,
+ "legendFormat": "avg-{{module}}-{{pod}}",
+ "range": true,
+ "refId": "B"
+ }
+ ],
+ "title": "search topk ",
+ "type": "timeseries"
+ },
+ {
+ "collapsed": false,
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "gridPos": {
+ "h": 1,
+ "w": 24,
+ "x": 0,
+ "y": 231
+ },
+ "id": 123172,
+ "panels": [],
+ "title": "Data Coordinator",
+ "type": "row"
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "description": "Number of data nodes which has register with etcd.",
+ "fill": 1,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 8,
+ "w": 8,
+ "x": 0,
+ "y": 232
+ },
+ "hiddenSeries": false,
+ "id": 123207,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "10.2.0",
+ "pointradius": 2,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "exemplar": true,
+ "expr": "sum(milvus_datacoord_datanode_num{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (app_kubernetes_io_instance)",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "total",
+ "queryType": "randomWalk",
+ "refId": "A"
+ }
+ ],
+ "thresholds": [],
+ "timeRegions": [],
+ "title": "Data Node Num",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "$$hashKey": "object:536",
+ "format": "short",
+ "logBase": 1,
+ "min": "0",
+ "show": true
+ },
+ {
+ "$$hashKey": "object:537",
+ "format": "short",
"logBase": 1,
"show": true
}
@@ -9612,19 +10939,19 @@
"dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "description": "The 99th percentile and average latency of compaction over the last 2 minutes.",
+ "description": "Average, maximum and minimum values of the timestamps for time tick lag behind now from datanode.",
"fill": 1,
"fillGradient": 0,
"gridPos": {
- "h": 6,
+ "h": 8,
"w": 8,
- "x": 0,
- "y": 180
+ "x": 8,
+ "y": 232
},
"hiddenSeries": false,
- "id": 123314,
+ "id": 123390,
"legend": {
"avg": false,
"current": false,
@@ -9641,7 +10968,7 @@
"alertThreshold": true
},
"percentage": false,
- "pluginVersion": "8.3.3",
+ "pluginVersion": "10.2.0",
"pointradius": 2,
"points": false,
"renderer": "flot",
@@ -9653,32 +10980,45 @@
{
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
"exemplar": true,
- "expr": "histogram_quantile(0.99, sum by (le, pod, node_id) (rate(milvus_datanode_compaction_latency_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])))",
+ "expr": "avg(milvus_datacoord_consume_datanode_tt_lag_ms{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (pod, node_id)",
"hide": false,
"interval": "",
- "legendFormat": "p99-{{pod}}-{{node_id}}",
+ "intervalFactor": 2,
+ "legendFormat": "{{pod}}-{{node_id}}-avg",
"queryType": "randomWalk",
"refId": "A"
},
{
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
"exemplar": true,
- "expr": "sum(increase(milvus_datanode_compaction_latency_sum{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by(pod, node_id) / sum(increase(milvus_datanode_compaction_latency_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by(pod, node_id)",
+ "expr": "max(milvus_datacoord_consume_datanode_tt_lag_ms{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (pod, node_id)",
"hide": false,
"interval": "",
- "legendFormat": "avg-{{pod}}-{{node_id}}",
+ "legendFormat": "{{pod}}-{{node_id}}-max",
"refId": "B"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "exemplar": true,
+ "expr": "min(milvus_datacoord_consume_datanode_tt_lag_ms{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (pod, node_id)",
+ "hide": false,
+ "interval": "",
+ "legendFormat": "{{pod}}-{{node_id}}-min",
+ "refId": "C"
}
],
"thresholds": [],
"timeRegions": [],
- "title": "Compaction Latency",
+ "title": "TimeTick Lag Behind Now From DataNode",
"tooltip": {
"shared": true,
"sort": 0,
@@ -9692,14 +11032,14 @@
},
"yaxes": [
{
- "$$hashKey": "object:161",
- "format": "short",
+ "$$hashKey": "object:536",
+ "decimals": 0,
+ "format": "ms",
"logBase": 1,
- "min": "0",
"show": true
},
{
- "$$hashKey": "object:162",
+ "$$hashKey": "object:537",
"format": "short",
"logBase": 1,
"show": true
@@ -9710,1716 +11050,1765 @@
}
},
{
- "collapsed": true,
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "description": "The number of rows of valid data accumulated in DataCoord that flushed.",
+ "fill": 1,
+ "fillGradient": 0,
"gridPos": {
- "h": 1,
- "w": 24,
- "x": 0,
- "y": 186
+ "h": 8,
+ "w": 8,
+ "x": 16,
+ "y": 232
},
- "id": 123223,
- "panels": [
- {
- "aliasColors": {},
- "bars": false,
- "dashLength": 10,
- "dashes": false,
- "datasource": {
+ "hiddenSeries": false,
+ "id": 123269,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "10.2.0",
+ "pointradius": 2,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "datasource": {
"type": "prometheus",
- "uid": "$datasource"
- },
- "description": "per-second increasing rate of building index requests recived by IndexCoord.",
- "fill": 1,
- "fillGradient": 0,
- "gridPos": {
- "h": 6,
- "w": 8,
- "x": 0,
- "y": 7
- },
- "hiddenSeries": false,
- "id": 123225,
- "legend": {
- "avg": false,
- "current": false,
- "max": false,
- "min": false,
- "show": true,
- "total": false,
- "values": false
- },
- "lines": true,
- "linewidth": 1,
- "nullPointMode": "null",
- "options": {
- "alertThreshold": true
- },
- "percentage": false,
- "pluginVersion": "8.3.3",
- "pointradius": 2,
- "points": false,
- "renderer": "flot",
- "seriesOverrides": [],
- "spaceLength": 10,
- "stack": false,
- "steppedLine": false,
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "$datasource"
- },
- "exemplar": true,
- "expr": "sum(increase(milvus_indexcoord_index_req_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])/120) by (status)",
- "interval": "",
- "legendFormat": "{{status}}",
- "queryType": "randomWalk",
- "refId": "A"
- }
- ],
- "thresholds": [],
- "timeRegions": [],
- "title": "Index Request Rate",
- "tooltip": {
- "shared": true,
- "sort": 0,
- "value_type": "individual"
- },
- "type": "graph",
- "xaxis": {
- "mode": "time",
- "show": true,
- "values": []
+ "uid": "${datasource}"
},
- "yaxes": [
- {
- "$$hashKey": "object:372",
- "format": "short",
- "logBase": 1,
- "min": "0",
- "show": true
- },
- {
- "$$hashKey": "object:373",
- "format": "short",
- "logBase": 1,
- "show": true
- }
- ],
- "yaxis": {
- "align": false
- }
+ "exemplar": true,
+ "expr": "sum(milvus_datacoord_stored_rows_num{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (app_kubernetes_io_instance)",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "row",
+ "queryType": "randomWalk",
+ "refId": "A"
+ }
+ ],
+ "thresholds": [],
+ "timeRegions": [],
+ "title": "Stored Rows",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "$$hashKey": "object:536",
+ "format": "short",
+ "logBase": 1,
+ "min": "0",
+ "show": true
},
{
- "aliasColors": {},
- "bars": false,
- "dashLength": 10,
- "dashes": false,
+ "$$hashKey": "object:537",
+ "format": "short",
+ "logBase": 1,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "description": "per-second increasing rate of data flushed.",
+ "fill": 1,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 8,
+ "w": 8,
+ "x": 0,
+ "y": 240
+ },
+ "hiddenSeries": false,
+ "id": 123371,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "10.2.0",
+ "pointradius": 2,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
- },
- "description": "Number of indexing tasks with different states in IndexCoord's meta",
- "fill": 1,
- "fillGradient": 0,
- "gridPos": {
- "h": 6,
- "w": 8,
- "x": 8,
- "y": 7
- },
- "hiddenSeries": false,
- "id": 123227,
- "legend": {
- "avg": false,
- "current": false,
- "max": false,
- "min": false,
- "show": true,
- "total": false,
- "values": false
- },
- "lines": true,
- "linewidth": 1,
- "nullPointMode": "null",
- "options": {
- "alertThreshold": true
- },
- "percentage": false,
- "pluginVersion": "8.3.3",
- "pointradius": 2,
- "points": false,
- "renderer": "flot",
- "seriesOverrides": [],
- "spaceLength": 10,
- "stack": false,
- "steppedLine": false,
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "$datasource"
- },
- "exemplar": true,
- "expr": "sum(milvus_indexcoord_index_task_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (index_task_status)",
- "interval": "",
- "intervalFactor": 2,
- "legendFormat": "{{index_task_status}}",
- "queryType": "randomWalk",
- "refId": "A"
- }
- ],
- "thresholds": [],
- "timeRegions": [],
- "title": "Index Task Count",
- "tooltip": {
- "shared": true,
- "sort": 0,
- "value_type": "individual"
- },
- "type": "graph",
- "xaxis": {
- "mode": "time",
- "show": true,
- "values": []
+ "uid": "${datasource}"
},
- "yaxes": [
- {
- "$$hashKey": "object:401",
- "format": "short",
- "logBase": 1,
- "show": true
- },
- {
- "$$hashKey": "object:402",
- "format": "short",
- "logBase": 1,
- "show": true
- }
- ],
- "yaxis": {
- "align": false
- }
+ "exemplar": true,
+ "expr": "sum(increase(milvus_datacoord_stored_rows_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])/120) by (pod, node_id)",
+ "interval": "",
+ "legendFormat": "{{pod}}-{{node_id}}",
+ "queryType": "randomWalk",
+ "refId": "A"
+ }
+ ],
+ "thresholds": [],
+ "timeRegions": [],
+ "title": "Stored Rows Rate",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "$$hashKey": "object:3414",
+ "format": "short",
+ "logBase": 1,
+ "min": "0",
+ "show": true
},
{
- "aliasColors": {},
- "bars": false,
- "dashLength": 10,
- "dashes": false,
+ "$$hashKey": "object:3415",
+ "format": "short",
+ "logBase": 1,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "description": "Number of segments with different states in the Meta of DataCoord",
+ "fill": 1,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 8,
+ "w": 8,
+ "x": 8,
+ "y": 240
+ },
+ "hiddenSeries": false,
+ "id": 123267,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "10.2.0",
+ "pointradius": 2,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
- },
- "description": "Number of index nodes which has register with etcd",
- "fill": 1,
- "fillGradient": 0,
- "gridPos": {
- "h": 6,
- "w": 8,
- "x": 16,
- "y": 7
- },
- "hiddenSeries": false,
- "id": 123229,
- "legend": {
- "avg": false,
- "current": false,
- "max": false,
- "min": false,
- "show": true,
- "total": false,
- "values": false
- },
- "lines": true,
- "linewidth": 1,
- "nullPointMode": "null",
- "options": {
- "alertThreshold": true
- },
- "percentage": false,
- "pluginVersion": "8.3.3",
- "pointradius": 2,
- "points": false,
- "renderer": "flot",
- "seriesOverrides": [],
- "spaceLength": 10,
- "stack": false,
- "steppedLine": false,
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "$datasource"
- },
- "exemplar": true,
- "expr": "sum(milvus_indexcoord_index_node_num{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (app_kubernetes_io_instance)",
- "hide": false,
- "instant": false,
- "interval": "",
- "intervalFactor": 2,
- "legendFormat": "total",
- "queryType": "randomWalk",
- "refId": "A"
- }
- ],
- "thresholds": [],
- "timeRegions": [],
- "title": "Index Node Num",
- "tooltip": {
- "shared": true,
- "sort": 0,
- "value_type": "individual"
- },
- "type": "graph",
- "xaxis": {
- "mode": "time",
- "show": true,
- "values": []
+ "uid": "${datasource}"
},
- "yaxes": [
- {
- "$$hashKey": "object:479",
- "format": "short",
- "logBase": 1,
- "min": "0",
- "show": true
- },
- {
- "$$hashKey": "object:480",
- "format": "short",
- "logBase": 1,
- "show": true
- }
- ],
- "yaxis": {
- "align": false
- }
+ "exemplar": true,
+ "expr": "sum(milvus_datacoord_segment_num{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (segment_state)",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "{{segment_state}}",
+ "queryType": "randomWalk",
+ "refId": "A"
}
],
- "title": "Index Coordinator",
- "type": "row"
+ "thresholds": [],
+ "timeRegions": [],
+ "title": "Segment Num",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "$$hashKey": "object:536",
+ "format": "short",
+ "logBase": 1,
+ "min": "0",
+ "show": true
+ },
+ {
+ "$$hashKey": "object:537",
+ "format": "short",
+ "logBase": 1,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false
+ }
},
{
- "collapsed": true,
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "description": "binlog size of all collections/segments, unit byte",
+ "fill": 1,
+ "fillGradient": 0,
"gridPos": {
- "h": 1,
- "w": 24,
- "x": 0,
- "y": 187
+ "h": 8,
+ "w": 8,
+ "x": 16,
+ "y": 240
},
- "id": 123231,
- "panels": [
+ "hiddenSeries": false,
+ "id": 123382,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "10.2.0",
+ "pointradius": 2,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
{
- "aliasColors": {},
- "bars": false,
- "dashLength": 10,
- "dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "description": "per-second increasing rate of index tasks recevied by IndexNode",
- "fill": 1,
- "fillGradient": 0,
- "gridPos": {
- "h": 6,
- "w": 8,
- "x": 0,
- "y": 8
- },
- "hiddenSeries": false,
- "id": 123233,
- "legend": {
- "avg": false,
- "current": false,
- "max": false,
- "min": false,
- "show": true,
- "total": false,
- "values": false
- },
- "lines": true,
- "linewidth": 1,
- "nullPointMode": "null",
- "options": {
- "alertThreshold": true
- },
- "percentage": false,
- "pluginVersion": "8.3.3",
- "pointradius": 2,
- "points": false,
- "renderer": "flot",
- "seriesOverrides": [],
- "spaceLength": 10,
- "stack": false,
- "steppedLine": false,
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "$datasource"
- },
- "exemplar": true,
- "expr": "sum(increase(milvus_indexnode_index_task_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])/120) by (status, pod, node_id)",
- "interval": "",
- "legendFormat": "{{pod}}-{{node_id}}-{{status}}",
- "queryType": "randomWalk",
- "refId": "A"
- }
- ],
- "thresholds": [],
- "timeRegions": [],
- "title": "Index Task Rate",
- "tooltip": {
- "shared": true,
- "sort": 0,
- "value_type": "individual"
- },
- "type": "graph",
- "xaxis": {
- "mode": "time",
- "show": true,
- "values": []
- },
- "yaxes": [
- {
- "$$hashKey": "object:101",
- "format": "short",
- "logBase": 1,
- "min": "0",
- "show": true
- },
- {
- "$$hashKey": "object:102",
- "format": "short",
- "logBase": 1,
- "show": true
- }
- ],
- "yaxis": {
- "align": false
- }
+ "exemplar": true,
+ "expr": "sum(milvus_datacoord_stored_binlog_size{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (app_kubernetes_io_instance)",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "size",
+ "queryType": "randomWalk",
+ "refId": "A"
+ }
+ ],
+ "thresholds": [],
+ "timeRegions": [],
+ "title": "Stored Binlog Size",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "$$hashKey": "object:536",
+ "format": "bytes",
+ "logBase": 1,
+ "min": "0",
+ "show": true
},
{
- "aliasColors": {},
- "bars": false,
- "dashLength": 10,
- "dashes": false,
+ "$$hashKey": "object:537",
+ "format": "short",
+ "logBase": 1,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "description": "Average, maximum and minimum values of the timestamps for time tick lag behind now from datanode.",
+ "fill": 1,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 8,
+ "w": 8,
+ "x": 0,
+ "y": 248
+ },
+ "hiddenSeries": false,
+ "id": 123437,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "10.2.0",
+ "pointradius": 2,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "description": "The 99th percentile and average latency ofr load the FieldData over the last 2 minutes.",
- "fill": 1,
- "fillGradient": 0,
- "gridPos": {
- "h": 6,
- "w": 8,
- "x": 8,
- "y": 8
+ "exemplar": true,
+ "expr": "topK(10, timestamp(milvus_datacoord_channel_checkpoint_unix_seconds{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) - milvus_datacoord_channel_checkpoint_unix_seconds{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (pod, channel_name)",
+ "hide": false,
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "{{pod}}-{{node_id}}-avg",
+ "queryType": "randomWalk",
+ "refId": "A"
+ }
+ ],
+ "thresholds": [],
+ "timeRegions": [],
+ "title": "channel cp lag",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "$$hashKey": "object:536",
+ "decimals": 0,
+ "format": "s",
+ "logBase": 1,
+ "show": true
+ },
+ {
+ "$$hashKey": "object:537",
+ "format": "short",
+ "logBase": 1,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "description": "per-second increasing rate of building index requests recived by IndexCoord.",
+ "fill": 1,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 8,
+ "w": 8,
+ "x": 8,
+ "y": 248
+ },
+ "hiddenSeries": false,
+ "id": 123225,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "10.2.0",
+ "pointradius": 2,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
},
- "hiddenSeries": false,
- "id": 123235,
- "legend": {
- "avg": false,
- "current": false,
- "max": false,
- "min": false,
- "show": true,
- "total": false,
- "values": false
- },
- "lines": true,
- "linewidth": 1,
- "nullPointMode": "null",
- "options": {
- "alertThreshold": true
- },
- "percentage": false,
- "pluginVersion": "8.3.3",
- "pointradius": 2,
- "points": false,
- "renderer": "flot",
- "seriesOverrides": [],
- "spaceLength": 10,
- "stack": false,
- "steppedLine": false,
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "$datasource"
- },
- "exemplar": true,
- "expr": "histogram_quantile(0.99, sum by (le, pod, node_id) (rate(milvus_indexnode_load_field_latency_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])))",
- "interval": "",
- "legendFormat": "p99-{{pod}}-{{node_id}}",
- "queryType": "randomWalk",
- "refId": "A"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "$datasource"
- },
- "exemplar": true,
- "expr": "sum(increase(milvus_indexnode_load_field_latency_sum{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by(pod, node_id) / sum(increase(milvus_indexnode_load_field_latency_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by(pod, node_id)",
- "hide": false,
- "interval": "",
- "legendFormat": "avg-{{pod}}-{{node_id}}",
- "refId": "B"
- }
- ],
- "thresholds": [],
- "timeRegions": [],
- "title": "Load Field Latency",
- "tooltip": {
- "shared": true,
- "sort": 0,
- "value_type": "individual"
- },
- "type": "graph",
- "xaxis": {
- "mode": "time",
- "show": true,
- "values": []
- },
- "yaxes": [
- {
- "$$hashKey": "object:161",
- "format": "short",
- "logBase": 1,
- "show": true
- },
- {
- "$$hashKey": "object:162",
- "format": "short",
- "logBase": 1,
- "show": true
- }
- ],
- "yaxis": {
- "align": false
- }
- },
+ "exemplar": true,
+ "expr": "sum(rate(milvus_datacoord_index_req_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[1m])) by (status)",
+ "interval": "",
+ "legendFormat": "{{status}}",
+ "queryType": "randomWalk",
+ "refId": "A"
+ }
+ ],
+ "thresholds": [],
+ "timeRegions": [],
+ "title": "Index Request Rate",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
{
- "aliasColors": {},
- "bars": false,
- "dashLength": 10,
- "dashes": false,
- "datasource": {
- "type": "prometheus",
- "uid": "$datasource"
- },
- "description": "The 99th percentile and average latency of decod the FieldData over the last 2 minutes.",
- "fill": 1,
- "fillGradient": 0,
- "gridPos": {
- "h": 6,
- "w": 8,
- "x": 16,
- "y": 8
- },
- "hiddenSeries": false,
- "id": 123238,
- "legend": {
- "avg": false,
- "current": false,
- "max": false,
- "min": false,
- "show": true,
- "total": false,
- "values": false
- },
- "lines": true,
- "linewidth": 1,
- "nullPointMode": "null",
- "options": {
- "alertThreshold": true
- },
- "percentage": false,
- "pluginVersion": "8.3.3",
- "pointradius": 2,
- "points": false,
- "renderer": "flot",
- "seriesOverrides": [],
- "spaceLength": 10,
- "stack": false,
- "steppedLine": false,
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "$datasource"
- },
- "exemplar": true,
- "expr": "histogram_quantile(0.99, sum by (le, pod, node_id) (rate(milvus_indexnode_decode_field_latency_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])))",
- "interval": "",
- "legendFormat": "p99-{{pod}}-{{node_id}}",
- "queryType": "randomWalk",
- "refId": "A"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "$datasource"
- },
- "exemplar": true,
- "expr": "sum(increase(milvus_indexnode_decode_field_latency_sum{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by(pod, node_id) / sum(increase(milvus_indexnode_decode_field_latency_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by(pod, node_id)",
- "hide": false,
- "interval": "",
- "legendFormat": "avg-{{pod}}-{{node_id}}",
- "refId": "B"
- }
- ],
- "thresholds": [],
- "timeRegions": [],
- "title": "Decode Field Latency",
- "tooltip": {
- "shared": true,
- "sort": 0,
- "value_type": "individual"
- },
- "type": "graph",
- "xaxis": {
- "mode": "time",
- "show": true,
- "values": []
- },
- "yaxes": [
- {
- "$$hashKey": "object:190",
- "format": "short",
- "label": "",
- "logBase": 1,
- "show": true
- },
- {
- "$$hashKey": "object:191",
- "format": "short",
- "logBase": 1,
- "show": true
- }
- ],
- "yaxis": {
- "align": false
- }
+ "$$hashKey": "object:372",
+ "format": "short",
+ "logBase": 1,
+ "min": "0",
+ "show": true
},
{
- "aliasColors": {},
- "bars": false,
- "dashLength": 10,
- "dashes": false,
+ "$$hashKey": "object:373",
+ "format": "short",
+ "logBase": 1,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "description": "per-second increasing rate of building index requests recived by IndexCoord.",
+ "fill": 1,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 8,
+ "w": 8,
+ "x": 16,
+ "y": 248
+ },
+ "hiddenSeries": false,
+ "id": 123451,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "10.2.0",
+ "pointradius": 2,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "description": "The 99th percentile and average latency of build index over the last 2 minutes.",
- "fill": 1,
- "fillGradient": 0,
- "gridPos": {
- "h": 6,
- "w": 8,
- "x": 0,
- "y": 14
- },
- "hiddenSeries": false,
- "id": 123237,
- "legend": {
- "avg": false,
- "current": false,
- "max": false,
- "min": false,
- "show": true,
- "total": false,
- "values": false
- },
- "lines": true,
- "linewidth": 1,
- "nullPointMode": "null",
- "options": {
- "alertThreshold": true
- },
- "percentage": false,
- "pluginVersion": "8.3.3",
- "pointradius": 2,
- "points": false,
- "renderer": "flot",
- "seriesOverrides": [],
- "spaceLength": 10,
- "stack": false,
- "steppedLine": false,
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "$datasource"
- },
- "exemplar": true,
- "expr": "histogram_quantile(0.99, sum by (le, pod, node_id) (rate(milvus_indexnode_build_index_latency_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])))",
- "interval": "",
- "legendFormat": "p99-{{pod}}-{{node_id}}",
- "queryType": "randomWalk",
- "refId": "A"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "$datasource"
- },
- "exemplar": true,
- "expr": "sum(increase(milvus_indexnode_build_index_latency_sum{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by(pod, node_id) / sum(increase(milvus_indexnode_build_index_latency_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by(pod, node_id)",
- "hide": false,
- "interval": "",
- "legendFormat": "avg-{{pod}}-{{node_id}}",
- "refId": "B"
- }
- ],
- "thresholds": [],
- "timeRegions": [],
- "title": "Build Index Latency",
- "tooltip": {
- "shared": true,
- "sort": 0,
- "value_type": "individual"
- },
- "type": "graph",
- "xaxis": {
- "mode": "time",
- "show": true,
- "values": []
- },
- "yaxes": [
- {
- "$$hashKey": "object:246",
- "format": "short",
- "logBase": 1,
- "min": "0",
- "show": true
- },
- {
- "$$hashKey": "object:247",
- "format": "short",
- "logBase": 1,
- "show": true
- }
- ],
- "yaxis": {
- "align": false
- }
- },
+ "editorMode": "code",
+ "exemplar": true,
+ "expr": "sum(rate(milvus_datacoord_index_task_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[1m])) by (index_task_status)",
+ "interval": "",
+ "legendFormat": "{{index_task_status}}",
+ "queryType": "randomWalk",
+ "range": true,
+ "refId": "A"
+ }
+ ],
+ "thresholds": [],
+ "timeRegions": [],
+ "title": "Index Task Rate",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
{
- "aliasColors": {},
- "bars": false,
- "dashLength": 10,
- "dashes": false,
- "datasource": {
- "type": "prometheus",
- "uid": "$datasource"
- },
- "description": "The 99th percentile and average latency of encode index over the last 2 minutes.",
- "fill": 1,
- "fillGradient": 0,
- "gridPos": {
- "h": 6,
- "w": 8,
- "x": 8,
- "y": 14
- },
- "hiddenSeries": false,
- "id": 123239,
- "legend": {
- "avg": false,
- "current": false,
- "max": false,
- "min": false,
- "show": true,
- "total": false,
- "values": false
- },
- "lines": true,
- "linewidth": 1,
- "nullPointMode": "null",
- "options": {
- "alertThreshold": true
- },
- "percentage": false,
- "pluginVersion": "8.3.3",
- "pointradius": 2,
- "points": false,
- "renderer": "flot",
- "seriesOverrides": [],
- "spaceLength": 10,
- "stack": false,
- "steppedLine": false,
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "$datasource"
- },
- "exemplar": true,
- "expr": "histogram_quantile(0.99, sum by (le, pod, node_id) (rate(milvus_indexnode_encode_index_latency_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])))",
- "interval": "",
- "legendFormat": "p99-{{pod}}-{{node_id}}",
- "queryType": "randomWalk",
- "refId": "A"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "$datasource"
- },
- "exemplar": true,
- "expr": "sum(increase(milvus_indexnode_encode_index_latency_sum{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by(pod, node_id) / sum(increase(milvus_indexnode_encode_index_latency_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by(pod, node_id)",
- "hide": false,
- "interval": "",
- "legendFormat": "avg-{{pod}}-{{node_id}}",
- "refId": "B"
- }
- ],
- "thresholds": [],
- "timeRegions": [],
- "title": "Encode Index Latency",
- "tooltip": {
- "shared": true,
- "sort": 0,
- "value_type": "individual"
- },
- "type": "graph",
- "xaxis": {
- "mode": "time",
- "show": true,
- "values": []
- },
- "yaxes": [
- {
- "$$hashKey": "object:275",
- "format": "short",
- "logBase": 1,
- "min": "0",
- "show": true
- },
- {
- "$$hashKey": "object:276",
- "format": "short",
- "logBase": 1,
- "show": true
- }
- ],
- "yaxis": {
- "align": false
- }
+ "$$hashKey": "object:372",
+ "format": "short",
+ "logBase": 1,
+ "min": "0",
+ "show": true
},
{
- "aliasColors": {},
- "bars": false,
- "dashLength": 10,
- "dashes": false,
+ "$$hashKey": "object:373",
+ "format": "short",
+ "logBase": 1,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false
+ }
+ },
+ {
+ "collapsed": false,
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "gridPos": {
+ "h": 1,
+ "w": 24,
+ "x": 0,
+ "y": 256
+ },
+ "id": 123242,
+ "panels": [],
+ "title": "Data Node",
+ "type": "row"
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "description": "Total number of flowgraph",
+ "fill": 1,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 8,
+ "w": 8,
+ "x": 0,
+ "y": 257
+ },
+ "hiddenSeries": false,
+ "id": 123272,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "10.2.0",
+ "pointradius": 2,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
- },
- "description": "The 99th percentile of latency for save index over the last 2 minutes.",
- "fill": 1,
- "fillGradient": 0,
- "gridPos": {
- "h": 6,
- "w": 8,
- "x": 16,
- "y": 14
- },
- "hiddenSeries": false,
- "id": 123240,
- "legend": {
- "avg": false,
- "current": false,
- "max": false,
- "min": false,
- "show": true,
- "total": false,
- "values": false
- },
- "lines": true,
- "linewidth": 1,
- "nullPointMode": "null",
- "options": {
- "alertThreshold": true
- },
- "percentage": false,
- "pluginVersion": "8.3.3",
- "pointradius": 2,
- "points": false,
- "renderer": "flot",
- "seriesOverrides": [],
- "spaceLength": 10,
- "stack": false,
- "steppedLine": false,
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "$datasource"
- },
- "exemplar": true,
- "expr": "histogram_quantile(0.99, sum by (le, pod, node_id) (rate(milvus_indexnode_save_index_latency_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])))",
- "interval": "",
- "legendFormat": "p99-{{pod}}-{{node_id}}",
- "queryType": "randomWalk",
- "refId": "A"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "$datasource"
- },
- "exemplar": true,
- "expr": "sum(increase(milvus_indexnode_save_index_latency_sum{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by(pod, node_id) / sum(increase(milvus_indexnode_save_index_latency_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by(pod, node_id)",
- "hide": false,
- "interval": "",
- "legendFormat": "avg-{{pod}}-{{node_id}}",
- "refId": "B"
- }
- ],
- "thresholds": [],
- "timeRegions": [],
- "title": "Save Index Latency",
- "tooltip": {
- "shared": true,
- "sort": 0,
- "value_type": "individual"
- },
- "type": "graph",
- "xaxis": {
- "mode": "time",
- "show": true,
- "values": []
+ "uid": "${datasource}"
},
- "yaxes": [
- {
- "$$hashKey": "object:331",
- "format": "short",
- "logBase": 1,
- "show": true
- },
- {
- "$$hashKey": "object:332",
- "format": "short",
- "logBase": 1,
- "show": true
- }
- ],
- "yaxis": {
- "align": false
- }
+ "exemplar": true,
+ "expr": "sum(milvus_datanode_flowgraph_num{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}) by (pod, node_id)",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "{{pod}}-{{node_id}}",
+ "queryType": "randomWalk",
+ "refId": "A"
+ }
+ ],
+ "thresholds": [],
+ "timeRegions": [],
+ "title": "Flowgraph Num",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "$$hashKey": "object:536",
+ "format": "short",
+ "logBase": 1,
+ "min": "0",
+ "show": true
+ },
+ {
+ "$$hashKey": "object:537",
+ "format": "short",
+ "logBase": 1,
+ "show": true
}
],
- "title": "Index Node",
- "type": "row"
+ "yaxis": {
+ "align": false
+ }
},
{
- "collapsed": true,
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "description": "per-second increasing rate of consuming message",
+ "fill": 1,
+ "fillGradient": 0,
"gridPos": {
- "h": 1,
- "w": 24,
- "x": 0,
- "y": 188
+ "h": 8,
+ "w": 8,
+ "x": 8,
+ "y": 257
},
- "id": 123157,
- "panels": [
+ "hiddenSeries": false,
+ "id": 123389,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "10.2.0",
+ "pointradius": 2,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
{
- "aliasColors": {},
- "bars": false,
- "dashLength": 10,
- "dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
- },
- "description": "Total cpu usage of all milvus components.",
- "fill": 1,
- "fillGradient": 0,
- "gridPos": {
- "h": 6,
- "w": 8,
- "x": 0,
- "y": 183
- },
- "hiddenSeries": false,
- "id": 123202,
- "legend": {
- "avg": false,
- "current": false,
- "max": false,
- "min": false,
- "show": true,
- "total": false,
- "values": false
- },
- "lines": true,
- "linewidth": 1,
- "nullPointMode": "null",
- "options": {
- "alertThreshold": true
- },
- "percentage": false,
- "pluginVersion": "8.3.3",
- "pointradius": 2,
- "points": false,
- "renderer": "flot",
- "seriesOverrides": [],
- "spaceLength": 10,
- "stack": false,
- "steppedLine": false,
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "$datasource"
- },
- "exemplar": true,
- "expr": "sum(rate(process_cpu_seconds_total{app_kubernetes_io_name=\"$app_name\", app_kubernetes_io_instance=~\"$instance\", namespace=\"$namespace\"}[5m]))",
- "interval": "",
- "intervalFactor": 2,
- "legendFormat": "cpu usage",
- "queryType": "randomWalk",
- "refId": "A"
- }
- ],
- "thresholds": [],
- "timeRegions": [],
- "title": "CPU Usage Total",
- "tooltip": {
- "shared": true,
- "sort": 0,
- "value_type": "individual"
- },
- "type": "graph",
- "xaxis": {
- "mode": "time",
- "show": true,
- "values": []
+ "uid": "${datasource}"
},
- "yaxes": [
- {
- "$$hashKey": "object:8411",
- "format": "short",
- "logBase": 1,
- "min": "0",
- "show": true
- },
- {
- "$$hashKey": "object:8412",
- "format": "short",
- "logBase": 1,
- "show": true
- }
- ],
- "yaxis": {
- "align": false
- }
+ "exemplar": true,
+ "expr": "sum(increase(milvus_datanode_consume_msg_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])/120) by (pod, node_id, msg_type)",
+ "interval": "",
+ "legendFormat": "{{pod}}-{{node_id}}-{{msg_type}}",
+ "queryType": "randomWalk",
+ "refId": "A"
+ }
+ ],
+ "thresholds": [],
+ "timeRegions": [],
+ "title": "Consumed Message Rate",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "$$hashKey": "object:3414",
+ "format": "cps",
+ "logBase": 1,
+ "min": "0",
+ "show": true
},
{
- "aliasColors": {},
- "bars": false,
- "dashLength": 10,
- "dashes": false,
- "datasource": {
- "uid": "$datasource"
- },
- "fill": 1,
- "fillGradient": 0,
- "gridPos": {
- "h": 6,
- "w": 8,
- "x": 8,
- "y": 183
- },
- "hiddenSeries": false,
- "id": 123204,
- "legend": {
- "avg": false,
- "current": false,
- "max": false,
- "min": false,
- "show": true,
- "total": false,
- "values": false
- },
- "lines": true,
- "linewidth": 1,
- "nullPointMode": "null",
- "options": {
- "alertThreshold": true
- },
- "percentage": false,
- "pluginVersion": "8.3.3",
- "pointradius": 2,
- "points": false,
- "renderer": "flot",
- "seriesOverrides": [],
- "spaceLength": 10,
- "stack": false,
- "steppedLine": false,
- "targets": [
- {
- "exemplar": true,
- "expr": "sum(process_resident_memory_bytes{app_kubernetes_io_name=\"$app_name\", app_kubernetes_io_instance=~\"$instance\", namespace=\"$namespace\"})",
- "interval": "",
- "intervalFactor": 2,
- "legendFormat": "memory",
- "queryType": "randomWalk",
- "refId": "A"
- }
- ],
- "thresholds": [],
- "timeRegions": [],
- "title": "Memory Total",
- "tooltip": {
- "shared": true,
- "sort": 0,
- "value_type": "individual"
- },
- "type": "graph",
- "xaxis": {
- "mode": "time",
- "show": true,
- "values": []
+ "$$hashKey": "object:3415",
+ "format": "short",
+ "logBase": 1,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "description": "Average, maximum and minimum values of the timestamps for time tick lag behind now.",
+ "fill": 1,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 8,
+ "w": 8,
+ "x": 16,
+ "y": 257
+ },
+ "hiddenSeries": false,
+ "id": 123393,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "10.2.0",
+ "pointradius": 2,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
},
- "yaxes": [
- {
- "$$hashKey": "object:1340",
- "format": "bytes",
- "logBase": 1,
- "min": "0",
- "show": true
- },
- {
- "$$hashKey": "object:1341",
- "format": "bytes",
- "logBase": 1,
- "show": false
- }
- ],
- "yaxis": {
- "align": false
- }
+ "exemplar": true,
+ "expr": "avg(milvus_datanode_consume_tt_lag_ms{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\", msg_type=\"all\"}) by (pod, node_id)",
+ "hide": false,
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "{{pod}}-{{node_id}}-avg",
+ "queryType": "randomWalk",
+ "refId": "A"
},
{
- "aliasColors": {},
- "bars": false,
- "dashLength": 10,
- "dashes": false,
"datasource": {
- "uid": "$datasource"
- },
- "description": "Number of goroutines that currently exist.",
- "fill": 1,
- "fillGradient": 0,
- "gridPos": {
- "h": 6,
- "w": 8,
- "x": 16,
- "y": 183
- },
- "hiddenSeries": false,
- "id": 123206,
- "legend": {
- "avg": false,
- "current": false,
- "max": false,
- "min": false,
- "show": true,
- "total": false,
- "values": false
+ "type": "prometheus",
+ "uid": "${datasource}"
},
- "lines": true,
- "linewidth": 1,
- "nullPointMode": "null",
- "options": {
- "alertThreshold": true
+ "exemplar": true,
+ "expr": "max(milvus_datanode_consume_tt_lag_ms{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\", msg_type=\"all\"}) by (pod, node_id)",
+ "hide": false,
+ "interval": "",
+ "legendFormat": "{{pod}}-{{node_id}}-max",
+ "refId": "B"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
},
- "percentage": false,
- "pluginVersion": "8.3.3",
- "pointradius": 2,
- "points": false,
- "renderer": "flot",
- "seriesOverrides": [],
- "spaceLength": 10,
- "stack": false,
- "steppedLine": false,
- "targets": [
- {
- "exemplar": true,
- "expr": "sum(go_goroutines{app_kubernetes_io_name=\"$app_name\", app_kubernetes_io_instance=~\"$instance\", namespace=\"$namespace\"})",
- "interval": "",
- "intervalFactor": 2,
- "legendFormat": "goroutines",
- "queryType": "randomWalk",
- "refId": "A"
- }
- ],
- "thresholds": [],
- "timeRegions": [],
- "title": "Goroutines Total",
- "tooltip": {
- "shared": true,
- "sort": 0,
- "value_type": "individual"
+ "exemplar": true,
+ "expr": "min(milvus_datanode_consume_tt_lag_ms{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\", msg_type=\"all\"}) by (pod, node_id)",
+ "hide": false,
+ "interval": "",
+ "legendFormat": "{{pod}}-{{node_id}}-min",
+ "refId": "C"
+ }
+ ],
+ "thresholds": [],
+ "timeRegions": [],
+ "title": "TimeTick Lag Behind Now (Consumed All)",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "$$hashKey": "object:536",
+ "decimals": 0,
+ "format": "ms",
+ "logBase": 1,
+ "show": true
+ },
+ {
+ "$$hashKey": "object:537",
+ "format": "short",
+ "logBase": 1,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "description": "per-second increasing rate of flush operete.",
+ "fill": 1,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 8,
+ "w": 8,
+ "x": 0,
+ "y": 265
+ },
+ "hiddenSeries": false,
+ "id": 123284,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "10.2.0",
+ "pointradius": 2,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
},
- "type": "graph",
- "xaxis": {
- "mode": "time",
- "show": true,
- "values": []
+ "exemplar": true,
+ "expr": "sum(increase(milvus_datanode_flush_buffer_op_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])/120) by (status, pod, node_id)",
+ "interval": "",
+ "legendFormat": "{{pod}}-{{node_id}}-{{status}}",
+ "queryType": "randomWalk",
+ "refId": "A"
+ }
+ ],
+ "thresholds": [],
+ "timeRegions": [],
+ "title": "Flush Operate Rate",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "$$hashKey": "object:101",
+ "format": "short",
+ "logBase": 1,
+ "min": "0",
+ "show": true
+ },
+ {
+ "$$hashKey": "object:102",
+ "format": "short",
+ "logBase": 1,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "description": "The 99th percentile and average latency of encode the data in the buffer over the last 2 minutes.",
+ "fill": 1,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 8,
+ "w": 8,
+ "x": 8,
+ "y": 265
+ },
+ "hiddenSeries": false,
+ "id": 123282,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "10.2.0",
+ "pointradius": 2,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
},
- "yaxes": [
- {
- "$$hashKey": "object:1281",
- "format": "short",
- "label": "",
- "logBase": 1,
- "min": "0",
- "show": true
- },
- {
- "$$hashKey": "object:1282",
- "format": "short",
- "logBase": 1,
- "show": true
- }
- ],
- "yaxis": {
- "align": false
- }
+ "exemplar": true,
+ "expr": "histogram_quantile(0.99, sum by (le, pod, node_id) (rate(milvus_datanode_encode_buffer_latency_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])))",
+ "interval": "",
+ "legendFormat": "p99-{{pod}}-{{node_id}}",
+ "queryType": "randomWalk",
+ "refId": "A"
},
{
- "aliasColors": {},
- "bars": false,
- "dashLength": 10,
- "dashes": false,
"datasource": {
- "uid": "$datasource"
- },
- "description": "process cpu usage",
- "fill": 1,
- "fillGradient": 0,
- "gridPos": {
- "h": 6,
- "w": 8,
- "x": 0,
- "y": 189
- },
- "hiddenSeries": false,
- "id": 123135,
- "legend": {
- "avg": false,
- "current": false,
- "max": false,
- "min": false,
- "show": true,
- "total": false,
- "values": false
- },
- "lines": true,
- "linewidth": 1,
- "nullPointMode": "null",
- "options": {
- "alertThreshold": true
- },
- "percentage": false,
- "pluginVersion": "8.3.3",
- "pointradius": 2,
- "points": false,
- "renderer": "flot",
- "seriesOverrides": [],
- "spaceLength": 10,
- "stack": false,
- "steppedLine": false,
- "targets": [
- {
- "exemplar": true,
- "expr": "rate(process_cpu_seconds_total{app_kubernetes_io_name=\"$app_name\", app_kubernetes_io_instance=~\"$instance\", namespace=\"$namespace\"}[5m])",
- "interval": "",
- "intervalFactor": 2,
- "legendFormat": "{{pod}}",
- "queryType": "randomWalk",
- "refId": "A"
- }
- ],
- "thresholds": [],
- "timeRegions": [],
- "title": "CPU Usage",
- "tooltip": {
- "shared": true,
- "sort": 0,
- "value_type": "individual"
+ "type": "prometheus",
+ "uid": "${datasource}"
},
- "type": "graph",
- "xaxis": {
- "mode": "time",
- "show": true,
- "values": []
+ "exemplar": true,
+ "expr": "sum(increase(milvus_datanode_encode_buffer_latency_sum{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by(pod, node_id) / sum(increase(milvus_datanode_encode_buffer_latency_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by(pod, node_id)",
+ "hide": false,
+ "interval": "",
+ "legendFormat": "avg-{{pod}}-{{node_id}}",
+ "refId": "B"
+ }
+ ],
+ "thresholds": [],
+ "timeRegions": [],
+ "title": "Encode Buffer Latency",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "$$hashKey": "object:161",
+ "format": "ms",
+ "logBase": 1,
+ "min": "0",
+ "show": true
+ },
+ {
+ "$$hashKey": "object:162",
+ "format": "short",
+ "logBase": 1,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "description": "per-second increasing rate of messages consumed for insert and delete operation.",
+ "fill": 1,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 8,
+ "w": 8,
+ "x": 16,
+ "y": 265
+ },
+ "hiddenSeries": false,
+ "id": 123274,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "10.2.0",
+ "pointradius": 2,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
},
- "yaxes": [
- {
- "format": "short",
- "logBase": 1,
- "show": true
- },
- {
- "format": "short",
- "logBase": 1,
- "show": true
- }
- ],
- "yaxis": {
- "align": false
- }
+ "exemplar": true,
+ "expr": "sum(increase(milvus_datanode_msg_rows_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])/120) by (msg_type, pod, node_id)",
+ "interval": "",
+ "legendFormat": "{{pod}}-{{node_id}}-{{msg_type}}",
+ "queryType": "randomWalk",
+ "refId": "A"
+ }
+ ],
+ "thresholds": [],
+ "timeRegions": [],
+ "title": "Msg Rows Consumed Rate",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "$$hashKey": "object:101",
+ "format": "cps",
+ "logBase": 1,
+ "min": "0",
+ "show": true
},
{
- "aliasColors": {},
- "bars": false,
- "dashLength": 10,
- "dashes": false,
+ "$$hashKey": "object:102",
+ "format": "short",
+ "logBase": 1,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "description": "The 99th percentile and average latency of compaction over the last 2 minutes.",
+ "fill": 1,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 8,
+ "w": 8,
+ "x": 0,
+ "y": 273
+ },
+ "hiddenSeries": false,
+ "id": 123314,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "10.2.0",
+ "pointradius": 2,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
- },
- "description": "Process memory of milvus pod.",
- "fill": 1,
- "fillGradient": 0,
- "gridPos": {
- "h": 6,
- "w": 8,
- "x": 8,
- "y": 189
- },
- "hiddenSeries": false,
- "id": 123133,
- "legend": {
- "avg": false,
- "current": false,
- "max": false,
- "min": false,
- "show": true,
- "total": false,
- "values": false
- },
- "lines": true,
- "linewidth": 1,
- "nullPointMode": "null",
- "options": {
- "alertThreshold": true
- },
- "percentage": false,
- "pluginVersion": "8.3.3",
- "pointradius": 2,
- "points": false,
- "renderer": "flot",
- "seriesOverrides": [],
- "spaceLength": 10,
- "stack": false,
- "steppedLine": false,
- "targets": [
- {
- "exemplar": false,
- "expr": "process_resident_memory_bytes{app_kubernetes_io_name=\"$app_name\", app_kubernetes_io_instance=~\"$instance\", namespace=\"$namespace\"}",
- "hide": false,
- "interval": "",
- "intervalFactor": 2,
- "legendFormat": "{{pod}}",
- "queryType": "randomWalk",
- "refId": "A"
- }
- ],
- "thresholds": [],
- "timeRegions": [],
- "title": "Memory",
- "tooltip": {
- "shared": true,
- "sort": 0,
- "value_type": "individual"
- },
- "type": "graph",
- "xaxis": {
- "mode": "time",
- "show": true,
- "values": []
+ "uid": "${datasource}"
},
- "yaxes": [
- {
- "format": "bytes",
- "logBase": 1,
- "min": "0",
- "show": true
- },
- {
- "format": "bytes",
- "logBase": 1,
- "show": true
- }
- ],
- "yaxis": {
- "align": false
- }
+ "exemplar": true,
+ "expr": "histogram_quantile(0.99, sum by (le, pod, node_id) (rate(milvus_datanode_compaction_latency_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])))",
+ "hide": false,
+ "interval": "",
+ "legendFormat": "p99-{{pod}}-{{node_id}}",
+ "queryType": "randomWalk",
+ "refId": "A"
},
{
- "aliasColors": {},
- "bars": false,
- "dashLength": 10,
- "dashes": false,
"datasource": {
- "uid": "$datasource"
- },
- "description": "Number of goroutines that currently exist.",
- "fill": 1,
- "fillGradient": 0,
- "gridPos": {
- "h": 6,
- "w": 8,
- "x": 16,
- "y": 189
- },
- "hiddenSeries": false,
- "id": 123125,
- "legend": {
- "avg": false,
- "current": false,
- "max": false,
- "min": false,
- "show": true,
- "total": false,
- "values": false
- },
- "lines": true,
- "linewidth": 1,
- "nullPointMode": "null",
- "options": {
- "alertThreshold": true
- },
- "percentage": false,
- "pluginVersion": "8.3.3",
- "pointradius": 2,
- "points": false,
- "renderer": "flot",
- "seriesOverrides": [],
- "spaceLength": 10,
- "stack": false,
- "steppedLine": false,
- "targets": [
- {
- "exemplar": true,
- "expr": "go_goroutines{app_kubernetes_io_name=\"$app_name\", app_kubernetes_io_instance=~\"$instance\", namespace=\"$namespace\"}",
- "interval": "",
- "intervalFactor": 2,
- "legendFormat": "{{pod}}",
- "queryType": "randomWalk",
- "refId": "A"
- }
- ],
- "thresholds": [],
- "timeRegions": [],
- "title": "Goroutines",
- "tooltip": {
- "shared": true,
- "sort": 0,
- "value_type": "individual"
+ "type": "prometheus",
+ "uid": "${datasource}"
},
- "type": "graph",
- "xaxis": {
- "mode": "time",
- "show": true,
- "values": []
+ "exemplar": true,
+ "expr": "sum(increase(milvus_datanode_compaction_latency_sum{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by(pod, node_id) / sum(increase(milvus_datanode_compaction_latency_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by(pod, node_id)",
+ "hide": false,
+ "interval": "",
+ "legendFormat": "avg-{{pod}}-{{node_id}}",
+ "refId": "B"
+ }
+ ],
+ "thresholds": [],
+ "timeRegions": [],
+ "title": "Compaction Latency",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "$$hashKey": "object:161",
+ "format": "ms",
+ "logBase": 1,
+ "min": "0",
+ "show": true
+ },
+ {
+ "$$hashKey": "object:162",
+ "format": "short",
+ "logBase": 1,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "description": "per-second increasing rate of auto flush operate.",
+ "fill": 1,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 8,
+ "w": 8,
+ "x": 8,
+ "y": 273
+ },
+ "hiddenSeries": false,
+ "id": 123285,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "10.2.0",
+ "pointradius": 2,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
},
- "yaxes": [
- {
- "format": "short",
- "logBase": 1,
- "show": true
- },
- {
- "format": "short",
- "logBase": 1,
- "show": true
- }
- ],
- "yaxis": {
- "align": false
- }
+ "exemplar": true,
+ "expr": "sum(increase(milvus_datanode_autoflush_buffer_op_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])/120) by (status, pod, node_id)",
+ "interval": "",
+ "legendFormat": "{{pod}}-{{node_id}}-{{status}}",
+ "queryType": "randomWalk",
+ "refId": "A"
+ }
+ ],
+ "thresholds": [],
+ "timeRegions": [],
+ "title": "Autoflush Operate Rate",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "$$hashKey": "object:101",
+ "format": "short",
+ "logBase": 1,
+ "min": "0",
+ "show": true
},
{
- "aliasColors": {},
- "bars": false,
- "dashLength": 10,
- "dashes": false,
+ "$$hashKey": "object:102",
+ "format": "short",
+ "logBase": 1,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "description": "per-second increasing rate of each message that has been flushed.",
+ "fill": 1,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 8,
+ "w": 8,
+ "x": 16,
+ "y": 273
+ },
+ "hiddenSeries": false,
+ "id": 123275,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "10.2.0",
+ "pointradius": 2,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
"datasource": {
- "uid": "$datasource"
- },
- "description": "Number of bytes allocated and still in use.",
- "fill": 1,
- "fillGradient": 0,
- "gridPos": {
- "h": 6,
- "w": 8,
- "x": 0,
- "y": 195
- },
- "hiddenSeries": false,
- "id": 123137,
- "legend": {
- "avg": false,
- "current": false,
- "max": false,
- "min": false,
- "show": true,
- "total": false,
- "values": false
- },
- "lines": true,
- "linewidth": 1,
- "nullPointMode": "null",
- "options": {
- "alertThreshold": true
- },
- "percentage": false,
- "pluginVersion": "8.3.3",
- "pointradius": 2,
- "points": false,
- "renderer": "flot",
- "seriesOverrides": [],
- "spaceLength": 10,
- "stack": false,
- "steppedLine": false,
- "targets": [
- {
- "exemplar": true,
- "expr": "go_memstats_alloc_bytes{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}",
- "interval": "",
- "intervalFactor": 2,
- "legendFormat": "{{pod}}",
- "queryType": "randomWalk",
- "refId": "A"
- }
- ],
- "thresholds": [],
- "timeRegions": [],
- "title": "Go Allocated Memory",
- "tooltip": {
- "shared": true,
- "sort": 0,
- "value_type": "individual"
- },
- "type": "graph",
- "xaxis": {
- "mode": "time",
- "show": true,
- "values": []
+ "type": "prometheus",
+ "uid": "${datasource}"
},
- "yaxes": [
- {
- "format": "bytes",
- "logBase": 1,
- "min": "0",
- "show": true
- },
- {
- "format": "bytes",
- "logBase": 1,
- "show": true
- }
- ],
- "yaxis": {
- "align": false
- }
+ "exemplar": true,
+ "expr": "sum(increase(milvus_datanode_flushed_data_size{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])/120) by (msg_type, pod, node_id)",
+ "interval": "",
+ "legendFormat": "{{pod}}-{{node_id}}-{{msg_type}}",
+ "queryType": "randomWalk",
+ "refId": "A"
+ }
+ ],
+ "thresholds": [],
+ "timeRegions": [],
+ "title": "Flush Data Size Rate",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "$$hashKey": "object:101",
+ "format": "binBps",
+ "logBase": 1,
+ "min": "0",
+ "show": true
},
{
- "aliasColors": {},
- "bars": false,
- "dashLength": 10,
- "dashes": false,
+ "$$hashKey": "object:102",
+ "format": "short",
+ "logBase": 1,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "description": "per-second increasing rate of flush requests.",
+ "fill": 1,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 8,
+ "w": 8,
+ "x": 0,
+ "y": 281
+ },
+ "hiddenSeries": false,
+ "id": 123286,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "10.2.0",
+ "pointradius": 2,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
"datasource": {
- "uid": "$datasource"
- },
- "description": "GC Max duration seconds.",
- "fill": 1,
- "fillGradient": 0,
- "gridPos": {
- "h": 6,
- "w": 8,
- "x": 8,
- "y": 195
- },
- "hiddenSeries": false,
- "id": 123131,
- "legend": {
- "avg": false,
- "current": false,
- "max": false,
- "min": false,
- "show": true,
- "total": false,
- "values": false
- },
- "lines": true,
- "linewidth": 1,
- "nullPointMode": "null",
- "options": {
- "alertThreshold": true
- },
- "percentage": false,
- "pluginVersion": "8.3.3",
- "pointradius": 2,
- "points": false,
- "renderer": "flot",
- "seriesOverrides": [],
- "spaceLength": 10,
- "stack": false,
- "steppedLine": false,
- "targets": [
- {
- "exemplar": true,
- "expr": "go_gc_duration_seconds{quantile=\"1\", app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}",
- "interval": "",
- "legendFormat": "{{pod}}",
- "queryType": "randomWalk",
- "refId": "A"
- }
- ],
- "thresholds": [],
- "timeRegions": [],
- "title": "GC Max duration seconds",
- "tooltip": {
- "shared": true,
- "sort": 0,
- "value_type": "individual"
- },
- "type": "graph",
- "xaxis": {
- "mode": "time",
- "show": true,
- "values": []
+ "type": "prometheus",
+ "uid": "${datasource}"
},
- "yaxes": [
- {
- "format": "short",
- "logBase": 1,
- "show": true
- },
- {
- "format": "short",
- "logBase": 1,
- "show": true
- }
- ],
- "yaxis": {
- "align": false
- }
+ "exemplar": true,
+ "expr": "sum(increase(milvus_datanode_flush_req_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])/120) by (status, pod, node_id)",
+ "interval": "",
+ "legendFormat": "{{pod}}-{{node_id}}-{{status}}",
+ "queryType": "randomWalk",
+ "refId": "A"
+ }
+ ],
+ "thresholds": [],
+ "timeRegions": [],
+ "title": "Flush Request Rate",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "$$hashKey": "object:101",
+ "format": "short",
+ "logBase": 1,
+ "min": "0",
+ "show": true
},
{
- "aliasColors": {},
- "bars": false,
- "dashLength": 10,
- "dashes": false,
+ "$$hashKey": "object:102",
+ "format": "short",
+ "logBase": 1,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "description": "The 99th percentile and average latency of writte the data in buffer to storage over the last 2 minutes.",
+ "fill": 1,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 8,
+ "w": 8,
+ "x": 8,
+ "y": 281
+ },
+ "hiddenSeries": false,
+ "id": 123283,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "10.2.0",
+ "pointradius": 2,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
"datasource": {
- "uid": "$datasource"
- },
- "description": "Number of OS threads created.",
- "fill": 1,
- "fillGradient": 0,
- "gridPos": {
- "h": 6,
- "w": 8,
- "x": 16,
- "y": 195
- },
- "hiddenSeries": false,
- "id": 123127,
- "legend": {
- "avg": false,
- "current": false,
- "max": false,
- "min": false,
- "show": true,
- "total": false,
- "values": false
- },
- "lines": true,
- "linewidth": 1,
- "nullPointMode": "null",
- "options": {
- "alertThreshold": true
- },
- "percentage": false,
- "pluginVersion": "8.3.3",
- "pointradius": 2,
- "points": false,
- "renderer": "flot",
- "seriesOverrides": [],
- "spaceLength": 10,
- "stack": false,
- "steppedLine": false,
- "targets": [
- {
- "exemplar": true,
- "expr": "go_threads{app_kubernetes_io_name=\"$app_name\", app_kubernetes_io_instance=~\"$instance\"}",
- "interval": "",
- "intervalFactor": 2,
- "legendFormat": "{{pod}}",
- "queryType": "randomWalk",
- "refId": "A"
- }
- ],
- "thresholds": [],
- "timeRegions": [],
- "title": "OS Threads",
- "tooltip": {
- "shared": true,
- "sort": 0,
- "value_type": "individual"
+ "type": "prometheus",
+ "uid": "${datasource}"
},
- "type": "graph",
- "xaxis": {
- "mode": "time",
- "show": true,
- "values": []
+ "exemplar": true,
+ "expr": "histogram_quantile(0.99, sum by (le, pod, node_id) (rate(milvus_datanode_save_latency_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])))",
+ "interval": "",
+ "legendFormat": "p99-{{pod}}-{{node_id}}",
+ "queryType": "randomWalk",
+ "refId": "A"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
},
- "yaxes": [
- {
- "format": "short",
- "logBase": 1,
- "min": "0",
- "show": true
- },
- {
- "format": "short",
- "logBase": 1,
- "show": true
- }
- ],
- "yaxis": {
- "align": false
- }
+ "exemplar": true,
+ "expr": "sum(increase(milvus_datanode_save_latency_sum{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by(pod, node_id) / sum(increase(milvus_datanode_save_latency_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by(pod, node_id)",
+ "hide": false,
+ "interval": "",
+ "legendFormat": "avg-{{pod}}-{{node_id}}",
+ "refId": "B"
+ }
+ ],
+ "thresholds": [],
+ "timeRegions": [],
+ "title": "Save Data Latency",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "$$hashKey": "object:161",
+ "format": "ms",
+ "logBase": 1,
+ "min": "0",
+ "show": true
},
+ {
+ "$$hashKey": "object:162",
+ "format": "short",
+ "logBase": 1,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false
+ }
+ },
+ {
+ "collapsed": true,
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "gridPos": {
+ "h": 1,
+ "w": 24,
+ "x": 0,
+ "y": 289
+ },
+ "id": 123231,
+ "panels": [
{
"aliasColors": {},
"bars": false,
"dashLength": 10,
"dashes": false,
"datasource": {
- "uid": "$datasource"
+ "type": "prometheus",
+ "uid": "${datasource}"
},
- "description": "Next GC Bytes.",
+ "description": "per-second increasing rate of index tasks recevied by IndexNode",
"fill": 1,
"fillGradient": 0,
"gridPos": {
- "h": 6,
+ "h": 8,
"w": 8,
"x": 0,
- "y": 201
+ "y": 306
},
"hiddenSeries": false,
- "id": 123129,
+ "id": 123233,
"legend": {
"avg": false,
"current": false,
@@ -11436,7 +12825,7 @@
"alertThreshold": true
},
"percentage": false,
- "pluginVersion": "8.3.3",
+ "pluginVersion": "10.2.0",
"pointradius": 2,
"points": false,
"renderer": "flot",
@@ -11446,18 +12835,21 @@
"steppedLine": false,
"targets": [
{
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
"exemplar": true,
- "expr": "go_memstats_next_gc_bytes{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}",
+ "expr": "sum(increase(milvus_indexnode_index_task_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])/120) by (status, pod, node_id)",
"interval": "",
- "intervalFactor": 2,
- "legendFormat": "{{pod}}",
+ "legendFormat": "{{pod}}-{{node_id}}-{{status}}",
"queryType": "randomWalk",
"refId": "A"
}
],
"thresholds": [],
"timeRegions": [],
- "title": "Next GC Bytes",
+ "title": "Index Task Rate",
"tooltip": {
"shared": true,
"sort": 0,
@@ -11471,12 +12863,14 @@
},
"yaxes": [
{
- "format": "bytes",
+ "$$hashKey": "object:101",
+ "format": "short",
"logBase": 1,
"min": "0",
"show": true
},
{
+ "$$hashKey": "object:102",
"format": "short",
"logBase": 1,
"show": true
@@ -11492,19 +12886,26 @@
"dashLength": 10,
"dashes": false,
"datasource": {
- "uid": "$datasource"
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "description": "The 99th percentile and average latency ofr load the FieldData over the last 2 minutes.",
+ "fieldConfig": {
+ "defaults": {
+ "unit": "ms"
+ },
+ "overrides": []
},
- "description": "Number of process opened fds.",
"fill": 1,
"fillGradient": 0,
"gridPos": {
- "h": 6,
+ "h": 8,
"w": 8,
"x": 8,
- "y": 201
+ "y": 306
},
"hiddenSeries": false,
- "id": 123211,
+ "id": 123235,
"legend": {
"avg": false,
"current": false,
@@ -11521,7 +12922,7 @@
"alertThreshold": true
},
"percentage": false,
- "pluginVersion": "8.3.3",
+ "pluginVersion": "10.2.0",
"pointradius": 2,
"points": false,
"renderer": "flot",
@@ -11531,103 +12932,33 @@
"steppedLine": false,
"targets": [
{
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
"exemplar": true,
- "expr": "process_open_fds{app_kubernetes_io_name=\"$app_name\", app_kubernetes_io_instance=~\"$instance\", namespace=\"$namespace\"}",
+ "expr": "histogram_quantile(0.99, sum by (le, pod, node_id) (rate(milvus_indexnode_load_field_latency_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])))",
"interval": "",
- "intervalFactor": 2,
- "legendFormat": "{{pod}}",
+ "legendFormat": "p99-{{pod}}-{{node_id}}",
"queryType": "randomWalk",
"refId": "A"
- }
- ],
- "thresholds": [],
- "timeRegions": [],
- "title": "Process Opened Fds",
- "tooltip": {
- "shared": true,
- "sort": 0,
- "value_type": "individual"
- },
- "type": "graph",
- "xaxis": {
- "mode": "time",
- "show": true,
- "values": []
- },
- "yaxes": [
- {
- "format": "short",
- "logBase": 1,
- "min": "0",
- "show": true
},
{
- "format": "short",
- "logBase": 1,
- "show": true
- }
- ],
- "yaxis": {
- "align": false
- }
- },
- {
- "aliasColors": {},
- "bars": false,
- "dashLength": 10,
- "dashes": false,
- "datasource": {
- "uid": "$datasource"
- },
- "description": "The fraction of this program's available CPU time used by the GC since the program started.",
- "fill": 1,
- "fillGradient": 0,
- "gridPos": {
- "h": 6,
- "w": 8,
- "x": 16,
- "y": 201
- },
- "hiddenSeries": false,
- "id": 123212,
- "legend": {
- "avg": false,
- "current": false,
- "max": false,
- "min": false,
- "show": true,
- "total": false,
- "values": false
- },
- "lines": true,
- "linewidth": 1,
- "nullPointMode": "null",
- "options": {
- "alertThreshold": true
- },
- "percentage": false,
- "pluginVersion": "8.3.3",
- "pointradius": 2,
- "points": false,
- "renderer": "flot",
- "seriesOverrides": [],
- "spaceLength": 10,
- "stack": false,
- "steppedLine": false,
- "targets": [
- {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
"exemplar": true,
- "expr": "go_memstats_gc_cpu_fraction{app_kubernetes_io_name=\"$app_name\", app_kubernetes_io_instance=~\"$instance\", namespace=\"$namespace\"}",
+ "expr": "sum(increase(milvus_indexnode_load_field_latency_sum{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by(pod, node_id) / sum(increase(milvus_indexnode_load_field_latency_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by(pod, node_id)",
+ "hide": false,
"interval": "",
- "intervalFactor": 2,
- "legendFormat": "{{pod}}",
- "queryType": "randomWalk",
- "refId": "A"
+ "legendFormat": "avg-{{pod}}-{{node_id}}",
+ "refId": "B"
}
],
"thresholds": [],
"timeRegions": [],
- "title": "GC CPU time",
+ "title": "Load Field Latency",
"tooltip": {
"shared": true,
"sort": 0,
@@ -11641,12 +12972,13 @@
},
"yaxes": [
{
- "format": "short",
+ "$$hashKey": "object:161",
+ "format": "ms",
"logBase": 1,
- "min": "0",
"show": true
},
{
+ "$$hashKey": "object:162",
"format": "short",
"logBase": 1,
"show": true
@@ -11662,19 +12994,20 @@
"dashLength": 10,
"dashes": false,
"datasource": {
- "uid": "$datasource"
+ "type": "prometheus",
+ "uid": "${datasource}"
},
- "description": "Rate of memory frees.",
+ "description": "The 99th percentile and average latency of decod the FieldData over the last 2 minutes.",
"fill": 1,
"fillGradient": 0,
"gridPos": {
- "h": 6,
+ "h": 8,
"w": 8,
- "x": 0,
- "y": 207
+ "x": 16,
+ "y": 306
},
"hiddenSeries": false,
- "id": 123213,
+ "id": 123238,
"legend": {
"avg": false,
"current": false,
@@ -11691,7 +13024,7 @@
"alertThreshold": true
},
"percentage": false,
- "pluginVersion": "8.3.3",
+ "pluginVersion": "10.2.0",
"pointradius": 2,
"points": false,
"renderer": "flot",
@@ -11701,103 +13034,33 @@
"steppedLine": false,
"targets": [
{
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
"exemplar": true,
- "expr": "rate(go_memstats_frees_total{app_kubernetes_io_name=\"$app_name\", app_kubernetes_io_instance=~\"$instance\", namespace=\"$namespace\"}[5m])",
+ "expr": "histogram_quantile(0.99, sum by (le, pod, node_id) (rate(milvus_indexnode_decode_field_latency_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])))",
"interval": "",
- "intervalFactor": 2,
- "legendFormat": "{{pod}}",
+ "legendFormat": "p99-{{pod}}-{{node_id}}",
"queryType": "randomWalk",
"refId": "A"
- }
- ],
- "thresholds": [],
- "timeRegions": [],
- "title": "Memory Free Rate",
- "tooltip": {
- "shared": true,
- "sort": 0,
- "value_type": "individual"
- },
- "type": "graph",
- "xaxis": {
- "mode": "time",
- "show": true,
- "values": []
- },
- "yaxes": [
- {
- "format": "short",
- "logBase": 1,
- "min": "0",
- "show": true
},
{
- "format": "short",
- "logBase": 1,
- "show": true
- }
- ],
- "yaxis": {
- "align": false
- }
- },
- {
- "aliasColors": {},
- "bars": false,
- "dashLength": 10,
- "dashes": false,
- "datasource": {
- "uid": "$datasource"
- },
- "description": "Rate of go memory mallocs.",
- "fill": 1,
- "fillGradient": 0,
- "gridPos": {
- "h": 6,
- "w": 8,
- "x": 8,
- "y": 207
- },
- "hiddenSeries": false,
- "id": 123215,
- "legend": {
- "avg": false,
- "current": false,
- "max": false,
- "min": false,
- "show": true,
- "total": false,
- "values": false
- },
- "lines": true,
- "linewidth": 1,
- "nullPointMode": "null",
- "options": {
- "alertThreshold": true
- },
- "percentage": false,
- "pluginVersion": "8.3.3",
- "pointradius": 2,
- "points": false,
- "renderer": "flot",
- "seriesOverrides": [],
- "spaceLength": 10,
- "stack": false,
- "steppedLine": false,
- "targets": [
- {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
"exemplar": true,
- "expr": "rate(go_memstats_mallocs_total{app_kubernetes_io_name=\"$app_name\", app_kubernetes_io_instance=~\"$instance\", namespace=\"$namespace\"}[2m])",
+ "expr": "sum(increase(milvus_indexnode_decode_field_latency_sum{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by(pod, node_id) / sum(increase(milvus_indexnode_decode_field_latency_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by(pod, node_id)",
+ "hide": false,
"interval": "",
- "intervalFactor": 2,
- "legendFormat": "{{pod}}",
- "queryType": "randomWalk",
- "refId": "A"
+ "legendFormat": "avg-{{pod}}-{{node_id}}",
+ "refId": "B"
}
],
"thresholds": [],
"timeRegions": [],
- "title": "Go Memory mallocs rate.",
+ "title": "Decode Field Latency",
"tooltip": {
"shared": true,
"sort": 0,
@@ -11811,12 +13074,14 @@
},
"yaxes": [
{
+ "$$hashKey": "object:190",
"format": "short",
+ "label": "",
"logBase": 1,
- "min": "0",
"show": true
},
{
+ "$$hashKey": "object:191",
"format": "short",
"logBase": 1,
"show": true
@@ -11832,19 +13097,26 @@
"dashLength": 10,
"dashes": false,
"datasource": {
- "uid": "$datasource"
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "description": "The 99th percentile and average latency of build index over the last 2 minutes.",
+ "fieldConfig": {
+ "defaults": {
+ "unit": "ms"
+ },
+ "overrides": []
},
- "description": "Number of allocated heap objects.",
"fill": 1,
"fillGradient": 0,
"gridPos": {
- "h": 6,
+ "h": 8,
"w": 8,
- "x": 16,
- "y": 207
+ "x": 0,
+ "y": 314
},
"hiddenSeries": false,
- "id": 123216,
+ "id": 123237,
"legend": {
"avg": false,
"current": false,
@@ -11861,7 +13133,7 @@
"alertThreshold": true
},
"percentage": false,
- "pluginVersion": "8.3.3",
+ "pluginVersion": "10.2.0",
"pointradius": 2,
"points": false,
"renderer": "flot",
@@ -11871,18 +13143,33 @@
"steppedLine": false,
"targets": [
{
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
"exemplar": true,
- "expr": "go_memstats_heap_objects{app_kubernetes_io_name=\"$app_name\", app_kubernetes_io_instance=~\"$instance\", namespace=\"$namespace\"}",
+ "expr": "histogram_quantile(0.99, sum by (le, pod, node_id) (rate(milvus_indexnode_build_index_latency_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])))",
"interval": "",
- "intervalFactor": 2,
- "legendFormat": "{{pod}}",
+ "legendFormat": "p99-{{pod}}-{{node_id}}",
"queryType": "randomWalk",
"refId": "A"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "exemplar": true,
+ "expr": "sum(increase(milvus_indexnode_build_index_latency_sum{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by(pod, node_id) / sum(increase(milvus_indexnode_build_index_latency_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by(pod, node_id)",
+ "hide": false,
+ "interval": "",
+ "legendFormat": "avg-{{pod}}-{{node_id}}",
+ "refId": "B"
}
],
"thresholds": [],
"timeRegions": [],
- "title": "Allocated Heap Objects",
+ "title": "Build Index Latency",
"tooltip": {
"shared": true,
"sort": 0,
@@ -11896,12 +13183,14 @@
},
"yaxes": [
{
- "format": "short",
+ "$$hashKey": "object:246",
+ "format": "ms",
"logBase": 1,
"min": "0",
"show": true
},
{
+ "$$hashKey": "object:247",
"format": "short",
"logBase": 1,
"show": true
@@ -11918,19 +13207,19 @@
"dashes": false,
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "description": "Rate of bytes allocated, even if freed.",
+ "description": "The 99th percentile and average latency of encode index over the last 2 minutes.",
"fill": 1,
"fillGradient": 0,
"gridPos": {
- "h": 6,
+ "h": 8,
"w": 8,
- "x": 0,
- "y": 213
+ "x": 8,
+ "y": 314
},
"hiddenSeries": false,
- "id": 123217,
+ "id": 123239,
"legend": {
"avg": false,
"current": false,
@@ -11947,7 +13236,7 @@
"alertThreshold": true
},
"percentage": false,
- "pluginVersion": "8.3.3",
+ "pluginVersion": "10.2.0",
"pointradius": 2,
"points": false,
"renderer": "flot",
@@ -11959,20 +13248,31 @@
{
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
"exemplar": true,
- "expr": "rate(go_memstats_alloc_bytes_total{app_kubernetes_io_name=\"$app_name\", app_kubernetes_io_instance=~\"$instance\", namespace=\"$namespace\"}[5m])",
+ "expr": "histogram_quantile(0.99, sum by (le, pod, node_id) (rate(milvus_indexnode_encode_index_latency_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])))",
"interval": "",
- "intervalFactor": 2,
- "legendFormat": "{{pod}}",
+ "legendFormat": "p99-{{pod}}-{{node_id}}",
"queryType": "randomWalk",
"refId": "A"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "exemplar": true,
+ "expr": "sum(increase(milvus_indexnode_encode_index_latency_sum{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by(pod, node_id) / sum(increase(milvus_indexnode_encode_index_latency_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by(pod, node_id)",
+ "hide": false,
+ "interval": "",
+ "legendFormat": "avg-{{pod}}-{{node_id}}",
+ "refId": "B"
}
],
"thresholds": [],
"timeRegions": [],
- "title": "Memory Allocated Rate",
+ "title": "Encode Index Latency",
"tooltip": {
"shared": true,
"sort": 0,
@@ -11986,14 +13286,14 @@
},
"yaxes": [
{
- "$$hashKey": "object:8539",
+ "$$hashKey": "object:275",
"format": "short",
"logBase": 1,
"min": "0",
"show": true
},
{
- "$$hashKey": "object:8540",
+ "$$hashKey": "object:276",
"format": "short",
"logBase": 1,
"show": true
@@ -12009,19 +13309,20 @@
"dashLength": 10,
"dashes": false,
"datasource": {
- "uid": "$datasource"
+ "type": "prometheus",
+ "uid": "${datasource}"
},
- "description": "Number of heap bytes released to OS.",
+ "description": "The 99th percentile of latency for save index over the last 2 minutes.",
"fill": 1,
"fillGradient": 0,
"gridPos": {
- "h": 6,
+ "h": 8,
"w": 8,
- "x": 8,
- "y": 213
+ "x": 16,
+ "y": 314
},
"hiddenSeries": false,
- "id": 123218,
+ "id": 123240,
"legend": {
"avg": false,
"current": false,
@@ -12038,7 +13339,7 @@
"alertThreshold": true
},
"percentage": false,
- "pluginVersion": "8.3.3",
+ "pluginVersion": "10.2.0",
"pointradius": 2,
"points": false,
"renderer": "flot",
@@ -12048,18 +13349,33 @@
"steppedLine": false,
"targets": [
{
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
"exemplar": true,
- "expr": "go_memstats_heap_released_bytes{app_kubernetes_io_name=\"$app_name\", app_kubernetes_io_instance=~\"$instance\", namespace=\"$namespace\"}",
+ "expr": "histogram_quantile(0.99, sum by (le, pod, node_id) (rate(milvus_indexnode_save_index_latency_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])))",
"interval": "",
- "intervalFactor": 2,
- "legendFormat": "{{pod}}",
+ "legendFormat": "p99-{{pod}}-{{node_id}}",
"queryType": "randomWalk",
"refId": "A"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "exemplar": true,
+ "expr": "sum(increase(milvus_indexnode_save_index_latency_sum{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by(pod, node_id) / sum(increase(milvus_indexnode_save_index_latency_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by(pod, node_id)",
+ "hide": false,
+ "interval": "",
+ "legendFormat": "avg-{{pod}}-{{node_id}}",
+ "refId": "B"
}
],
"thresholds": [],
"timeRegions": [],
- "title": "Go Heap released",
+ "title": "Save Index Latency",
"tooltip": {
"shared": true,
"sort": 0,
@@ -12073,12 +13389,13 @@
},
"yaxes": [
{
- "format": "bytes",
+ "$$hashKey": "object:331",
+ "format": "short",
"logBase": 1,
- "min": "0",
"show": true
},
{
+ "$$hashKey": "object:332",
"format": "short",
"logBase": 1,
"show": true
@@ -12087,1742 +13404,1725 @@
"yaxis": {
"align": false
}
+ }
+ ],
+ "title": "Index Node",
+ "type": "row"
+ },
+ {
+ "collapsed": false,
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "gridPos": {
+ "h": 1,
+ "w": 24,
+ "x": 0,
+ "y": 290
+ },
+ "id": 123157,
+ "panels": [],
+ "title": "Runtime",
+ "type": "row"
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "description": "Total cpu usage of all milvus components.",
+ "fill": 1,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 8,
+ "w": 8,
+ "x": 0,
+ "y": 291
+ },
+ "hiddenSeries": false,
+ "id": 123202,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "10.2.0",
+ "pointradius": 2,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "editorMode": "code",
+ "exemplar": true,
+ "expr": "sum(rate(process_cpu_seconds_total{app_kubernetes_io_name=\"$app_name\", app_kubernetes_io_instance=~\"$instance\", namespace=\"$namespace\"}[1m]))",
+ "interval": "",
+ "intervalFactor": 1,
+ "legendFormat": "cpu usage",
+ "queryType": "randomWalk",
+ "range": true,
+ "refId": "A"
+ }
+ ],
+ "thresholds": [],
+ "timeRegions": [],
+ "title": "CPU Usage Total",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "$$hashKey": "object:8411",
+ "format": "short",
+ "logBase": 1,
+ "min": "0",
+ "show": true
+ },
+ {
+ "$$hashKey": "object:8412",
+ "format": "short",
+ "logBase": 1,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": {
+ "uid": "${datasource}"
+ },
+ "fill": 1,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 8,
+ "w": 8,
+ "x": 8,
+ "y": 291
+ },
+ "hiddenSeries": false,
+ "id": 123204,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "10.2.0",
+ "pointradius": 2,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "exemplar": true,
+ "expr": "sum(process_resident_memory_bytes{app_kubernetes_io_name=\"$app_name\", app_kubernetes_io_instance=~\"$instance\", namespace=\"$namespace\"})",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "memory",
+ "queryType": "randomWalk",
+ "refId": "A"
+ }
+ ],
+ "thresholds": [],
+ "timeRegions": [],
+ "title": "Memory Total",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "$$hashKey": "object:1340",
+ "format": "bytes",
+ "logBase": 1,
+ "min": "0",
+ "show": true
},
{
- "aliasColors": {},
- "bars": false,
- "dashLength": 10,
- "dashes": false,
- "datasource": {
- "uid": "$datasource"
- },
- "description": "Number of heap bytes waiting to be used.",
- "fill": 1,
- "fillGradient": 0,
- "gridPos": {
- "h": 6,
- "w": 8,
- "x": 16,
- "y": 213
- },
- "hiddenSeries": false,
- "id": 123219,
- "legend": {
- "avg": false,
- "current": false,
- "max": false,
- "min": false,
- "show": true,
- "total": false,
- "values": false
- },
- "lines": true,
- "linewidth": 1,
- "nullPointMode": "null",
- "options": {
- "alertThreshold": true
- },
- "percentage": false,
- "pluginVersion": "8.3.3",
- "pointradius": 2,
- "points": false,
- "renderer": "flot",
- "seriesOverrides": [],
- "spaceLength": 10,
- "stack": false,
- "steppedLine": false,
- "targets": [
- {
- "exemplar": true,
- "expr": "go_memstats_heap_idle_bytes{app_kubernetes_io_name=\"$app_name\", app_kubernetes_io_instance=~\"$instance\", namespace=\"$namespace\"}",
- "interval": "",
- "intervalFactor": 2,
- "legendFormat": "{{pod}}",
- "queryType": "randomWalk",
- "refId": "A"
- }
- ],
- "thresholds": [],
- "timeRegions": [],
- "title": "Go Heap idle",
- "tooltip": {
- "shared": true,
- "sort": 0,
- "value_type": "individual"
- },
- "type": "graph",
- "xaxis": {
- "mode": "time",
- "show": true,
- "values": []
- },
- "yaxes": [
- {
- "format": "bytes",
- "logBase": 1,
- "min": "0",
- "show": true
- },
- {
- "format": "short",
- "logBase": 1,
- "show": true
- }
- ],
- "yaxis": {
- "align": false
- }
+ "$$hashKey": "object:1341",
+ "format": "bytes",
+ "logBase": 1,
+ "show": false
+ }
+ ],
+ "yaxis": {
+ "align": false
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": {
+ "uid": "${datasource}"
+ },
+ "description": "Number of goroutines that currently exist.",
+ "fill": 1,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 8,
+ "w": 8,
+ "x": 16,
+ "y": 291
+ },
+ "hiddenSeries": false,
+ "id": 123206,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "10.2.0",
+ "pointradius": 2,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "exemplar": true,
+ "expr": "sum(go_goroutines{app_kubernetes_io_name=\"$app_name\", app_kubernetes_io_instance=~\"$instance\", namespace=\"$namespace\"})",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "goroutines",
+ "queryType": "randomWalk",
+ "refId": "A"
+ }
+ ],
+ "thresholds": [],
+ "timeRegions": [],
+ "title": "Goroutines Total",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "$$hashKey": "object:1281",
+ "format": "short",
+ "label": "",
+ "logBase": 1,
+ "min": "0",
+ "show": true
},
{
- "aliasColors": {},
- "bars": false,
- "dashLength": 10,
- "dashes": false,
+ "$$hashKey": "object:1282",
+ "format": "short",
+ "logBase": 1,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "description": "process cpu usage",
+ "fill": 1,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 8,
+ "w": 8,
+ "x": 0,
+ "y": 299
+ },
+ "hiddenSeries": false,
+ "id": 123135,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "10.2.0",
+ "pointradius": 2,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
- },
- "description": "Number of heap bytes that be used.",
- "fill": 1,
- "fillGradient": 0,
- "gridPos": {
- "h": 6,
- "w": 8,
- "x": 0,
- "y": 219
- },
- "hiddenSeries": false,
- "id": 123375,
- "legend": {
- "avg": false,
- "current": false,
- "max": false,
- "min": false,
- "show": true,
- "total": false,
- "values": false
- },
- "lines": true,
- "linewidth": 1,
- "nullPointMode": "null",
- "options": {
- "alertThreshold": true
- },
- "percentage": false,
- "pluginVersion": "8.3.3",
- "pointradius": 2,
- "points": false,
- "renderer": "flot",
- "seriesOverrides": [],
- "spaceLength": 10,
- "stack": false,
- "steppedLine": false,
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "$datasource"
- },
- "exemplar": true,
- "expr": "go_memstats_heap_inuse_bytes{app_kubernetes_io_name=\"$app_name\", app_kubernetes_io_instance=~\"$instance\", namespace=\"$namespace\"}",
- "interval": "",
- "intervalFactor": 2,
- "legendFormat": "{{pod}}",
- "queryType": "randomWalk",
- "refId": "A"
- }
- ],
- "thresholds": [],
- "timeRegions": [],
- "title": "Go Heap in Use",
- "tooltip": {
- "shared": true,
- "sort": 0,
- "value_type": "individual"
- },
- "type": "graph",
- "xaxis": {
- "mode": "time",
- "show": true,
- "values": []
+ "uid": "${datasource}"
},
- "yaxes": [
- {
- "format": "bytes",
- "logBase": 1,
- "min": "0",
- "show": true
- },
- {
- "format": "short",
- "logBase": 1,
- "show": true
- }
- ],
- "yaxis": {
- "align": false
- }
+ "editorMode": "code",
+ "exemplar": true,
+ "expr": "rate(process_cpu_seconds_total{app_kubernetes_io_name=\"$app_name\", app_kubernetes_io_instance=~\"$instance\", namespace=\"$namespace\"}[1m])",
+ "interval": "",
+ "intervalFactor": 1,
+ "legendFormat": "{{pod}}",
+ "queryType": "randomWalk",
+ "range": true,
+ "refId": "A"
+ }
+ ],
+ "thresholds": [],
+ "timeRegions": [],
+ "title": "CPU Usage",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "$$hashKey": "object:544",
+ "format": "short",
+ "logBase": 1,
+ "show": true
},
{
- "aliasColors": {},
- "bars": false,
- "dashLength": 10,
- "dashes": false,
+ "$$hashKey": "object:545",
+ "format": "short",
+ "logBase": 1,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${datasource}"
+ },
+ "description": "Process memory of milvus pod.",
+ "fill": 1,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 8,
+ "w": 8,
+ "x": 8,
+ "y": 299
+ },
+ "hiddenSeries": false,
+ "id": 123133,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "10.2.0",
+ "pointradius": 2,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
- },
- "description": "Number of container threads created.",
- "fill": 1,
- "fillGradient": 0,
- "gridPos": {
- "h": 6,
- "w": 8,
- "x": 8,
- "y": 219
- },
- "hiddenSeries": false,
- "id": 123376,
- "legend": {
- "avg": false,
- "current": false,
- "max": false,
- "min": false,
- "show": true,
- "total": false,
- "values": false
- },
- "lines": true,
- "linewidth": 1,
- "nullPointMode": "null",
- "options": {
- "alertThreshold": true
- },
- "percentage": false,
- "pluginVersion": "8.3.3",
- "pointradius": 2,
- "points": false,
- "renderer": "flot",
- "seriesOverrides": [],
- "spaceLength": 10,
- "stack": false,
- "steppedLine": false,
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "$datasource"
- },
- "exemplar": true,
- "expr": "container_threads{image=\"\", namespace=\"$namespace\"}",
- "interval": "",
- "intervalFactor": 2,
- "legendFormat": "",
- "queryType": "randomWalk",
- "refId": "A"
- }
- ],
- "thresholds": [],
- "timeRegions": [],
- "title": "Container Threads",
- "tooltip": {
- "shared": true,
- "sort": 0,
- "value_type": "individual"
- },
- "type": "graph",
- "xaxis": {
- "mode": "time",
- "show": true,
- "values": []
+ "uid": "${datasource}"
},
- "yaxes": [
- {
- "format": "short",
- "logBase": 1,
- "min": "0",
- "show": true
- },
- {
- "format": "short",
- "logBase": 1,
- "show": true
- }
- ],
- "yaxis": {
- "align": false
- }
+ "exemplar": false,
+ "expr": "process_resident_memory_bytes{app_kubernetes_io_name=\"$app_name\", app_kubernetes_io_instance=~\"$instance\", namespace=\"$namespace\"}",
+ "hide": false,
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "{{pod}}",
+ "queryType": "randomWalk",
+ "refId": "A"
+ }
+ ],
+ "thresholds": [],
+ "timeRegions": [],
+ "title": "Memory",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "$$hashKey": "object:598",
+ "format": "bytes",
+ "logBase": 1,
+ "min": "0",
+ "show": true
+ },
+ {
+ "$$hashKey": "object:599",
+ "format": "bytes",
+ "logBase": 1,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": {
+ "uid": "${datasource}"
+ },
+ "description": "Number of goroutines that currently exist.",
+ "fill": 1,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 8,
+ "w": 8,
+ "x": 16,
+ "y": 299
+ },
+ "hiddenSeries": false,
+ "id": 123125,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "10.2.0",
+ "pointradius": 2,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "exemplar": true,
+ "expr": "go_goroutines{app_kubernetes_io_name=\"$app_name\", app_kubernetes_io_instance=~\"$instance\", namespace=\"$namespace\"}",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "{{pod}}",
+ "queryType": "randomWalk",
+ "refId": "A"
+ }
+ ],
+ "thresholds": [],
+ "timeRegions": [],
+ "title": "Goroutines",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "logBase": 1,
+ "show": true
+ },
+ {
+ "format": "short",
+ "logBase": 1,
+ "show": true
}
],
- "title": "Runtime",
- "type": "row"
+ "yaxis": {
+ "align": false
+ }
},
{
- "collapsed": false,
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": {
+ "uid": "${datasource}"
+ },
+ "description": "Number of bytes allocated and still in use.",
+ "fill": 1,
+ "fillGradient": 0,
"gridPos": {
- "h": 1,
- "w": 24,
+ "h": 8,
+ "w": 8,
"x": 0,
- "y": 4
+ "y": 307
},
- "id": 123402,
- "panels": [],
- "title": "storage",
- "type": "row"
+ "hiddenSeries": false,
+ "id": 123137,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "10.2.0",
+ "pointradius": 2,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "exemplar": true,
+ "expr": "go_memstats_alloc_bytes{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "{{pod}}",
+ "queryType": "randomWalk",
+ "refId": "A"
+ }
+ ],
+ "thresholds": [],
+ "timeRegions": [],
+ "title": "Go Allocated Memory",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "bytes",
+ "logBase": 1,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "bytes",
+ "logBase": 1,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false
+ }
},
{
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
"datasource": {
- "type": "prometheus",
"uid": "${datasource}"
},
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisBorderShow": false,
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 0,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "insertNulls": false,
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "auto",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green",
- "value": null
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "bytes"
- },
- "overrides": []
- },
+ "description": "GC Max duration seconds.",
+ "fill": 1,
+ "fillGradient": 0,
"gridPos": {
- "h": 10,
- "w": 14,
- "x": 5,
- "y": 5
+ "h": 8,
+ "w": 8,
+ "x": 8,
+ "y": 307
+ },
+ "hiddenSeries": false,
+ "id": 123131,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
},
- "id": 123406,
+ "lines": true,
+ "linewidth": 1,
+ "nullPointMode": "null",
"options": {
- "legend": {
- "calcs": [
- "max"
- ],
- "displayMode": "table",
- "placement": "right",
- "showLegend": true,
- "sortBy": "Max",
- "sortDesc": true
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "10.2.0",
+ "pointradius": 2,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "exemplar": true,
+ "expr": "go_gc_duration_seconds{quantile=\"1\", app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}",
+ "interval": "",
+ "legendFormat": "{{pod}}",
+ "queryType": "randomWalk",
+ "refId": "A"
+ }
+ ],
+ "thresholds": [],
+ "timeRegions": [],
+ "title": "GC Max duration seconds",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "logBase": 1,
+ "show": true
},
- "tooltip": {
- "mode": "single",
- "sort": "none"
+ {
+ "format": "short",
+ "logBase": 1,
+ "show": true
}
+ ],
+ "yaxis": {
+ "align": false
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": {
+ "uid": "${datasource}"
+ },
+ "description": "Number of OS threads created.",
+ "fill": 1,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 8,
+ "w": 8,
+ "x": 16,
+ "y": 307
+ },
+ "hiddenSeries": false,
+ "id": 123127,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
},
+ "lines": true,
+ "linewidth": 1,
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "10.2.0",
+ "pointradius": 2,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
"targets": [
{
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "editorMode": "code",
- "expr": "histogram_quantile(0.90, milvus_storage_kv_size_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"})",
- "legendFormat": "90% {{persistent_data_op_type}}",
- "range": true,
+ "exemplar": true,
+ "expr": "go_threads{app_kubernetes_io_name=\"$app_name\", app_kubernetes_io_instance=~\"$instance\"}",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "{{pod}}",
+ "queryType": "randomWalk",
"refId": "A"
- },
+ }
+ ],
+ "thresholds": [],
+ "timeRegions": [],
+ "title": "OS Threads",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
{
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "editorMode": "code",
- "expr": "histogram_quantile(0.75, milvus_storage_kv_size_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"})",
- "hide": false,
- "legendFormat": "75% {{persistent_data_op_type}}",
- "range": true,
- "refId": "B"
+ "format": "short",
+ "logBase": 1,
+ "min": "0",
+ "show": true
},
{
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "editorMode": "code",
- "expr": "histogram_quantile(0.5, milvus_storage_kv_size_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"})",
- "hide": false,
- "legendFormat": "50% {{persistent_data_op_type}}",
- "range": true,
- "refId": "C"
+ "format": "short",
+ "logBase": 1,
+ "show": true
}
],
- "title": "[go]kv size",
- "type": "timeseries"
+ "yaxis": {
+ "align": false
+ }
},
{
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
"datasource": {
- "type": "prometheus",
"uid": "${datasource}"
},
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisBorderShow": false,
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 0,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "insertNulls": false,
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "auto",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green",
- "value": null
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "reqps"
- },
- "overrides": []
- },
+ "description": "Next GC Bytes.",
+ "fill": 1,
+ "fillGradient": 0,
"gridPos": {
- "h": 10,
- "w": 14,
- "x": 5,
- "y": 15
+ "h": 8,
+ "w": 8,
+ "x": 0,
+ "y": 315
+ },
+ "hiddenSeries": false,
+ "id": 123129,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
},
- "id": 123446,
+ "lines": true,
+ "linewidth": 1,
+ "nullPointMode": "null",
"options": {
- "legend": {
- "calcs": [
- "max"
- ],
- "displayMode": "table",
- "placement": "right",
- "showLegend": true,
- "sortBy": "Name",
- "sortDesc": false
- },
- "tooltip": {
- "mode": "single",
- "sort": "none"
- }
+ "alertThreshold": true
},
+ "percentage": false,
+ "pluginVersion": "10.2.0",
+ "pointradius": 2,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
"targets": [
{
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "editorMode": "code",
- "expr": "rate(milvus_storage_kv_size_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\", persistent_data_op_type=\"get\"}[2m])",
- "legendFormat": "{{le}}",
- "range": true,
+ "exemplar": true,
+ "expr": "go_memstats_next_gc_bytes{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "{{pod}}",
+ "queryType": "randomWalk",
"refId": "A"
}
],
- "title": "[go]get",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
+ "thresholds": [],
+ "timeRegions": [],
+ "title": "Next GC Bytes",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
},
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisBorderShow": false,
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 0,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "insertNulls": false,
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "auto",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green",
- "value": null
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "reqps"
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "bytes",
+ "logBase": 1,
+ "min": "0",
+ "show": true
},
- "overrides": []
+ {
+ "format": "short",
+ "logBase": 1,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": {
+ "uid": "${datasource}"
},
+ "description": "Number of process opened fds.",
+ "fill": 1,
+ "fillGradient": 0,
"gridPos": {
- "h": 10,
- "w": 14,
- "x": 5,
- "y": 25
+ "h": 8,
+ "w": 8,
+ "x": 8,
+ "y": 315
+ },
+ "hiddenSeries": false,
+ "id": 123211,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
},
- "id": 123447,
+ "lines": true,
+ "linewidth": 1,
+ "nullPointMode": "null",
"options": {
- "legend": {
- "calcs": [
- "max"
- ],
- "displayMode": "table",
- "placement": "right",
- "showLegend": true,
- "sortBy": "Max",
- "sortDesc": true
- },
- "tooltip": {
- "mode": "single",
- "sort": "none"
- }
+ "alertThreshold": true
},
+ "percentage": false,
+ "pluginVersion": "10.2.0",
+ "pointradius": 2,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
"targets": [
{
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "editorMode": "code",
- "expr": "rate(milvus_storage_kv_size_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\", persistent_data_op_type=\"put\"}[2m])",
- "legendFormat": "{{le}}",
- "range": true,
+ "exemplar": true,
+ "expr": "process_open_fds{app_kubernetes_io_name=\"$app_name\", app_kubernetes_io_instance=~\"$instance\", namespace=\"$namespace\"}",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "{{pod}}",
+ "queryType": "randomWalk",
"refId": "A"
}
],
- "title": "[go]put",
- "type": "timeseries"
+ "thresholds": [],
+ "timeRegions": [],
+ "title": "Process Opened Fds",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "logBase": 1,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "logBase": 1,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false
+ }
},
{
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
"datasource": {
- "type": "prometheus",
"uid": "${datasource}"
},
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisBorderShow": false,
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 0,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "insertNulls": false,
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "auto",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green",
- "value": null
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- }
- },
- "overrides": [
- {
- "__systemRef": "hideSeriesFrom",
- "matcher": {
- "id": "byNames",
- "options": {
- "mode": "exclude",
- "names": [
- "list::success",
- "remove::total"
- ],
- "prefix": "All except:",
- "readOnly": true
- }
- },
- "properties": [
- {
- "id": "custom.hideFrom",
- "value": {
- "legend": false,
- "tooltip": false,
- "viz": true
- }
- }
- ]
- }
- ]
- },
+ "description": "The fraction of this program's available CPU time used by the GC since the program started.",
+ "fill": 1,
+ "fillGradient": 0,
"gridPos": {
"h": 8,
- "w": 12,
- "x": 0,
- "y": 35
+ "w": 8,
+ "x": 16,
+ "y": 315
+ },
+ "hiddenSeries": false,
+ "id": 123212,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
},
- "id": 123404,
+ "lines": true,
+ "linewidth": 1,
+ "nullPointMode": "null",
"options": {
- "legend": {
- "calcs": [
- "max"
- ],
- "displayMode": "table",
- "placement": "right",
- "showLegend": true,
- "sortBy": "Max",
- "sortDesc": true
- },
- "tooltip": {
- "mode": "single",
- "sort": "none"
- }
+ "alertThreshold": true
},
+ "percentage": false,
+ "pluginVersion": "10.2.0",
+ "pointradius": 2,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
"targets": [
{
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "editorMode": "code",
- "expr": "sum(increase(milvus_storage_op_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\", status!=\"fail\"}[2m])/120) by (status, pod, persistent_data_op_type)",
- "legendFormat": "{{persistent_data_op_type}}::{{status}}",
- "range": true,
+ "exemplar": true,
+ "expr": "go_memstats_gc_cpu_fraction{app_kubernetes_io_name=\"$app_name\", app_kubernetes_io_instance=~\"$instance\", namespace=\"$namespace\"}",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "{{pod}}",
+ "queryType": "randomWalk",
"refId": "A"
}
],
- "title": "[go]total/success request",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisBorderShow": false,
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 0,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "insertNulls": false,
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "auto",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green",
- "value": null
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "ms"
- },
- "overrides": []
+ "thresholds": [],
+ "timeRegions": [],
+ "title": "GC CPU time",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
},
- "gridPos": {
- "h": 8,
- "w": 12,
- "x": 12,
- "y": 35
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "show": true,
+ "values": []
},
- "id": 123444,
- "options": {
- "legend": {
- "calcs": [
- "max"
- ],
- "displayMode": "table",
- "placement": "right",
- "showLegend": true
+ "yaxes": [
+ {
+ "format": "short",
+ "logBase": 1,
+ "min": "0",
+ "show": true
},
- "tooltip": {
- "mode": "single",
- "sort": "none"
- }
- },
- "targets": [
{
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "editorMode": "code",
- "expr": "histogram_quantile(0.99, sum by (le, pod, persistent_data_op_type) (rate(milvus_storage_request_latency_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])))",
- "legendFormat": "{{persistent_data_op_type}}",
- "range": true,
- "refId": "A"
+ "format": "short",
+ "logBase": 1,
+ "show": true
}
],
- "title": "[go]pct99",
- "type": "timeseries"
+ "yaxis": {
+ "align": false
+ }
},
{
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
"datasource": {
- "type": "prometheus",
"uid": "${datasource}"
},
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisBorderShow": false,
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 0,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "insertNulls": false,
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "auto",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green",
- "value": null
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- }
- },
- "overrides": []
- },
+ "description": "Rate of memory frees.",
+ "fill": 1,
+ "fillGradient": 0,
"gridPos": {
"h": 8,
- "w": 12,
+ "w": 8,
"x": 0,
- "y": 43
+ "y": 323
+ },
+ "hiddenSeries": false,
+ "id": 123213,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
},
- "id": 123405,
+ "lines": true,
+ "linewidth": 1,
+ "nullPointMode": "null",
"options": {
- "legend": {
- "calcs": [
- "max"
- ],
- "displayMode": "table",
- "placement": "right",
- "showLegend": true
- },
- "tooltip": {
- "mode": "single",
- "sort": "none"
- }
+ "alertThreshold": true
},
+ "percentage": false,
+ "pluginVersion": "10.2.0",
+ "pointradius": 2,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
"targets": [
{
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "editorMode": "code",
- "expr": "sum(increase(milvus_storage_op_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\", status=\"fail\"}[2m])/120) by (status, pod, persistent_data_op_type)",
- "legendFormat": "{{persistent_data_op_type}}::{{status}}",
- "range": true,
+ "exemplar": true,
+ "expr": "rate(go_memstats_frees_total{app_kubernetes_io_name=\"$app_name\", app_kubernetes_io_instance=~\"$instance\", namespace=\"$namespace\"}[5m])",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "{{pod}}",
+ "queryType": "randomWalk",
"refId": "A"
}
],
- "title": "[go]failed request",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisBorderShow": false,
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 0,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "insertNulls": false,
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "auto",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green",
- "value": null
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "ms"
- },
- "overrides": []
+ "thresholds": [],
+ "timeRegions": [],
+ "title": "Memory Free Rate",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
},
- "gridPos": {
- "h": 8,
- "w": 12,
- "x": 12,
- "y": 43
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "show": true,
+ "values": []
},
- "id": 123407,
- "options": {
- "legend": {
- "calcs": [
- "max"
- ],
- "displayMode": "table",
- "placement": "right",
- "showLegend": true
+ "yaxes": [
+ {
+ "format": "short",
+ "logBase": 1,
+ "min": "0",
+ "show": true
},
- "tooltip": {
- "mode": "single",
- "sort": "none"
- }
- },
- "targets": [
{
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "editorMode": "code",
- "expr": "sum(increase(milvus_storage_request_latency_sum{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by(pod, persistent_data_op_type) / sum(increase(milvus_storage_request_latency_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by(pod, persistent_data_op_type)",
- "legendFormat": "{{persistent_data_op_type}}",
- "range": true,
- "refId": "A"
+ "format": "short",
+ "logBase": 1,
+ "show": true
}
],
- "title": "[go]avg",
- "type": "timeseries"
- },{
+ "yaxis": {
+ "align": false
+ }
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
"datasource": {
- "type": "prometheus",
"uid": "${datasource}"
},
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisBorderShow": false,
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 0,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "insertNulls": false,
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "auto",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green",
- "value": null
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "bytes"
- },
- "overrides": []
- },
+ "description": "Rate of go memory mallocs.",
+ "fill": 1,
+ "fillGradient": 0,
"gridPos": {
- "h": 10,
- "w": 14,
- "x": 5,
- "y": 5
+ "h": 8,
+ "w": 8,
+ "x": 8,
+ "y": 323
+ },
+ "hiddenSeries": false,
+ "id": 123215,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
},
- "id": 123506,
+ "lines": true,
+ "linewidth": 1,
+ "nullPointMode": "null",
"options": {
- "legend": {
- "calcs": [
- "max"
- ],
- "displayMode": "table",
- "placement": "right",
- "showLegend": true,
- "sortBy": "Max",
- "sortDesc": true
- },
- "tooltip": {
- "mode": "single",
- "sort": "none"
- }
+ "alertThreshold": true
},
+ "percentage": false,
+ "pluginVersion": "10.2.0",
+ "pointradius": 2,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
"targets": [
{
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "editorMode": "code",
- "expr": "histogram_quantile(0.90, internal_storage_kv_size_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"})",
- "legendFormat": "90% {{persistent_data_op_type}}",
- "range": true,
+ "exemplar": true,
+ "expr": "rate(go_memstats_mallocs_total{app_kubernetes_io_name=\"$app_name\", app_kubernetes_io_instance=~\"$instance\", namespace=\"$namespace\"}[2m])",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "{{pod}}",
+ "queryType": "randomWalk",
"refId": "A"
- },
+ }
+ ],
+ "thresholds": [],
+ "timeRegions": [],
+ "title": "Go Memory mallocs rate.",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
{
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "editorMode": "code",
- "expr": "histogram_quantile(0.75, internal_storage_kv_size_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"})",
- "hide": false,
- "legendFormat": "75% {{persistent_data_op_type}}",
- "range": true,
- "refId": "B"
+ "format": "short",
+ "logBase": 1,
+ "min": "0",
+ "show": true
},
{
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "editorMode": "code",
- "expr": "histogram_quantile(0.5, internal_storage_kv_size_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"})",
- "hide": false,
- "legendFormat": "50% {{persistent_data_op_type}}",
- "range": true,
- "refId": "C"
+ "format": "short",
+ "logBase": 1,
+ "show": true
}
],
- "title": "[cpp]kv size",
- "type": "timeseries"
+ "yaxis": {
+ "align": false
+ }
},
{
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
"datasource": {
- "type": "prometheus",
"uid": "${datasource}"
},
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisBorderShow": false,
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 0,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "insertNulls": false,
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "auto",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green",
- "value": null
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "reqps"
- },
- "overrides": []
- },
+ "description": "Number of allocated heap objects.",
+ "fill": 1,
+ "fillGradient": 0,
"gridPos": {
- "h": 10,
- "w": 14,
- "x": 5,
- "y": 15
+ "h": 8,
+ "w": 8,
+ "x": 16,
+ "y": 323
+ },
+ "hiddenSeries": false,
+ "id": 123216,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
},
- "id": 123546,
+ "lines": true,
+ "linewidth": 1,
+ "nullPointMode": "null",
"options": {
- "legend": {
- "calcs": [
- "max"
- ],
- "displayMode": "table",
- "placement": "right",
- "showLegend": true,
- "sortBy": "Name",
- "sortDesc": false
- },
- "tooltip": {
- "mode": "single",
- "sort": "none"
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "10.2.0",
+ "pointradius": 2,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "exemplar": true,
+ "expr": "go_memstats_heap_objects{app_kubernetes_io_name=\"$app_name\", app_kubernetes_io_instance=~\"$instance\", namespace=\"$namespace\"}",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "{{pod}}",
+ "queryType": "randomWalk",
+ "refId": "A"
}
+ ],
+ "thresholds": [],
+ "timeRegions": [],
+ "title": "Allocated Heap Objects",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "show": true,
+ "values": []
},
- "targets": [
+ "yaxes": [
{
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "editorMode": "code",
- "expr": "rate(internal_storage_kv_size_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\", persistent_data_op_type=\"get\"}[2m])",
- "legendFormat": "{{le}}",
- "range": true,
- "refId": "A"
+ "format": "short",
+ "logBase": 1,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "logBase": 1,
+ "show": true
}
],
- "title": "[cpp]get",
- "type": "timeseries"
+ "yaxis": {
+ "align": false
+ }
},
{
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
"datasource": {
"type": "prometheus",
"uid": "${datasource}"
},
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisBorderShow": false,
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 0,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "insertNulls": false,
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "auto",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green",
- "value": null
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "reqps"
- },
- "overrides": []
- },
+ "description": "Rate of bytes allocated, even if freed.",
+ "fill": 1,
+ "fillGradient": 0,
"gridPos": {
- "h": 10,
- "w": 14,
- "x": 5,
- "y": 25
+ "h": 8,
+ "w": 8,
+ "x": 0,
+ "y": 331
+ },
+ "hiddenSeries": false,
+ "id": 123217,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
},
- "id": 123547,
+ "lines": true,
+ "linewidth": 1,
+ "nullPointMode": "null",
"options": {
- "legend": {
- "calcs": [
- "max"
- ],
- "displayMode": "table",
- "placement": "right",
- "showLegend": true,
- "sortBy": "Max",
- "sortDesc": true
- },
- "tooltip": {
- "mode": "single",
- "sort": "none"
- }
+ "alertThreshold": true
},
+ "percentage": false,
+ "pluginVersion": "10.2.0",
+ "pointradius": 2,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "${datasource}"
},
- "editorMode": "code",
- "expr": "rate(internal_storage_kv_size_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\", persistent_data_op_type=\"put\"}[2m])",
- "legendFormat": "{{le}}",
- "range": true,
+ "exemplar": true,
+ "expr": "rate(go_memstats_alloc_bytes_total{app_kubernetes_io_name=\"$app_name\", app_kubernetes_io_instance=~\"$instance\", namespace=\"$namespace\"}[5m])",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "{{pod}}",
+ "queryType": "randomWalk",
"refId": "A"
}
],
- "title": "[cpp]put",
- "type": "timeseries"
+ "thresholds": [],
+ "timeRegions": [],
+ "title": "Memory Allocated Rate",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "$$hashKey": "object:8539",
+ "format": "short",
+ "logBase": 1,
+ "min": "0",
+ "show": true
+ },
+ {
+ "$$hashKey": "object:8540",
+ "format": "short",
+ "logBase": 1,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false
+ }
},
{
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
"datasource": {
- "type": "prometheus",
"uid": "${datasource}"
},
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisBorderShow": false,
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 0,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "insertNulls": false,
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "auto",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green",
- "value": null
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- }
- },
- "overrides": [
- {
- "__systemRef": "hideSeriesFrom",
- "matcher": {
- "id": "byNames",
- "options": {
- "mode": "exclude",
- "names": [
- "list::success",
- "remove::total"
- ],
- "prefix": "All except:",
- "readOnly": true
- }
- },
- "properties": [
- {
- "id": "custom.hideFrom",
- "value": {
- "legend": false,
- "tooltip": false,
- "viz": true
- }
- }
- ]
- }
- ]
+ "description": "Number of heap bytes released to OS.",
+ "fill": 1,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 8,
+ "w": 8,
+ "x": 8,
+ "y": 331
+ },
+ "hiddenSeries": false,
+ "id": 123218,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
+ },
+ "percentage": false,
+ "pluginVersion": "10.2.0",
+ "pointradius": 2,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "exemplar": true,
+ "expr": "go_memstats_heap_released_bytes{app_kubernetes_io_name=\"$app_name\", app_kubernetes_io_instance=~\"$instance\", namespace=\"$namespace\"}",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "{{pod}}",
+ "queryType": "randomWalk",
+ "refId": "A"
+ }
+ ],
+ "thresholds": [],
+ "timeRegions": [],
+ "title": "Go Heap released",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
},
- "gridPos": {
- "h": 8,
- "w": 12,
- "x": 0,
- "y": 35
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "show": true,
+ "values": []
},
- "id": 123504,
- "options": {
- "legend": {
- "calcs": [
- "max"
- ],
- "displayMode": "table",
- "placement": "right",
- "showLegend": true,
- "sortBy": "Max",
- "sortDesc": true
+ "yaxes": [
+ {
+ "format": "bytes",
+ "logBase": 1,
+ "min": "0",
+ "show": true
},
- "tooltip": {
- "mode": "single",
- "sort": "none"
- }
- },
- "targets": [
{
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "editorMode": "code",
- "expr": "sum(increase(internal_storage_op_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\", status!=\"fail\"}[2m])/120) by (status, pod, persistent_data_op_type)",
- "legendFormat": "{{persistent_data_op_type}}::{{status}}",
- "range": true,
- "refId": "A"
+ "format": "short",
+ "logBase": 1,
+ "show": true
}
],
- "title": "[cpp]total/success request",
- "type": "timeseries"
+ "yaxis": {
+ "align": false
+ }
},
{
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
"datasource": {
- "type": "prometheus",
"uid": "${datasource}"
},
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisBorderShow": false,
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 0,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "insertNulls": false,
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "auto",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green",
- "value": null
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "ms"
- },
- "overrides": []
- },
+ "description": "Number of heap bytes waiting to be used.",
+ "fill": 1,
+ "fillGradient": 0,
"gridPos": {
"h": 8,
- "w": 12,
- "x": 12,
- "y": 35
+ "w": 8,
+ "x": 16,
+ "y": 331
+ },
+ "hiddenSeries": false,
+ "id": 123219,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
},
- "id": 123544,
+ "lines": true,
+ "linewidth": 1,
+ "nullPointMode": "null",
"options": {
- "legend": {
- "calcs": [
- "max"
- ],
- "displayMode": "table",
- "placement": "right",
- "showLegend": true
- },
- "tooltip": {
- "mode": "single",
- "sort": "none"
- }
+ "alertThreshold": true
},
+ "percentage": false,
+ "pluginVersion": "10.2.0",
+ "pointradius": 2,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
"targets": [
{
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "editorMode": "code",
- "expr": "histogram_quantile(0.99, sum by (le, pod, persistent_data_op_type) (rate(internal_storage_request_latency_bucket{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])))",
- "legendFormat": "{{persistent_data_op_type}}",
- "range": true,
+ "exemplar": true,
+ "expr": "go_memstats_heap_idle_bytes{app_kubernetes_io_name=\"$app_name\", app_kubernetes_io_instance=~\"$instance\", namespace=\"$namespace\"}",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "{{pod}}",
+ "queryType": "randomWalk",
"refId": "A"
}
],
- "title": "[cpp]pct99",
- "type": "timeseries"
+ "thresholds": [],
+ "timeRegions": [],
+ "title": "Go Heap idle",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "bytes",
+ "logBase": 1,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "logBase": 1,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false
+ }
},
{
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
"datasource": {
"type": "prometheus",
"uid": "${datasource}"
},
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisBorderShow": false,
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 0,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "insertNulls": false,
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "auto",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green",
- "value": null
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- }
- },
- "overrides": []
- },
+ "description": "Number of heap bytes that be used.",
+ "fill": 1,
+ "fillGradient": 0,
"gridPos": {
"h": 8,
- "w": 12,
+ "w": 8,
"x": 0,
- "y": 43
+ "y": 339
},
- "id": 123505,
- "options": {
- "legend": {
- "calcs": [
- "max"
- ],
- "displayMode": "table",
- "placement": "right",
- "showLegend": true
- },
- "tooltip": {
- "mode": "single",
- "sort": "none"
- }
+ "hiddenSeries": false,
+ "id": 123375,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "nullPointMode": "null",
+ "options": {
+ "alertThreshold": true
},
+ "percentage": false,
+ "pluginVersion": "10.2.0",
+ "pointradius": 2,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "${datasource}"
},
- "editorMode": "code",
- "expr": "sum(increase(internal_storage_op_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\", status=\"fail\"}[2m])/120) by (status, pod, persistent_data_op_type)",
- "legendFormat": "{{persistent_data_op_type}}::{{status}}",
- "range": true,
+ "exemplar": true,
+ "expr": "go_memstats_heap_inuse_bytes{app_kubernetes_io_name=\"$app_name\", app_kubernetes_io_instance=~\"$instance\", namespace=\"$namespace\"}",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "{{pod}}",
+ "queryType": "randomWalk",
"refId": "A"
}
],
- "title": "[cpp]failed request",
- "type": "timeseries"
+ "thresholds": [],
+ "timeRegions": [],
+ "title": "Go Heap in Use",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "bytes",
+ "logBase": 1,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "logBase": 1,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false
+ }
},
{
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
"datasource": {
"type": "prometheus",
"uid": "${datasource}"
},
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisBorderShow": false,
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 0,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "insertNulls": false,
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "auto",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green",
- "value": null
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "ms"
- },
- "overrides": []
- },
+ "description": "Number of container threads created.",
+ "fill": 1,
+ "fillGradient": 0,
"gridPos": {
"h": 8,
- "w": 12,
- "x": 12,
- "y": 43
+ "w": 8,
+ "x": 8,
+ "y": 339
+ },
+ "hiddenSeries": false,
+ "id": 123376,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
},
- "id": 123507,
+ "lines": true,
+ "linewidth": 1,
+ "nullPointMode": "null",
"options": {
- "legend": {
- "calcs": [
- "max"
- ],
- "displayMode": "table",
- "placement": "right",
- "showLegend": true
- },
- "tooltip": {
- "mode": "single",
- "sort": "none"
- }
+ "alertThreshold": true
},
+ "percentage": false,
+ "pluginVersion": "10.2.0",
+ "pointradius": 2,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
"targets": [
{
"datasource": {
@@ -13830,30 +15130,59 @@
"uid": "${datasource}"
},
"editorMode": "code",
- "expr": "sum(increase(internal_storage_request_latency_sum{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by(pod, persistent_data_op_type) / sum(increase(internal_storage_request_latency_count{app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}[2m])) by(pod, persistent_data_op_type)",
- "legendFormat": "{{persistent_data_op_type}}",
+ "exemplar": true,
+ "expr": "container_threads{image=\"\", namespace=\"$namespace\", pod=~\"$instance-.*\"}",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "{{pod}}",
+ "queryType": "randomWalk",
"range": true,
"refId": "A"
}
],
- "title": "[cpp]avg",
- "type": "timeseries"
+ "thresholds": [],
+ "timeRegions": [],
+ "title": "Container Threads",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "mode": "time",
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "$$hashKey": "object:420",
+ "format": "short",
+ "logBase": 1,
+ "min": "0",
+ "show": true
+ },
+ {
+ "$$hashKey": "object:421",
+ "format": "short",
+ "logBase": 1,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false
+ }
}
],
- "refresh": false,
- "schemaVersion": 34,
- "style": "dark",
+ "refresh": "",
+ "schemaVersion": 38,
"tags": [
- "milvus2.0"
+ "milvus2.4",
+ "milvus2.3"
],
"templating": {
"list": [
{
- "current": {
- "selected": false,
- "text": "prometheus",
- "value": "prometheus"
- },
"hide": 0,
"includeAll": false,
"multi": false,
@@ -13867,42 +15196,20 @@
"type": "datasource"
},
{
- "current": {
- "selected": true,
- "text": "milvus",
- "value": "milvus"
- },
- "hide": 2,
- "name": "app_name",
- "options": [
- {
- "selected": true,
- "text": "milvus",
- "value": "milvus"
- }
- ],
- "query": "milvus",
- "skipUrlSync": false,
- "type": "textbox"
- },
- {
- "current": {
- "selected": true,
- "text": "chaos-testing",
- "value": "chaos-testing"
- },
"datasource": {
- "uid": "$datasource"
+ "type": "prometheus",
+ "uid": "${datasource}"
},
- "definition": "label_values(kube_pod_info, namespace)",
+ "definition": "label_values(go_info,namespace)",
"hide": 0,
"includeAll": false,
"multi": false,
"name": "namespace",
"options": [],
"query": {
- "query": "label_values(kube_pod_info, namespace)",
- "refId": "prometheus-namespace-Variable-Query"
+ "qryType": 1,
+ "query": "label_values(go_info,namespace)",
+ "refId": "PrometheusVariableQueryEditor-VariableQuery"
},
"refresh": 1,
"regex": "",
@@ -13914,23 +15221,20 @@
"useTags": false
},
{
- "current": {
- "selected": false,
- "text": "bulk-insert-test",
- "value": "bulk-insert-test"
- },
"datasource": {
- "uid": "$datasource"
+ "type": "prometheus",
+ "uid": "${datasource}"
},
- "definition": "label_values(go_info{app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}, app_kubernetes_io_instance)",
+ "definition": "label_values(go_info{app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"},app_kubernetes_io_instance)",
"hide": 0,
"includeAll": false,
"multi": false,
"name": "instance",
"options": [],
"query": {
- "query": "label_values(go_info{app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"}, app_kubernetes_io_instance)",
- "refId": "StandardVariableQuery"
+ "qryType": 1,
+ "query": "label_values(go_info{app_kubernetes_io_name=\"$app_name\", namespace=\"$namespace\"},app_kubernetes_io_instance)",
+ "refId": "PrometheusVariableQueryEditor-VariableQuery"
},
"refresh": 2,
"regex": "",
@@ -13950,17 +15254,18 @@
},
"datasource": {
"type": "prometheus",
- "uid": "$datasource"
+ "uid": "${datasource}"
},
- "definition": "label_values(milvus_proxy_collection_mutation_latency_sum{namespace=\"$namespace\", app_kubernetes_io_instance=~\"$instance\",app_kubernetes_io_name=\"$app_name\"}, collection_name)",
+ "definition": "label_values(milvus_proxy_collection_mutation_latency_sum{namespace=\"$namespace\", app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\"},collection_name)",
"hide": 0,
"includeAll": true,
"multi": false,
"name": "collection",
"options": [],
"query": {
- "query": "label_values(milvus_proxy_collection_mutation_latency_sum{namespace=\"$namespace\", app_kubernetes_io_instance=~\"$instance\",app_kubernetes_io_name=\"$app_name\"}, collection_name)",
- "refId": "StandardVariableQuery"
+ "qryType": 1,
+ "query": "label_values(milvus_proxy_collection_mutation_latency_sum{namespace=\"$namespace\", app_kubernetes_io_instance=~\"$instance\", app_kubernetes_io_name=\"$app_name\"},collection_name)",
+ "refId": "PrometheusVariableQueryEditor-VariableQuery"
},
"refresh": 1,
"regex": "",
@@ -13970,60 +15275,22 @@
},
{
"current": {
- "selected": false,
- "text": "bulk-insert-test-milvus-standalone-55968cfc55-cxnps",
- "value": "bulk-insert-test-milvus-standalone-55968cfc55-cxnps"
- },
- "datasource": {
- "uid": "$datasource"
- },
- "definition": "label_values(go_info{namespace=\"$namespace\", app_kubernetes_io_instance=~\"$instance\",app_kubernetes_io_name=\"$app_name\"} , pod)",
- "hide": 2,
- "includeAll": false,
- "multi": true,
- "name": "pod",
- "options": [],
- "query": {
- "query": "label_values(go_info{namespace=\"$namespace\", app_kubernetes_io_instance=~\"$instance\",app_kubernetes_io_name=\"$app_name\"} , pod)",
- "refId": "prometheus-pod-Variable-Query"
- },
- "refresh": 2,
- "regex": "",
- "skipUrlSync": false,
- "sort": 1,
- "tagValuesQuery": "",
- "tagsQuery": "",
- "type": "query",
- "useTags": false
- },
- {
- "current": {
- "isNone": true,
- "selected": false,
- "text": "None",
- "value": ""
- },
- "datasource": {
- "uid": "$datasource"
+ "selected": true,
+ "text": "milvus",
+ "value": "milvus"
},
- "definition": "label_values(go_info{namespace=\"$namespace\", app_kubernetes_io_instance=~\"$instance\",app_kubernetes_io_name=\"$app_name\"} , app_kubernetes_io_component)",
"hide": 2,
- "includeAll": false,
- "multi": true,
- "name": "component",
- "options": [],
- "query": {
- "query": "label_values(go_info{namespace=\"$namespace\", app_kubernetes_io_instance=~\"$instance\",app_kubernetes_io_name=\"$app_name\"} , app_kubernetes_io_component)",
- "refId": "StandardVariableQuery"
- },
- "refresh": 2,
- "regex": "",
+ "name": "app_name",
+ "options": [
+ {
+ "selected": true,
+ "text": "milvus",
+ "value": "milvus"
+ }
+ ],
+ "query": "milvus",
"skipUrlSync": false,
- "sort": 1,
- "tagValuesQuery": "",
- "tagsQuery": "",
- "type": "query",
- "useTags": false
+ "type": "textbox"
}
]
},
@@ -14060,7 +15327,7 @@
},
"timezone": "browser",
"title": "Milvus2.0",
- "uid": "uLf5cJ3Gz",
- "version": 5,
+ "uid": "uLf5cJ3Ga",
+ "version": 3,
"weekStart": ""
}
diff --git a/deployments/offline/README.md b/deployments/offline/README.md
index 6671973e55aeb..217cfb802e24f 100644
--- a/deployments/offline/README.md
+++ b/deployments/offline/README.md
@@ -71,7 +71,7 @@ $ for image in $(find . -type f -wholename "./images/*.tar.gz") ; do gunzip -c $
### With Docker Compose
```shell
-$ docker-compose -f docker-compose.yml up -d
+$ docker compose -f docker-compose.yml up -d
```
### On Kubernetes
@@ -85,7 +85,7 @@ $ kubectl apply -f milvus_manifest.yaml
### With Docker Compose
```shell
-$ docker-compose -f docker-compose.yml down
+$ docker compose -f docker-compose.yml down
```
### On Kubernetes
diff --git a/docker-compose.yml b/docker-compose.yml
index bb99f4c0cee65..3e20108b719d1 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -97,14 +97,23 @@ services:
- ETCD_QUOTA_BACKEND_BYTES=4294967296
- ETCD_SNAPSHOT_COUNT=50000
healthcheck:
- test: ['CMD', '/opt/bitnami/scripts/etcd/healthcheck.sh']
+ test: [ 'CMD', '/opt/bitnami/scripts/etcd/healthcheck.sh' ]
interval: 30s
timeout: 20s
retries: 3
pulsar:
image: apachepulsar/pulsar:2.8.2
- command: bin/pulsar standalone --no-functions-worker --no-stream-storage
+ command: |
+ /bin/bash -c \
+ "bin/apply-config-from-env.py conf/standalone.conf && \
+ exec bin/pulsar standalone --no-functions-worker --no-stream-storage"
+ environment:
+ # 10MB
+ - PULSAR_PREFIX_maxMessageSize=10485760
+ # this is 104857600 + 10240 (padding)
+ - nettyMaxFrameSizeBytes=104867840
+ - PULSAR_GC=-XX:+UseG1GC
minio:
image: minio/minio:RELEASE.2023-03-20T20-16-18Z
@@ -113,7 +122,7 @@ services:
MINIO_SECRET_KEY: minioadmin
command: minio server /minio_data
healthcheck:
- test: ['CMD', 'curl', '-f', 'http://localhost:9000/minio/health/live']
+ test: [ 'CMD', 'curl', '-f', 'http://localhost:9000/minio/health/live' ]
interval: 30s
timeout: 20s
retries: 3
diff --git a/docs/user_guides/clustering_compaction.md b/docs/user_guides/clustering_compaction.md
new file mode 100644
index 0000000000000..a5b1d6e2e2f56
--- /dev/null
+++ b/docs/user_guides/clustering_compaction.md
@@ -0,0 +1,120 @@
+# Clustering compaction User Guide
+
+## Introduction
+
+This guide will help you understand what is clustering compaction and how to use this feature to enhance your search/query performance.
+
+## Feature Overview
+
+Clustering compaction is designed to accelerate searches/querys and reduce costs in large collections. Key functionalities include:
+
+**1. Clustering Key**
+
+Supports specifying a scalar field as the clustering key in the collection schema.
+
+**2. Clustering Compaction**
+
+Clustering compaction redistributes the data according to value of the clustering key field, split by range.
+
+Metadata of the data distribution (referred to as `partitionStats`) is generated and stored.
+
+Clustering compaction can be triggered manually via the SDK or automatically in the background. The clustering compaction triggering strategy is highly configurable, see Configurations section for more detail.
+
+**3. Search/Query Optimization Based on Clustering Compaction**
+
+Perform like a global index, Milvus can prune the data to be scanned in a query/search based on . Optimization takes effect when the query expression contains a scalar filter. A mount of data can be pruned by comparing the filter expr and the partitionStats during execution. The following figure shows a query before and after clustering compaction on a scalar field. The performance benefit is closely related to the data size and query pattern. For more details, see the Performance section.
+
+
+
+
+## Get Started
+
+**Enable Milvus clustering compaction**
+
+Milvus version: 2.4.7 +
+
+pymilvus > 2.4.5 (Other SDK is developing...)
+
+Enable config:
+```yaml
+dataCoord.compaction.clustering.enable=true
+dataCoord.compaction.clustering.autoEnable=true
+```
+For more detail, see Configuration.
+
+**Create clustering key collection**
+
+Supported Clustering Key DataType: ```Int8, Int16, Int32, Int64, Float, Double, VarChar```
+
+```python
+from pymilvus import (FieldSchema, CollectionSchema, DataType, Collection)
+
+default_fields = [
+ FieldSchema(name="id", dtype=DataType.INT64, is_primary=True),
+ FieldSchema(name="key", dtype=DataType.INT64, is_clustering_key=True),
+ FieldSchema(name="var", dtype=DataType.VARCHAR, max_length=1000, is_primary=False),
+ FieldSchema(name="embeddings", dtype=DataType.FLOAT_VECTOR, dim=dim)
+]
+
+default_schema = CollectionSchema(fields=default_fields, description="test clustering-key collection")
+coll = Collection(name="clustering_test", schema=default_schema)
+```
+
+**Manual Trigger clustering compaction**
+
+```python
+coll.compact(is_clustering=True)
+coll.get_compaction_state(is_clustering=True)
+coll.wait_for_compaction_completed(is_clustering=True)
+```
+
+**You will automatically get query/search optimization**
+
+## Best Practice
+
+To use the clustering compaction feature efficiently, here are some tips:
+
+- Use for Large Collections: Clustering compaction provides better benefits for larger collections. It is not very necessary for small datasets. We recommend using it for collections with at least 1 million rows.
+- Choose an Appropriate Clustering Key: Set the most frequently used scalar field as the clustering key. For instance, if you provide a multi-tenant service and have a userID field in your data model, and the most common query pattern is userID = ???, then set userID as the clustering key.
+- Use PartitionKey As ClusteringKey: If you want all collections in the Milvus cluster to enable this feature by default, or if you have a large collection with a partition key and are still facing performance issues with scalar filtering queries, you can enable this feature. By setting the configuration `common.usePartitionKeyAsClusteringKey=true`, Milvus can treat all partition key as clustering key. Furthermore, you can still specify a clustering key different from the partition key, which will take precedence.
+
+## Performance
+
+The benefit of clustering compaction is closely related to data size and query patterns.
+
+A test demonstrates that clustering compaction can yield up to a 25x improvement in QPS (queries per second).
+We conducted this test on a 20-million-record, 768-dimensional LAION dataset, designating the key field (of type Int64) as the clusteringKey. After performing clustering compaction, we ran concurrent searches until CPU usage reached a high water mark. To test the data pruning effect, we adjusted the search expression. By narrowing the search range, the prune_ratio increased, indicating a higher percentage of data being skipped during execution.
+Comparing the first and last rows, searches without clustering compaction scan the entire dataset, whereas searches with clustering compaction using a specific key can achieve up to a 25x speedup.
+
+| search expr | prune_ratio | latency avg|latency min|latency max|latency median|latency pct99 | qps |
+|-----------------------------|---|---|---|---|---|-------|---|
+| null | 0% |1685|672|2294|1710| 2291 | 17.75 |
+| key>200 and key < 800 | 40.2% |1045|47|1828|1085| 1617 | 28.38 |
+| key>200 and key < 600 | 59.8% |829|45|1483|882| 1303 | 35.78 |
+| key>200 and key < 400 | 79.5% |550|100|985|584| 898 | 54.00 |
+| key==1000 | 99% |68|24|1273|70| 246 | 431.41 |
+
+## Configurations
+
+```yaml
+dataCoord:
+ compaction:
+ clustering:
+ enable: true # Enable clustering compaction
+ autoEnable: true # Enable auto background clustering compaction
+ triggerInterval: 600 # clustering compaction trigger interval in seconds
+ minInterval: 3600 # The minimum interval between clustering compaction executions of one collection, to avoid redundant compaction
+ maxInterval: 259200 # If a collection haven't been clustering compacted for longer than maxInterval, force compact
+ newDataSizeThreshold: 512m # If new data size is large than newDataSizeThreshold, execute clustering compaction
+ timeout: 7200
+
+queryNode:
+ enableSegmentPrune: true # use partition stats to prune data in search/query on shard delegator
+
+datanode:
+ clusteringCompaction:
+ memoryBufferRatio: 0.1 # The ratio of memory buffer of clustering compaction. Data larger than threshold will be flushed to storage.
+ workPoolSize: 8 # worker pool size for one clustering compaction task
+common:
+ usePartitionKeyAsClusteringKey: true # if true, do clustering compaction and segment prune on partition key field
+```
diff --git a/docs/user_guides/figs/clustering_compaction.png b/docs/user_guides/figs/clustering_compaction.png
new file mode 100644
index 0000000000000..0934201b66bcc
Binary files /dev/null and b/docs/user_guides/figs/clustering_compaction.png differ
diff --git a/go.mod b/go.mod
index cd4031a467c82..f5554fbd84d8a 100644
--- a/go.mod
+++ b/go.mod
@@ -22,7 +22,7 @@ require (
github.com/grpc-ecosystem/go-grpc-middleware v1.3.0
github.com/klauspost/compress v1.17.7
github.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d
- github.com/milvus-io/milvus-proto/go-api/v2 v2.3.4-0.20240708102203-5e0455265c53
+ github.com/milvus-io/milvus-proto/go-api/v2 v2.3.4-0.20240909041258-8f8ca67816cd
github.com/minio/minio-go/v7 v7.0.61
github.com/pingcap/log v1.1.1-0.20221015072633-39906604fb81
github.com/prometheus/client_golang v1.14.0
@@ -36,47 +36,45 @@ require (
github.com/spf13/viper v1.8.1
github.com/stretchr/testify v1.9.0
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.865
- github.com/tidwall/gjson v1.14.4
github.com/tikv/client-go/v2 v2.0.4
go.etcd.io/etcd/api/v3 v3.5.5
go.etcd.io/etcd/client/v3 v3.5.5
go.etcd.io/etcd/server/v3 v3.5.5
- go.opentelemetry.io/otel v1.20.0
- go.opentelemetry.io/otel/trace v1.20.0
+ go.opentelemetry.io/otel v1.28.0
+ go.opentelemetry.io/otel/trace v1.28.0
go.uber.org/atomic v1.11.0
go.uber.org/multierr v1.11.0
- go.uber.org/zap v1.24.0
- golang.org/x/crypto v0.24.0
+ go.uber.org/zap v1.27.0
+ golang.org/x/crypto v0.25.0
golang.org/x/exp v0.0.0-20230728194245-b0cb94b80691
- golang.org/x/net v0.26.0
- golang.org/x/oauth2 v0.11.0
+ golang.org/x/net v0.27.0
+ golang.org/x/oauth2 v0.20.0
golang.org/x/sync v0.7.0
golang.org/x/text v0.16.0
- google.golang.org/grpc v1.59.0
+ google.golang.org/grpc v1.65.0
google.golang.org/grpc/examples v0.0.0-20220617181431-3e7b97febc7f
)
-require github.com/milvus-io/milvus-storage/go v0.0.0-20231227072638-ebd0b8e56d70
-
require (
github.com/bits-and-blooms/bitset v1.10.0
+ github.com/bytedance/sonic v1.12.2
github.com/cenkalti/backoff/v4 v4.2.1
github.com/cockroachdb/redact v1.1.3
github.com/greatroar/blobloom v0.0.0-00010101000000-000000000000
github.com/jolestar/go-commons-pool/v2 v2.1.2
- github.com/milvus-io/milvus/pkg v0.0.0-00010101000000-000000000000
+ github.com/milvus-io/milvus/pkg v0.0.2-0.20240801085213-a642a26ed4c6
github.com/pkg/errors v0.9.1
github.com/remeh/sizedwaitgroup v1.0.0
+ github.com/tidwall/gjson v1.17.1
github.com/valyala/fastjson v1.6.4
github.com/zeebo/xxh3 v1.0.2
- go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.46.0
- google.golang.org/protobuf v1.33.0
+ go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0
+ google.golang.org/protobuf v1.34.2
gopkg.in/yaml.v3 v3.0.1
)
require (
- cloud.google.com/go/compute v1.23.0 // indirect
- cloud.google.com/go/compute/metadata v0.2.3 // indirect
+ cloud.google.com/go/compute/metadata v0.3.0 // indirect
github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect
github.com/99designs/keyring v1.2.1 // indirect
github.com/AthenZ/athenz v1.10.39 // indirect
@@ -94,11 +92,12 @@ require (
github.com/benbjohnson/clock v1.1.0 // indirect
github.com/benesch/cgosymbolizer v0.0.0-20190515212042-bec6fe6e597b // indirect
github.com/beorn7/perks v1.0.1 // indirect
- github.com/bytedance/sonic v1.9.1 // indirect
+ github.com/bytedance/sonic/loader v0.2.0 // indirect
github.com/campoy/embedmd v1.0.0 // indirect
- github.com/cespare/xxhash/v2 v2.2.0 // indirect
- github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311 // indirect
+ github.com/cespare/xxhash/v2 v2.3.0 // indirect
github.com/cilium/ebpf v0.11.0 // indirect
+ github.com/cloudwego/base64x v0.1.4 // indirect
+ github.com/cloudwego/iasm v0.2.0 // indirect
github.com/cockroachdb/logtags v0.0.0-20211118104740-dabe8e521a4f // indirect
github.com/confluentinc/confluent-kafka-go v1.9.1 // indirect
github.com/containerd/cgroups/v3 v3.0.3 // indirect
@@ -117,7 +116,7 @@ require (
github.com/gabriel-vasile/mimetype v1.4.2 // indirect
github.com/getsentry/sentry-go v0.12.0 // indirect
github.com/gin-contrib/sse v0.1.0 // indirect
- github.com/go-logr/logr v1.3.0 // indirect
+ github.com/go-logr/logr v1.4.2 // indirect
github.com/go-logr/stdr v1.2.2 // indirect
github.com/go-ole/go-ole v1.2.6 // indirect
github.com/go-playground/locales v0.14.1 // indirect
@@ -219,23 +218,23 @@ require (
go.opentelemetry.io/otel/exporters/jaeger v1.13.0 // indirect
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.20.0 // indirect
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.20.0 // indirect
+ go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.20.0 // indirect
go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.20.0 // indirect
- go.opentelemetry.io/otel/metric v1.20.0 // indirect
- go.opentelemetry.io/otel/sdk v1.20.0 // indirect
+ go.opentelemetry.io/otel/metric v1.28.0 // indirect
+ go.opentelemetry.io/otel/sdk v1.28.0 // indirect
go.opentelemetry.io/proto/otlp v1.0.0 // indirect
go.uber.org/automaxprocs v1.5.3 // indirect
golang.org/x/arch v0.3.0 // indirect
golang.org/x/mod v0.17.0 // indirect
- golang.org/x/sys v0.21.0 // indirect
- golang.org/x/term v0.21.0 // indirect
+ golang.org/x/sys v0.22.0 // indirect
+ golang.org/x/term v0.22.0 // indirect
golang.org/x/time v0.5.0 // indirect
golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d // indirect
golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect
gonum.org/v1/gonum v0.11.0 // indirect
- google.golang.org/appengine v1.6.7 // indirect
- google.golang.org/genproto v0.0.0-20230822172742-b8732ec3820d // indirect
- google.golang.org/genproto/googleapis/api v0.0.0-20230822172742-b8732ec3820d // indirect
- google.golang.org/genproto/googleapis/rpc v0.0.0-20240401170217-c3f982113cda // indirect
+ google.golang.org/genproto v0.0.0-20231106174013-bbf56f31fb17 // indirect
+ google.golang.org/genproto/googleapis/api v0.0.0-20240528184218-531527333157 // indirect
+ google.golang.org/genproto/googleapis/rpc v0.0.0-20240730163845-b1a4ccb954bf // indirect
gopkg.in/inf.v0 v0.9.1 // indirect
gopkg.in/ini.v1 v1.67.0 // indirect
gopkg.in/natefinch/lumberjack.v2 v2.0.0 // indirect
@@ -245,6 +244,7 @@ require (
)
replace (
+ github.com/apache/arrow/go/v12 => github.com/milvus-io/arrow/go/v12 v12.0.1
github.com/apache/pulsar-client-go => github.com/milvus-io/pulsar-client-go v0.6.10
github.com/bketelsen/crypt => github.com/bketelsen/crypt v0.0.4 // Fix security alert for core-os/etcd
github.com/expr-lang/expr => github.com/SimFG/expr v0.0.0-20231218130003-94d085776dc5
diff --git a/go.sum b/go.sum
index 28d831fbc8d07..1d8628c50315e 100644
--- a/go.sum
+++ b/go.sum
@@ -24,10 +24,8 @@ cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvf
cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg=
cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc=
cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ=
-cloud.google.com/go/compute v1.23.0 h1:tP41Zoavr8ptEqaW6j+LQOnyBBhO7OkOMAGrgLopTwY=
-cloud.google.com/go/compute v1.23.0/go.mod h1:4tCnrn48xsqlwSAiLf1HXMQk8CONslYbdiEZc9FEIbM=
-cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY=
-cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA=
+cloud.google.com/go/compute/metadata v0.3.0 h1:Tz+eQXMEqDIKRsmY3cHTL6FVaynIjX2QxYC4trgAKZc=
+cloud.google.com/go/compute/metadata v0.3.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k=
cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE=
cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk=
cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk=
@@ -100,8 +98,6 @@ github.com/antihax/optional v0.0.0-20180407024304-ca021399b1a6/go.mod h1:V8iCPQY
github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=
github.com/antlr/antlr4/runtime/Go/antlr v0.0.0-20210826220005-b48c857c3a0e h1:GCzyKMDDjSGnlpl3clrdAK7I1AaVoaiKDOYkUzChZzg=
github.com/antlr/antlr4/runtime/Go/antlr v0.0.0-20210826220005-b48c857c3a0e/go.mod h1:F7bn7fEU90QkQ3tnmaTx3LTKLEDqnwWODIYppRQ5hnY=
-github.com/apache/arrow/go/v12 v12.0.1 h1:JsR2+hzYYjgSUkBSaahpqCetqZMr76djX80fF/DiJbg=
-github.com/apache/arrow/go/v12 v12.0.1/go.mod h1:weuTY7JvTG/HDPtMQxEUp7pU73vkLWMLpY67QwZ/WWw=
github.com/apache/thrift v0.18.1 h1:lNhK/1nqjbwbiOPDBPFJVKxgDEGSepKuTh6OLiXW8kg=
github.com/apache/thrift v0.18.1/go.mod h1:rdQn/dCcDKEWjjylUeueum4vQEjG2v8v2PqriUnbr+I=
github.com/ardielle/ardielle-go v1.5.2 h1:TilHTpHIQJ27R1Tl/iITBzMwiUGSlVfiVhwDNGM3Zj4=
@@ -132,9 +128,11 @@ github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM
github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ=
github.com/bmizerany/perks v0.0.0-20141205001514-d9a9656a3a4b/go.mod h1:ac9efd0D1fsDb3EJvhqgXRbFx7bs2wqZ10HQPeU8U/Q=
github.com/boombuler/barcode v1.0.0/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8=
-github.com/bytedance/sonic v1.5.0/go.mod h1:ED5hyg4y6t3/9Ku1R6dU/4KyJ48DZ4jPhfY1O2AihPM=
-github.com/bytedance/sonic v1.9.1 h1:6iJ6NqdoxCDr6mbY8h18oSO+cShGSMRGCEo7F2h0x8s=
-github.com/bytedance/sonic v1.9.1/go.mod h1:i736AoUSYt75HyZLoJW9ERYxcy6eaN6h4BZXU064P/U=
+github.com/bytedance/sonic v1.12.2 h1:oaMFuRTpMHYLpCntGca65YWt5ny+wAceDERTkT2L9lg=
+github.com/bytedance/sonic v1.12.2/go.mod h1:B8Gt/XvtZ3Fqj+iSKMypzymZxw/FVwgIGKzMzT9r/rk=
+github.com/bytedance/sonic/loader v0.1.1/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU=
+github.com/bytedance/sonic/loader v0.2.0 h1:zNprn+lsIP06C/IqCHs3gPQIvnvpKbbxyXQP1iU4kWM=
+github.com/bytedance/sonic/loader v0.2.0/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU=
github.com/campoy/embedmd v1.0.0 h1:V4kI2qTJJLf4J29RzI/MAt2c3Bl4dQSYPuflzwFH2hY=
github.com/campoy/embedmd v1.0.0/go.mod h1:oxyr9RCiSXg0M3VJ3ks0UGfp98BpSSGr0kpiX3MzVl8=
github.com/casbin/casbin/v2 v2.0.0/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ=
@@ -150,17 +148,18 @@ github.com/certifi/gocertifi v0.0.0-20191021191039-0944d244cd40/go.mod h1:sGbDF6
github.com/certifi/gocertifi v0.0.0-20200922220541-2c3bb06c6054/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA=
github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc=
github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
-github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44=
-github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
-github.com/chenzhuoyu/base64x v0.0.0-20211019084208-fb5309c8db06/go.mod h1:DH46F32mSOjUmXrMHnKwZdA8wcEefY7UVqBKYGjpdQY=
-github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311 h1:qSGYFH7+jGhDF8vLC+iwCD4WpbV1EBDSzWkJODFLams=
-github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311/go.mod h1:b583jCggY9gE99b6G5LEC39OIiVsWj+R97kbl5odCEk=
+github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=
+github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
github.com/cilium/ebpf v0.11.0 h1:V8gS/bTCCjX9uUnkUFUpPsksM8n1lXBAvHcpiFk1X2Y=
github.com/cilium/ebpf v0.11.0/go.mod h1:WE7CZAnqOL2RouJ4f1uyNhqr2P4CCvXFIqdRDUgWsVs=
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
+github.com/cloudwego/base64x v0.1.4 h1:jwCgWpFanWmN8xoIUHa2rtzmkd5J2plF/dnLS6Xd/0Y=
+github.com/cloudwego/base64x v0.1.4/go.mod h1:0zlkT4Wn5C6NdauXdJRhSKRlJvmclQ1hhJgA0rcu/8w=
+github.com/cloudwego/iasm v0.2.0 h1:1KNIy1I1H9hNNFEEH3DVnI4UujN+1zjpuk6gwHLTssg=
+github.com/cloudwego/iasm v0.2.0/go.mod h1:8rXZaNYT2n95jn+zTI1sDr+IgcD2GVs0nlbbQPiEFhY=
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
@@ -170,8 +169,6 @@ github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWH
github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
-github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4 h1:/inchEIKaYC1Akx+H+gqO04wryn5h75LSazbRlnya1k=
-github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
github.com/cockroachdb/datadriven v0.0.0-20200714090401-bf6692d28da5/go.mod h1:h6jFvWxBdQXxjopDMZyH2UVceIRfR84bdzbkoKrsWNo=
github.com/cockroachdb/datadriven v1.0.2 h1:H9MtNqVoVhvd9nCBwOyDjUEdZCREqbIdCJD93PBm/jA=
github.com/cockroachdb/datadriven v1.0.2/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU=
@@ -236,8 +233,6 @@ github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.m
github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0=
github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE=
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
-github.com/envoyproxy/protoc-gen-validate v1.0.2 h1:QkIBuU5k+x7/QXPvPPnWXWlCdaBFApVqftFV6k087DA=
-github.com/envoyproxy/protoc-gen-validate v1.0.2/go.mod h1:GpiZQP3dDbg4JouG/NNS7QWXpgx6x8QiMKdmN72jogE=
github.com/etcd-io/bbolt v1.3.3/go.mod h1:ZF2nL25h33cCyBtcyWeZ2/I3HQOfTP+0PIEvHjkjCrw=
github.com/facebookgo/ensure v0.0.0-20200202191622-63f1cf65ac4c h1:8ISkoahWXwZR41ois5lSJBSVw4D0OV19Ht/JSTzvSv0=
github.com/facebookgo/ensure v0.0.0-20200202191622-63f1cf65ac4c/go.mod h1:Yg+htXGokKKdzcwhuNDwVvN+uBxDGXJ7G/VN1d8fa64=
@@ -296,8 +291,8 @@ github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9
github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk=
github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A=
github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
-github.com/go-logr/logr v1.3.0 h1:2y3SDp0ZXuc6/cjLSZ+Q3ir+QB9T/iG5yYRXqsagWSY=
-github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
+github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY=
+github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
github.com/go-martini/martini v0.0.0-20170121215854-22fa46961aab/go.mod h1:/P9AEU963A2AYjv4d1V5eVL1CQbEJq6aCNHDDjibzu8=
@@ -341,8 +336,8 @@ github.com/golang-jwt/jwt/v5 v5.2.1 h1:OuVbFODueb089Lh128TAcimifWaLhJwVflnrgM17w
github.com/golang-jwt/jwt/v5 v5.2.1/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk=
github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k=
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
-github.com/golang/glog v1.1.2 h1:DVjP2PbBOzHyzA+dn3WhHIq4NdVu3Q+pvivFICf/7fo=
-github.com/golang/glog v1.1.2/go.mod h1:zR+okUeTbrL6EL3xHUDxZuEtGv04p5shwip1+mL/rLQ=
+github.com/golang/glog v1.2.1 h1:OptwRhECazUx5ix5TTWC3EZhsZEHWcYWY4FQHTIubm4=
+github.com/golang/glog v1.2.1/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w=
github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
@@ -539,6 +534,7 @@ github.com/klauspost/cpuid/v2 v2.0.1/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa02
github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
github.com/klauspost/cpuid/v2 v2.2.5 h1:0E5MSMDEoAulmXNFquVs//DdoomxaoTY1kUhbc/qbZg=
github.com/klauspost/cpuid/v2 v2.2.5/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws=
+github.com/knz/go-libedit v1.10.1/go.mod h1:MZTVkCWyz0oBc7JOWP3wNAzd002ZbM/5hgShxwh4x8M=
github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg=
@@ -562,8 +558,6 @@ github.com/labstack/echo/v4 v4.5.0/go.mod h1:czIriw4a0C1dFun+ObrXp7ok03xON0N1awS
github.com/labstack/gommon v0.3.0/go.mod h1:MULnywXg0yavhxWKc+lOruYdAhDwPK9wf0OL7NoOu+k=
github.com/leodido/go-urn v1.2.4 h1:XlAE/cm/ms7TE/VMVoduSpNBoyc2dOxHs5MZSwAN63Q=
github.com/leodido/go-urn v1.2.4/go.mod h1:7ZrI8mTSeBSHl/UaRyKQW1qZeMgak41ANeCNaVckg+4=
-github.com/lingdor/stackerror v0.0.0-20191119040541-976d8885ed76 h1:IVlcvV0CjvfBYYod5ePe89l+3LBAl//6n9kJ9Vr2i0k=
-github.com/lingdor/stackerror v0.0.0-20191119040541-976d8885ed76/go.mod h1:Iu9BHUvTh8/KpbuSoKx/CaJEdJvFxSverxIy7I+nq7s=
github.com/linkedin/goavro v2.1.0+incompatible/go.mod h1:bBCwI2eGYpUI/4820s67MElg9tdeLbINjLjiM2xZFYM=
github.com/linkedin/goavro/v2 v2.9.8/go.mod h1:UgQUb2N/pmueQYH9bfqFioWxzYCZXSfF8Jw03O5sjqA=
github.com/linkedin/goavro/v2 v2.10.0/go.mod h1:UgQUb2N/pmueQYH9bfqFioWxzYCZXSfF8Jw03O5sjqA=
@@ -600,16 +594,16 @@ github.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d h1:5PJl274Y63IEHC+7izoQ
github.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE=
github.com/microcosm-cc/bluemonday v1.0.2/go.mod h1:iVP4YcDBq+n/5fb23BhYFvIMq/leAFZyRl6bYmGDlGc=
github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg=
+github.com/milvus-io/arrow/go/v12 v12.0.1 h1:MzqxCoNtN8tz6l7xzDBmxOzME6+K6hyEoM/U1jP3++g=
+github.com/milvus-io/arrow/go/v12 v12.0.1/go.mod h1:weuTY7JvTG/HDPtMQxEUp7pU73vkLWMLpY67QwZ/WWw=
github.com/milvus-io/blobloom v0.0.0-20240603110411-471ae49f3b93 h1:xnIeuG1nuTEHKbbv51OwNGO82U+d6ut08ppTmZVm+VY=
github.com/milvus-io/blobloom v0.0.0-20240603110411-471ae49f3b93/go.mod h1:mjMJ1hh1wjGVfr93QIHJ6FfDNVrA0IELv8OvMHJxHKs=
github.com/milvus-io/cgosymbolizer v0.0.0-20240722103217-b7dee0e50119 h1:9VXijWuf+oW/9m+sirIDL4wQb2BoZNXORbcJbkPOChY=
github.com/milvus-io/cgosymbolizer v0.0.0-20240722103217-b7dee0e50119/go.mod h1:DvXTE/K/RtHehxU8/GtDs4vFtfw64jJ3PaCnFri8CRg=
github.com/milvus-io/gorocksdb v0.0.0-20220624081344-8c5f4212846b h1:TfeY0NxYxZzUfIfYe5qYDBzt4ZYRqzUjTR6CvUzjat8=
github.com/milvus-io/gorocksdb v0.0.0-20220624081344-8c5f4212846b/go.mod h1:iwW+9cWfIzzDseEBCCeDSN5SD16Tidvy8cwQ7ZY8Qj4=
-github.com/milvus-io/milvus-proto/go-api/v2 v2.3.4-0.20240708102203-5e0455265c53 h1:hLeTFOV/IXUoTbm4slVWFSnR296yALJ8Zo+YCMEvAy0=
-github.com/milvus-io/milvus-proto/go-api/v2 v2.3.4-0.20240708102203-5e0455265c53/go.mod h1:/6UT4zZl6awVeXLeE7UGDWZvXj3IWkRsh3mqsn0DiAs=
-github.com/milvus-io/milvus-storage/go v0.0.0-20231227072638-ebd0b8e56d70 h1:Z+sp64fmAOxAG7mU0dfVOXvAXlwRB0c8a96rIM5HevI=
-github.com/milvus-io/milvus-storage/go v0.0.0-20231227072638-ebd0b8e56d70/go.mod h1:GPETMcTZq1gLY1WA6Na5kiNAKnq8SEMMiVKUZrM3sho=
+github.com/milvus-io/milvus-proto/go-api/v2 v2.3.4-0.20240909041258-8f8ca67816cd h1:x0b0+foTe23sKcVFseR1DE8+BB08EH6ViiRHaz8PEik=
+github.com/milvus-io/milvus-proto/go-api/v2 v2.3.4-0.20240909041258-8f8ca67816cd/go.mod h1:/6UT4zZl6awVeXLeE7UGDWZvXj3IWkRsh3mqsn0DiAs=
github.com/milvus-io/pulsar-client-go v0.6.10 h1:eqpJjU+/QX0iIhEo3nhOqMNXL+TyInAs1IAHZCrCM/A=
github.com/milvus-io/pulsar-client-go v0.6.10/go.mod h1:lQqCkgwDF8YFYjKA+zOheTk1tev2B+bKj5j7+nm8M1w=
github.com/minio/asm2plan9s v0.0.0-20200509001527-cdd76441f9d8 h1:AMFGa4R4MiIpspGNG7Z948v4n35fFGB3RR3G/ry4FWs=
@@ -863,8 +857,8 @@ github.com/thoas/go-funk v0.9.1 h1:O549iLZqPpTUQ10ykd26sZhzD+rmR5pWhuElrhbC20M=
github.com/thoas/go-funk v0.9.1/go.mod h1:+IWnUfUmFO1+WVYQWQtIJHeRRdaIyyYglZN7xzUPe4Q=
github.com/tiancaiamao/gp v0.0.0-20221230034425-4025bc8a4d4a h1:J/YdBZ46WKpXsxsW93SG+q0F8KI+yFrcIDT4c/RNoc4=
github.com/tiancaiamao/gp v0.0.0-20221230034425-4025bc8a4d4a/go.mod h1:h4xBhSNtOeEosLJ4P7JyKXX7Cabg7AVkWCK5gV2vOrM=
-github.com/tidwall/gjson v1.14.4 h1:uo0p8EbA09J7RQaflQ1aBRffTR7xedD2bcIVSYxLnkM=
-github.com/tidwall/gjson v1.14.4/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk=
+github.com/tidwall/gjson v1.17.1 h1:wlYEnwqAHgzmhNUFfw7Xalt2JzQvsMx2Se4PcoFCT/U=
+github.com/tidwall/gjson v1.17.1/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk=
github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA=
github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM=
github.com/tidwall/pretty v1.2.0 h1:RWIZEg2iJ8/g6fDDYzMpobmaoGh5OLl4AXtGUGPcqCs=
@@ -953,11 +947,11 @@ go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk=
go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E=
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.25.0/go.mod h1:E5NNboN0UqSAki0Atn9kVwaN7I+l25gGxDqBueo/74E=
-go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.46.0 h1:PzIubN4/sjByhDRHLviCjJuweBXWFZWhghjg7cS28+M=
-go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.46.0/go.mod h1:Ct6zzQEuGK3WpJs2n4dn+wfJYzd/+hNnxMRTWjGn30M=
+go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 h1:4Pp6oUg3+e/6M4C0A/3kJ2VYa++dsWVTtGgLVj5xtHg=
+go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0/go.mod h1:Mjt1i1INqiaoZOMGR1RIUJN+i3ChKoFRqzrRQhlkbs0=
go.opentelemetry.io/otel v1.0.1/go.mod h1:OPEOD4jIT2SlZPMmwT6FqZz2C0ZNdQqiWcoK6M0SNFU=
-go.opentelemetry.io/otel v1.20.0 h1:vsb/ggIY+hUjD/zCAQHpzTmndPqv/ml2ArbsbfBYTAc=
-go.opentelemetry.io/otel v1.20.0/go.mod h1:oUIGj3D77RwJdM6PPZImDpSZGDvkD9fhesHny69JFrs=
+go.opentelemetry.io/otel v1.28.0 h1:/SqNcYk+idO0CxKEUOtKQClMK/MimZihKYMruSMViUo=
+go.opentelemetry.io/otel v1.28.0/go.mod h1:q68ijF8Fc8CnMHKyzqL6akLO46ePnjkgfIMIjUIX9z4=
go.opentelemetry.io/otel/exporters/jaeger v1.13.0 h1:VAMoGujbVV8Q0JNM/cEbhzUIWWBxnEqH45HP9iBKN04=
go.opentelemetry.io/otel/exporters/jaeger v1.13.0/go.mod h1:fHwbmle6mBFJA1p2ZIhilvffCdq/dM5UTIiCOmEjS+w=
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.0.1/go.mod h1:Kv8liBeVNFkkkbilbgWRpV+wWuu+H5xdOT6HAgd30iw=
@@ -966,16 +960,18 @@ go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.20.0/go.mod h1:GijYcYmNpX1K
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.0.1/go.mod h1:xOvWoTOrQjxjW61xtOmD/WKGRYb/P4NzRo3bs65U6Rk=
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.20.0 h1:gvmNvqrPYovvyRmCSygkUDyL8lC5Tl845MLEwqpxhEU=
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.20.0/go.mod h1:vNUq47TGFioo+ffTSnKNdob241vePmtNZnAODKapKd0=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.20.0 h1:CsBiKCiQPdSjS+MlRiqeTI9JDDpSuk0Hb6QTRfwer8k=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.20.0/go.mod h1:CMJYNAfooOwSZSAmAeMUV1M+TXld3BiK++z9fqIm2xk=
go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.20.0 h1:4s9HxB4azeeQkhY0GE5wZlMj4/pz8tE5gx2OQpGUw58=
go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.20.0/go.mod h1:djVA3TUJ2fSdMX0JE5XxFBOaZzprElJoP7fD4vnV2SU=
-go.opentelemetry.io/otel/metric v1.20.0 h1:ZlrO8Hu9+GAhnepmRGhSU7/VkpjrNowxRN9GyKR4wzA=
-go.opentelemetry.io/otel/metric v1.20.0/go.mod h1:90DRw3nfK4D7Sm/75yQ00gTJxtkBxX+wu6YaNymbpVM=
+go.opentelemetry.io/otel/metric v1.28.0 h1:f0HGvSl1KRAU1DLgLGFjrwVyismPlnuU6JD6bOeuA5Q=
+go.opentelemetry.io/otel/metric v1.28.0/go.mod h1:Fb1eVBFZmLVTMb6PPohq3TO9IIhUisDsbJoL/+uQW4s=
go.opentelemetry.io/otel/sdk v1.0.1/go.mod h1:HrdXne+BiwsOHYYkBE5ysIcv2bvdZstxzmCQhxTcZkI=
-go.opentelemetry.io/otel/sdk v1.20.0 h1:5Jf6imeFZlZtKv9Qbo6qt2ZkmWtdWx/wzcCbNUlAWGM=
-go.opentelemetry.io/otel/sdk v1.20.0/go.mod h1:rmkSx1cZCm/tn16iWDn1GQbLtsW/LvsdEEFzCSRM6V0=
+go.opentelemetry.io/otel/sdk v1.28.0 h1:b9d7hIry8yZsgtbmM0DKyPWMMUMlK9NEKuIG4aBqWyE=
+go.opentelemetry.io/otel/sdk v1.28.0/go.mod h1:oYj7ClPUA7Iw3m+r7GeEjz0qckQRJK2B8zjcZEfu7Pg=
go.opentelemetry.io/otel/trace v1.0.1/go.mod h1:5g4i4fKLaX2BQpSBsxw8YYcgKpMMSW3x7ZTuYBr3sUk=
-go.opentelemetry.io/otel/trace v1.20.0 h1:+yxVAPZPbQhbC3OfAkeIVTky6iTFpcr4SiY9om7mXSQ=
-go.opentelemetry.io/otel/trace v1.20.0/go.mod h1:HJSK7F/hA5RlzpZ0zKDCHCDHm556LCDtKaAo6JmBFUU=
+go.opentelemetry.io/otel/trace v1.28.0 h1:GhQ9cUuQGmNDd5BTCP2dAvv75RdMxEfTmYejp+lkx9g=
+go.opentelemetry.io/otel/trace v1.28.0/go.mod h1:jPyXzNPg6da9+38HEwElrQiHlVMTnVfM3/yv2OlIHaI=
go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI=
go.opentelemetry.io/proto/otlp v0.9.0/go.mod h1:1vKfU9rv61e9EVGthD1zNvUbiwPcimSsOPU9brfSHJg=
go.opentelemetry.io/proto/otlp v1.0.0 h1:T0TX0tmXU8a3CbNXzEKGeU5mIVOdf0oykP+u2lIVU/I=
@@ -1003,7 +999,8 @@ go.uber.org/zap v1.19.0/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI=
go.uber.org/zap v1.20.0/go.mod h1:wjWOCqI0f2ZZrJF/UufIOkiC8ii6tm1iqIsLo76RfJw=
go.uber.org/zap v1.24.0 h1:FiJd5l1UOLj0wCgbSE0rwwXHzEdAZS6hiiSnxJN/D60=
go.uber.org/zap v1.24.0/go.mod h1:2kMP+WWQ8aoFoedH3T2sq6iJ2yDWpHbP0f6MQbS9Gkg=
-golang.org/x/arch v0.0.0-20210923205945-b76863e36670/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8=
+go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8=
+go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E=
golang.org/x/arch v0.3.0 h1:02VY4/ZcO/gBOH6PUaoiptASxtXU10jazRCP865E97k=
golang.org/x/arch v0.3.0/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8=
golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
@@ -1020,8 +1017,8 @@ golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPh
golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
-golang.org/x/crypto v0.24.0 h1:mnl8DM0o513X8fdIkmyFE/5hTYxbwYOjDS/+rK6qpRI=
-golang.org/x/crypto v0.24.0/go.mod h1:Z1PMYSOR5nyMcyAVAIQSKCDwalqy85Aqn1x3Ws4L5DM=
+golang.org/x/crypto v0.25.0 h1:ypSNr+bnYL2YhwoMt2zPxHFmbAN1KZs/njMG3hxUp30=
+golang.org/x/crypto v0.25.0/go.mod h1:T+wALwcMOSE0kXgUAnPAHqTLW+XHgcELELW8VaDgm/M=
golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
@@ -1123,8 +1120,8 @@ golang.org/x/net v0.0.0-20210726213435-c6fcb2dbf985/go.mod h1:9nx3DQGgdP8bBQD5qx
golang.org/x/net v0.0.0-20211008194852-3b03d305991f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
-golang.org/x/net v0.26.0 h1:soB7SVo0PWrY4vPW/+ay0jKDNScG2X9wFeYlXIvJsOQ=
-golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE=
+golang.org/x/net v0.27.0 h1:5K3Njcw06/l2y9vpGCSdcxWOYHOUk3dVNGDXN+FvAys=
+golang.org/x/net v0.27.0/go.mod h1:dDi0PyhWNoiUOrAS8uXv/vnScO4wnHQO4mj9fn/RytE=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
@@ -1137,8 +1134,8 @@ golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ
golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
golang.org/x/oauth2 v0.0.0-20210402161424-2e8d93401602/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
-golang.org/x/oauth2 v0.11.0 h1:vPL4xzxBM4niKCW6g9whtaWVXTJf1U5e4aZxxFx/gbU=
-golang.org/x/oauth2 v0.11.0/go.mod h1:LdF7O/8bLR/qWK9DrpXmbHLTouvRHK0SgJl0GmDBchk=
+golang.org/x/oauth2 v0.20.0 h1:4mQdhULixXKP1rwYBW0vAijoXnkTG0BLCDRzfe1idMo=
+golang.org/x/oauth2 v0.20.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
@@ -1234,12 +1231,12 @@ golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBc
golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws=
-golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/sys v0.22.0 h1:RI27ohtqKCnwULzJLqkv897zojh5/DwS/ENaMzUOaWI=
+golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
-golang.org/x/term v0.21.0 h1:WVXCp+/EBEHOj53Rvu+7KiT/iElMrO8ACK16SMZ3jaA=
-golang.org/x/term v0.21.0/go.mod h1:ooXLefLobQVslOqselCNF4SxFAaoS6KujMbsGzSDmX0=
+golang.org/x/term v0.22.0 h1:BbsgPEJULsl2fV/AT3v15Mjva5yXKQDyKf+TbDz7QJk=
+golang.org/x/term v0.22.0/go.mod h1:F3qCibpT5AMpCRfhfT53vVJwhLtIVHhB9XDjfFvnMI4=
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
@@ -1366,7 +1363,6 @@ google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7
google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0=
google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
-google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c=
google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
google.golang.org/genproto v0.0.0-20180518175338-11a468237815/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
@@ -1415,12 +1411,12 @@ google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaE
google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0=
google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24=
google.golang.org/genproto v0.0.0-20220503193339-ba3ae3f07e29/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4=
-google.golang.org/genproto v0.0.0-20230822172742-b8732ec3820d h1:VBu5YqKPv6XiJ199exd8Br+Aetz+o08F+PLMnwJQHAY=
-google.golang.org/genproto v0.0.0-20230822172742-b8732ec3820d/go.mod h1:yZTlhN0tQnXo3h00fuXNCxJdLdIdnVFVBaRJ5LWBbw4=
-google.golang.org/genproto/googleapis/api v0.0.0-20230822172742-b8732ec3820d h1:DoPTO70H+bcDXcd39vOqb2viZxgqeBeSGtZ55yZU4/Q=
-google.golang.org/genproto/googleapis/api v0.0.0-20230822172742-b8732ec3820d/go.mod h1:KjSP20unUpOx5kyQUFa7k4OJg0qeJ7DEZflGDu2p6Bk=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20240401170217-c3f982113cda h1:LI5DOvAxUPMv/50agcLLoo+AdWc1irS9Rzz4vPuD1V4=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20240401170217-c3f982113cda/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY=
+google.golang.org/genproto v0.0.0-20231106174013-bbf56f31fb17 h1:wpZ8pe2x1Q3f2KyT5f8oP/fa9rHAKgFPr/HZdNuS+PQ=
+google.golang.org/genproto v0.0.0-20231106174013-bbf56f31fb17/go.mod h1:J7XzRzVy1+IPwWHZUzoD0IccYZIrXILAQpc+Qy9CMhY=
+google.golang.org/genproto/googleapis/api v0.0.0-20240528184218-531527333157 h1:7whR9kGa5LUwFtpLm2ArCEejtnxlGeLbAyjFY8sGNFw=
+google.golang.org/genproto/googleapis/api v0.0.0-20240528184218-531527333157/go.mod h1:99sLkeliLXfdj2J75X3Ho+rrVCaJze0uwN7zDDkjPVU=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20240730163845-b1a4ccb954bf h1:liao9UHurZLtiEwBgT9LMOnKYsHze6eA6w1KQCMVN2Q=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20240730163845-b1a4ccb954bf/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY=
google.golang.org/grpc v1.12.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw=
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=
@@ -1448,8 +1444,8 @@ google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9K
google.golang.org/grpc v1.41.0/go.mod h1:U3l9uK9J0sini8mHphKoXyaqDA/8VyGnDee1zzIUK6k=
google.golang.org/grpc v1.43.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU=
google.golang.org/grpc v1.46.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk=
-google.golang.org/grpc v1.59.0 h1:Z5Iec2pjwb+LEOqzpB2MR12/eKFhDPhuqW91O+4bwUk=
-google.golang.org/grpc v1.59.0/go.mod h1:aUPDwccQo6OTjy7Hct4AfBPD1GptF4fyUjIkQ9YtF98=
+google.golang.org/grpc v1.65.0 h1:bs/cUb4lp1G5iImFFd3u5ixQzweKizoZJAwBNLR42lc=
+google.golang.org/grpc v1.65.0/go.mod h1:WgYC2ypjlB0EiQi6wdKixMqukr6lBc0Vo+oOgjrM5ZQ=
google.golang.org/grpc/examples v0.0.0-20220617181431-3e7b97febc7f h1:rqzndB2lIQGivcXdTuY3Y9NBvr70X+y77woofSRluec=
google.golang.org/grpc/examples v0.0.0-20220617181431-3e7b97febc7f/go.mod h1:gxndsbNG1n4TZcHGgsYEfVGnTxqfEdfiDv6/DADXX9o=
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
@@ -1466,8 +1462,8 @@ google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp0
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
-google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI=
-google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
+google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg=
+google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw=
gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
gopkg.in/avro.v0 v0.0.0-20171217001914-a730b5802183/go.mod h1:FvqrFXt+jCsyQibeRv4xxEJBL5iG2DDW5aeJwzDiq4A=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
@@ -1525,6 +1521,7 @@ honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9
honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
k8s.io/apimachinery v0.28.6 h1:RsTeR4z6S07srPg6XYrwXpTJVMXsjPXn0ODakMytSW0=
k8s.io/apimachinery v0.28.6/go.mod h1:QFNX/kCl/EMT2WTSz8k4WLCv2XnkOLMaL8GAVRMdpsA=
+nullprogram.com/x/optparse v1.0.0/go.mod h1:KdyPE+Igbe0jQUrVfMqDMeJQIJZEuyV7pjYmp6pbG50=
rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=
rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4=
rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0=
diff --git a/internal/.mockery.yaml b/internal/.mockery.yaml
index c68667da37e74..9aabe096bcbbc 100644
--- a/internal/.mockery.yaml
+++ b/internal/.mockery.yaml
@@ -5,12 +5,22 @@ dir: 'internal/mocks/{{trimPrefix .PackagePath "github.com/milvus-io/milvus/inte
mockname: "Mock{{.InterfaceName}}"
outpkg: "mock_{{.PackageName}}"
packages:
+ github.com/milvus-io/milvus/internal/distributed/streaming:
+ interfaces:
+ WALAccesser:
+ Utility:
github.com/milvus-io/milvus/internal/streamingcoord/server/balancer:
interfaces:
Balancer:
github.com/milvus-io/milvus/internal/streamingnode/client/manager:
interfaces:
ManagerClient:
+ github.com/milvus-io/milvus/internal/streamingcoord/client:
+ interfaces:
+ Client:
+ github.com/milvus-io/milvus/internal/streamingnode/client/handler:
+ interfaces:
+ HandlerClient:
github.com/milvus-io/milvus/internal/streamingnode/client/handler/assignment:
interfaces:
Watcher:
@@ -20,6 +30,9 @@ packages:
github.com/milvus-io/milvus/internal/streamingnode/client/handler/consumer:
interfaces:
Consumer:
+ github.com/milvus-io/milvus/internal/streamingnode/server/flusher:
+ interfaces:
+ Flusher:
github.com/milvus-io/milvus/internal/streamingnode/server/wal:
interfaces:
OpenerBuilder:
@@ -31,26 +44,22 @@ packages:
Interceptor:
InterceptorWithReady:
InterceptorBuilder:
+ github.com/milvus-io/milvus/internal/streamingnode/server/wal/interceptors/segment/inspector:
+ interfaces:
+ SealOperator:
+ github.com/milvus-io/milvus/internal/streamingnode/server/wal/interceptors/timetick/inspector:
+ interfaces:
+ TimeTickSyncOperator:
google.golang.org/grpc:
interfaces:
ClientStream:
- github.com/milvus-io/milvus/internal/proto/streamingpb:
- interfaces:
- StreamingNodeHandlerService_ConsumeServer:
- StreamingNodeHandlerService_ProduceServer:
- StreamingCoordAssignmentServiceClient:
- StreamingCoordAssignmentService_AssignmentDiscoverClient:
- StreamingCoordAssignmentService_AssignmentDiscoverServer:
- StreamingNodeManagerServiceClient:
- StreamingNodeHandlerServiceClient:
- StreamingNodeHandlerService_ConsumeClient:
- StreamingNodeHandlerService_ProduceClient:
github.com/milvus-io/milvus/internal/streamingnode/server/walmanager:
interfaces:
Manager:
github.com/milvus-io/milvus/internal/metastore:
interfaces:
StreamingCoordCataLog:
+ StreamingNodeCataLog:
github.com/milvus-io/milvus/internal/util/streamingutil/service/discoverer:
interfaces:
Discoverer:
diff --git a/internal/core/CMakeLists.txt b/internal/core/CMakeLists.txt
index fd43ede08577f..10b3c3e76aff5 100644
--- a/internal/core/CMakeLists.txt
+++ b/internal/core/CMakeLists.txt
@@ -129,6 +129,11 @@ if (LINUX OR MSYS)
"-Wno-error"
"-Wno-all"
)
+ if (USE_ASAN STREQUAL "ON")
+ message( STATUS "Building Milvus Core Using AddressSanitizer")
+ add_compile_options(-fno-omit-frame-pointer -fsanitize=address)
+ add_link_options(-fno-omit-frame-pointer -fsanitize=address)
+ endif()
if (CMAKE_BUILD_TYPE STREQUAL "Release")
append_flags( CMAKE_CXX_FLAGS
"-O3"
@@ -319,4 +324,3 @@ install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/src/futures/
install(DIRECTORY ${CMAKE_BINARY_DIR}/lib/
DESTINATION ${CMAKE_INSTALL_FULL_LIBDIR}
)
-
diff --git a/internal/core/cmake/Utils.cmake b/internal/core/cmake/Utils.cmake
index f057a4845716c..8facf7cccd860 100644
--- a/internal/core/cmake/Utils.cmake
+++ b/internal/core/cmake/Utils.cmake
@@ -99,4 +99,14 @@ macro(create_library)
add_library(${L_TARGET} ${L_SRCS})
target_link_libraries(${L_TARGET} PRIVATE ${L_LIBS})
target_compile_definitions(${L_TARGET} PRIVATE ${L_DEFS})
-endmacro()
\ No newline at end of file
+endmacro()
+
+macro(add_source_at_current_directory_recursively)
+ file(GLOB_RECURSE SOURCE_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*.cc" "*.cpp" "*.c" "*.cxx")
+ message(STATUS "${CMAKE_CURRENT_SOURCE_DIR} add new source files at current directory recursively: ${SOURCE_FILES}")
+endmacro()
+
+macro(add_source_at_current_directory)
+ file(GLOB SOURCE_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*.cc" "*.cpp" "*.c" "*.cxx")
+ message(STATUS "${CMAKE_CURRENT_SOURCE_DIR} add new source files at current directory: ${SOURCE_FILES}")
+endmacro()
diff --git a/internal/core/conanfile.py b/internal/core/conanfile.py
index ec552fb9cabeb..9978fe53f0c32 100644
--- a/internal/core/conanfile.py
+++ b/internal/core/conanfile.py
@@ -5,44 +5,46 @@ class MilvusConan(ConanFile):
keep_imports = True
settings = "os", "compiler", "build_type", "arch"
requires = (
- "rocksdb/6.29.5@milvus/dev",
- "boost/1.82.0",
- "onetbb/2021.9.0",
- "nlohmann_json/3.11.2",
- "zstd/1.5.4",
- "lz4/1.9.4",
- "snappy/1.1.9",
- "lzo/2.10",
- "arrow/15.0.0",
- "openssl/3.1.2",
- "aws-sdk-cpp/1.9.234",
- "googleapis/cci.20221108",
- "benchmark/1.7.0",
- "gtest/1.13.0",
- "protobuf/3.21.4",
- "rapidxml/1.13",
- "yaml-cpp/0.7.0",
- "marisa/0.2.6",
- "zlib/1.2.13",
- "libcurl/7.86.0",
- "glog/0.6.0",
- "fmt/9.1.0",
- "gflags/2.2.2",
- "double-conversion/3.2.1",
- "libevent/2.1.12",
- "libdwarf/20191104",
- "libiberty/9.1.0",
- "libsodium/cci.20220430",
- "xsimd/9.0.1",
- "xz_utils/5.4.0",
- "prometheus-cpp/1.1.0",
- "re2/20230301",
- "folly/2023.10.30.08@milvus/dev",
- "google-cloud-cpp/2.5.0@milvus/dev",
- "opentelemetry-cpp/1.8.1.1@milvus/dev",
- "librdkafka/1.9.1",
- "abseil/20230125.3",
- "roaring/3.0.0",
+ "rocksdb/6.29.5@milvus/dev#b1842a53ddff60240c5282a3da498ba1",
+ "boost/1.82.0#744a17160ebb5838e9115eab4d6d0c06",
+ "onetbb/2021.9.0#4a223ff1b4025d02f31b65aedf5e7f4a",
+ "nlohmann_json/3.11.2#ffb9e9236619f1c883e36662f944345d",
+ "zstd/1.5.4#308b8b048f9a3823ce248f9c150cc889",
+ "lz4/1.9.4#c5afb86edd69ac0df30e3a9e192e43db",
+ "snappy/1.1.9#0519333fef284acd04806243de7d3070",
+ "lzo/2.10#9517fc1bcc4d4cc229a79806003a1baa",
+ "arrow/15.0.0#0456d916ff25d509e0724c5b219b4c45",
+ "openssl/3.1.2#02594c4c0a6e2b4feb3cd15119993597",
+ "aws-sdk-cpp/1.9.234#28d6d2c175975900ce292bafe8022c88",
+ "googleapis/cci.20221108#65604e1b3b9a6b363044da625b201a2a",
+ "benchmark/1.7.0#459f3bb1a64400a886ba43047576df3c",
+ "gtest/1.13.0#f9548be18a41ccc6367efcb8146e92be",
+ "protobuf/3.21.4#fd372371d994b8585742ca42c12337f9",
+ "rapidxml/1.13#10c11a4bfe073e131ed399d5c4f2e075",
+ "yaml-cpp/0.7.0#9c87b3998de893cf2e5a08ad09a7a6e0",
+ "marisa/0.2.6#68446854f5a420672d21f21191f8e5af",
+ "zlib/1.2.13#df233e6bed99052f285331b9f54d9070",
+ "libcurl/7.86.0#bbc887fae3341b3cb776c601f814df05",
+ "glog/0.6.0#d22ebf9111fed68de86b0fa6bf6f9c3f",
+ "fmt/9.1.0#95259249fb7ef8c6b5674a40b00abba3",
+ "gflags/2.2.2#b15c28c567c7ade7449cf994168a559f",
+ "double-conversion/3.2.1#640e35791a4bac95b0545e2f54b7aceb",
+ "libevent/2.1.12#4fd19d10d3bed63b3a8952c923454bc0",
+ "libdwarf/20191104#7f56c6c7ccda5fadf5f28351d35d7c01",
+ "libiberty/9.1.0#3060045a116b0fff6d4937b0fc9cfc0e",
+ "libsodium/cci.20220430#7429a9e5351cc67bea3537229921714d",
+ "xsimd/9.0.1#ac9fd02a381698c4e08c5c4ca03b73e1",
+ "xz_utils/5.4.0#a6d90890193dc851fa0d470163271c7a",
+ "prometheus-cpp/1.1.0#ea9b101cb785943adb40ad82eda7856c",
+ "re2/20230301#f8efaf45f98d0193cd0b2ea08b6b4060",
+ "folly/2023.10.30.08@milvus/dev#81d7729cd4013a1b708af3340a3b04d9",
+ "google-cloud-cpp/2.5.0@milvus/2.4#c5591ab30b26b53ea6068af6f07128d3",
+ "opentelemetry-cpp/1.8.1.1@milvus/2.4#7345034855d593047826b0c74d9a0ced",
+ "librdkafka/1.9.1#e24dcbb0a1684dcf5a56d8d0692ceef3",
+ "abseil/20230125.3#dad7cc4c83bbd44c1f1cc9cc4d97ac88",
+ "roaring/3.0.0#25a703f80eda0764a31ef939229e202d",
+ "grpc/1.50.1@milvus/dev#75103960d1cac300cf425ccfccceac08",
+ "rapidjson/cci.20230929#624c0094d741e6a3749d2e44d834b96c"
)
generators = ("cmake", "cmake_find_package")
default_options = {
diff --git a/internal/core/src/CMakeLists.txt b/internal/core/src/CMakeLists.txt
index 7cc3961fad888..e53cb09c5048f 100644
--- a/internal/core/src/CMakeLists.txt
+++ b/internal/core/src/CMakeLists.txt
@@ -20,8 +20,19 @@ else()
project(core CXX C)
endif()
+option( EMBEDDED_MILVUS "Enable embedded Milvus" OFF )
+if ( EMBEDDED_MILVUS )
+ add_compile_definitions( EMBEDDED_MILVUS )
+endif()
+
include_directories(${MILVUS_ENGINE_SRC})
include_directories(${MILVUS_THIRDPARTY_SRC})
+include_directories(
+ ${KNOWHERE_INCLUDE_DIR}
+ ${SIMDJSON_INCLUDE_DIR}
+ ${TANTIVY_INCLUDE_DIR}
+ ${CONAN_INCLUDE_DIRS}
+)
add_subdirectory( pb )
add_subdirectory( log )
@@ -37,3 +48,42 @@ add_subdirectory( clustering )
add_subdirectory( exec )
add_subdirectory( bitset )
add_subdirectory( futures )
+
+milvus_add_pkg_config("milvus_core")
+
+add_library(milvus_core SHARED
+ $
+ $
+ $
+ $
+ $
+ $
+ $
+ $
+ $
+ $
+ $
+ $
+ $
+ $
+)
+
+set(LINK_TARGETS
+ boost_bitset_ext
+ simdjson
+ tantivy_binding
+ knowhere
+ ${OpenMP_CXX_FLAGS}
+ ${CONAN_LIBS})
+
+if(USE_OPENDAL)
+ set(LINK_TARGETS ${LINK_TARGETS} opendal)
+endif()
+
+if(DEFINED AZURE_BUILD_DIR)
+ set(LINK_TARGETS ${LINK_TARGETS} azure_blob_chunk_manager)
+endif()
+
+target_link_libraries(milvus_core ${LINK_TARGETS})
+
+install(TARGETS milvus_core DESTINATION "${CMAKE_INSTALL_LIBDIR}")
diff --git a/internal/core/src/bitset/CMakeLists.txt b/internal/core/src/bitset/CMakeLists.txt
index 8b2137ca25e5f..3f7c6ae24d776 100644
--- a/internal/core/src/bitset/CMakeLists.txt
+++ b/internal/core/src/bitset/CMakeLists.txt
@@ -13,6 +13,8 @@ set(BITSET_SRCS
detail/platform/dynamic.cpp
)
+
+
if (${CMAKE_SYSTEM_PROCESSOR} STREQUAL "x86_64")
list(APPEND BITSET_SRCS
detail/platform/x86/avx2-inst.cpp
@@ -38,4 +40,4 @@ elseif (${CMAKE_SYSTEM_PROCESSOR} MATCHES "arm*")
#set_source_files_properties(detail/platform/arm/sve-inst.cpp PROPERTIES COMPILE_FLAGS "-mcpu=neoverse-v1")
endif()
-add_library(milvus_bitset ${BITSET_SRCS})
+add_library(milvus_bitset OBJECT ${BITSET_SRCS})
diff --git a/internal/core/src/bitset/detail/platform/x86/avx512-impl.h b/internal/core/src/bitset/detail/platform/x86/avx512-impl.h
index b460d257ecda6..c7206547723de 100644
--- a/internal/core/src/bitset/detail/platform/x86/avx512-impl.h
+++ b/internal/core/src/bitset/detail/platform/x86/avx512-impl.h
@@ -48,6 +48,11 @@ get_mask(const size_t count) {
///////////////////////////////////////////////////////////////////////////
+constexpr size_t N_BLOCKS = 8;
+constexpr size_t PAGE_SIZE = 4096;
+constexpr size_t BLOCKS_PREFETCH_AHEAD = 4;
+constexpr size_t CACHELINE_WIDTH = 0x40;
+
//
template
bool
@@ -65,9 +70,30 @@ OpCompareValImpl::op_compare_val(uint8_t* const __restrict res_u8,
// todo: aligned reads & writes
+ // interleaved pages
+ constexpr size_t BLOCK_COUNT = PAGE_SIZE / sizeof(int8_t);
+ const size_t size_8p =
+ (size / (N_BLOCKS * BLOCK_COUNT)) * N_BLOCKS * BLOCK_COUNT;
+ for (size_t i = 0; i < size_8p; i += N_BLOCKS * BLOCK_COUNT) {
+ for (size_t p = 0; p < BLOCK_COUNT; p += 64) {
+ for (size_t ip = 0; ip < N_BLOCKS; ip++) {
+ const __m512i v =
+ _mm512_loadu_si512(src + i + p + ip * BLOCK_COUNT);
+ const __mmask64 cmp_mask =
+ _mm512_cmp_epi8_mask(v, target, pred);
+
+ res_u64[(i + p + ip * BLOCK_COUNT) / 64] = cmp_mask;
+
+ _mm_prefetch((const char*)(src + i + p + ip * BLOCK_COUNT) +
+ BLOCKS_PREFETCH_AHEAD * CACHELINE_WIDTH,
+ _MM_HINT_T0);
+ }
+ }
+ }
+
// process big blocks
const size_t size64 = (size / 64) * 64;
- for (size_t i = 0; i < size64; i += 64) {
+ for (size_t i = size_8p; i < size64; i += 64) {
const __m512i v = _mm512_loadu_si512(src + i);
const __mmask64 cmp_mask = _mm512_cmp_epi8_mask(v, target, pred);
@@ -107,9 +133,30 @@ OpCompareValImpl::op_compare_val(
// todo: aligned reads & writes
+ // interleaved pages
+ constexpr size_t BLOCK_COUNT = PAGE_SIZE / sizeof(int16_t);
+ const size_t size_8p =
+ (size / (N_BLOCKS * BLOCK_COUNT)) * N_BLOCKS * BLOCK_COUNT;
+ for (size_t i = 0; i < size_8p; i += N_BLOCKS * BLOCK_COUNT) {
+ for (size_t p = 0; p < BLOCK_COUNT; p += 32) {
+ for (size_t ip = 0; ip < N_BLOCKS; ip++) {
+ const __m512i v =
+ _mm512_loadu_si512(src + i + p + ip * BLOCK_COUNT);
+ const __mmask32 cmp_mask =
+ _mm512_cmp_epi16_mask(v, target, pred);
+
+ res_u32[(i + p + ip * BLOCK_COUNT) / 32] = cmp_mask;
+
+ _mm_prefetch((const char*)(src + i + p + ip * BLOCK_COUNT) +
+ BLOCKS_PREFETCH_AHEAD * CACHELINE_WIDTH,
+ _MM_HINT_T0);
+ }
+ }
+ }
+
// process big blocks
const size_t size32 = (size / 32) * 32;
- for (size_t i = 0; i < size32; i += 32) {
+ for (size_t i = size_8p; i < size32; i += 32) {
const __m512i v = _mm512_loadu_si512(src + i);
const __mmask32 cmp_mask = _mm512_cmp_epi16_mask(v, target, pred);
@@ -149,9 +196,30 @@ OpCompareValImpl::op_compare_val(
// todo: aligned reads & writes
+ // interleaved pages
+ constexpr size_t BLOCK_COUNT = PAGE_SIZE / sizeof(int32_t);
+ const size_t size_8p =
+ (size / (N_BLOCKS * BLOCK_COUNT)) * N_BLOCKS * BLOCK_COUNT;
+ for (size_t i = 0; i < size_8p; i += N_BLOCKS * BLOCK_COUNT) {
+ for (size_t p = 0; p < BLOCK_COUNT; p += 16) {
+ for (size_t ip = 0; ip < N_BLOCKS; ip++) {
+ const __m512i v =
+ _mm512_loadu_si512(src + i + p + ip * BLOCK_COUNT);
+ const __mmask16 cmp_mask =
+ _mm512_cmp_epi32_mask(v, target, pred);
+
+ res_u16[(i + p + ip * BLOCK_COUNT) / 16] = cmp_mask;
+
+ _mm_prefetch((const char*)(src + i + p + ip * BLOCK_COUNT) +
+ BLOCKS_PREFETCH_AHEAD * CACHELINE_WIDTH,
+ _MM_HINT_T0);
+ }
+ }
+ }
+
// process big blocks
const size_t size16 = (size / 16) * 16;
- for (size_t i = 0; i < size16; i += 16) {
+ for (size_t i = size_8p; i < size16; i += 16) {
const __m512i v = _mm512_loadu_si512(src + i);
const __mmask16 cmp_mask = _mm512_cmp_epi32_mask(v, target, pred);
@@ -187,9 +255,30 @@ OpCompareValImpl::op_compare_val(
// todo: aligned reads & writes
+ // interleaved pages
+ constexpr size_t BLOCK_COUNT = PAGE_SIZE / sizeof(int64_t);
+ const size_t size_8p =
+ (size / (N_BLOCKS * BLOCK_COUNT)) * N_BLOCKS * BLOCK_COUNT;
+ for (size_t i = 0; i < size_8p; i += N_BLOCKS * BLOCK_COUNT) {
+ for (size_t p = 0; p < BLOCK_COUNT; p += 8) {
+ for (size_t ip = 0; ip < N_BLOCKS; ip++) {
+ const __m512i v =
+ _mm512_loadu_si512(src + i + p + ip * BLOCK_COUNT);
+ const __mmask8 cmp_mask =
+ _mm512_cmp_epi64_mask(v, target, pred);
+
+ res_u8[(i + p + ip * BLOCK_COUNT) / 8] = cmp_mask;
+
+ _mm_prefetch((const char*)(src + i + p + ip * BLOCK_COUNT) +
+ BLOCKS_PREFETCH_AHEAD * CACHELINE_WIDTH,
+ _MM_HINT_T0);
+ }
+ }
+ }
+
// process big blocks
const size_t size8 = (size / 8) * 8;
- for (size_t i = 0; i < size8; i += 8) {
+ for (size_t i = size_8p; i < size8; i += 8) {
const __m512i v = _mm512_loadu_si512(src + i);
const __mmask8 cmp_mask = _mm512_cmp_epi64_mask(v, target, pred);
@@ -216,9 +305,29 @@ OpCompareValImpl::op_compare_val(uint8_t* const __restrict res_u8,
// todo: aligned reads & writes
+ // interleaved pages
+ constexpr size_t BLOCK_COUNT = PAGE_SIZE / sizeof(float);
+ const size_t size_8p =
+ (size / (N_BLOCKS * BLOCK_COUNT)) * N_BLOCKS * BLOCK_COUNT;
+ for (size_t i = 0; i < size_8p; i += N_BLOCKS * BLOCK_COUNT) {
+ for (size_t p = 0; p < BLOCK_COUNT; p += 16) {
+ for (size_t ip = 0; ip < N_BLOCKS; ip++) {
+ const __m512 v =
+ _mm512_loadu_ps(src + i + p + ip * BLOCK_COUNT);
+ const __mmask16 cmp_mask = _mm512_cmp_ps_mask(v, target, pred);
+
+ res_u16[(i + p + ip * BLOCK_COUNT) / 16] = cmp_mask;
+
+ _mm_prefetch((const char*)(src + i + p + ip * BLOCK_COUNT) +
+ BLOCKS_PREFETCH_AHEAD * CACHELINE_WIDTH,
+ _MM_HINT_T0);
+ }
+ }
+ }
+
// process big blocks
const size_t size16 = (size / 16) * 16;
- for (size_t i = 0; i < size16; i += 16) {
+ for (size_t i = size_8p; i < size16; i += 16) {
const __m512 v = _mm512_loadu_ps(src + i);
const __mmask16 cmp_mask = _mm512_cmp_ps_mask(v, target, pred);
@@ -254,9 +363,29 @@ OpCompareValImpl::op_compare_val(uint8_t* const __restrict res_u8,
// todo: aligned reads & writes
+ // interleaved pages
+ constexpr size_t BLOCK_COUNT = PAGE_SIZE / sizeof(double);
+ const size_t size_8p =
+ (size / (N_BLOCKS * BLOCK_COUNT)) * N_BLOCKS * BLOCK_COUNT;
+ for (size_t i = 0; i < size_8p; i += N_BLOCKS * BLOCK_COUNT) {
+ for (size_t p = 0; p < BLOCK_COUNT; p += 8) {
+ for (size_t ip = 0; ip < N_BLOCKS; ip++) {
+ const __m512d v =
+ _mm512_loadu_pd(src + i + p + ip * BLOCK_COUNT);
+ const __mmask8 cmp_mask = _mm512_cmp_pd_mask(v, target, pred);
+
+ res_u8[(i + p + ip * BLOCK_COUNT) / 8] = cmp_mask;
+
+ _mm_prefetch((const char*)(src + i + p + ip * BLOCK_COUNT) +
+ BLOCKS_PREFETCH_AHEAD * CACHELINE_WIDTH,
+ _MM_HINT_T0);
+ }
+ }
+ }
+
// process big blocks
const size_t size8 = (size / 8) * 8;
- for (size_t i = 0; i < size8; i += 8) {
+ for (size_t i = size_8p; i < size8; i += 8) {
const __m512d v = _mm512_loadu_pd(src + i);
const __mmask8 cmp_mask = _mm512_cmp_pd_mask(v, target, pred);
@@ -792,9 +921,32 @@ OpWithinRangeValImpl::op_within_range_val(
// todo: aligned reads & writes
+ // interleaved pages
+ constexpr size_t BLOCK_COUNT = PAGE_SIZE / sizeof(int8_t);
+ const size_t size_8p =
+ (size / (N_BLOCKS * BLOCK_COUNT)) * N_BLOCKS * BLOCK_COUNT;
+ for (size_t i = 0; i < size_8p; i += N_BLOCKS * BLOCK_COUNT) {
+ for (size_t p = 0; p < BLOCK_COUNT; p += 64) {
+ for (size_t ip = 0; ip < N_BLOCKS; ip++) {
+ const __m512i vv =
+ _mm512_loadu_si512(values + i + p + ip * BLOCK_COUNT);
+ const __mmask64 cmpl_mask =
+ _mm512_cmp_epi8_mask(lower_v, vv, pred_lower);
+ const __mmask64 cmp_mask = _mm512_mask_cmp_epi8_mask(
+ cmpl_mask, vv, upper_v, pred_upper);
+
+ res_u64[(i + p + ip * BLOCK_COUNT) / 64] = cmp_mask;
+
+ _mm_prefetch((const char*)(values + i + p + ip * BLOCK_COUNT) +
+ BLOCKS_PREFETCH_AHEAD * CACHELINE_WIDTH,
+ _MM_HINT_T0);
+ }
+ }
+ }
+
// process big blocks
const size_t size64 = (size / 64) * 64;
- for (size_t i = 0; i < size64; i += 64) {
+ for (size_t i = size_8p; i < size64; i += 64) {
const __m512i vv = _mm512_loadu_si512(values + i);
const __mmask64 cmpl_mask =
_mm512_cmp_epi8_mask(lower_v, vv, pred_lower);
@@ -845,9 +997,32 @@ OpWithinRangeValImpl::op_within_range_val(
// todo: aligned reads & writes
+ // interleaved pages
+ constexpr size_t BLOCK_COUNT = PAGE_SIZE / sizeof(int16_t);
+ const size_t size_8p =
+ (size / (N_BLOCKS * BLOCK_COUNT)) * N_BLOCKS * BLOCK_COUNT;
+ for (size_t i = 0; i < size_8p; i += N_BLOCKS * BLOCK_COUNT) {
+ for (size_t p = 0; p < BLOCK_COUNT; p += 32) {
+ for (size_t ip = 0; ip < N_BLOCKS; ip++) {
+ const __m512i vv =
+ _mm512_loadu_si512(values + i + p + ip * BLOCK_COUNT);
+ const __mmask32 cmpl_mask =
+ _mm512_cmp_epi16_mask(lower_v, vv, pred_lower);
+ const __mmask32 cmp_mask = _mm512_mask_cmp_epi16_mask(
+ cmpl_mask, vv, upper_v, pred_upper);
+
+ res_u32[(i + p + ip * BLOCK_COUNT) / 32] = cmp_mask;
+
+ _mm_prefetch((const char*)(values + i + p + ip * BLOCK_COUNT) +
+ BLOCKS_PREFETCH_AHEAD * CACHELINE_WIDTH,
+ _MM_HINT_T0);
+ }
+ }
+ }
+
// process big blocks
const size_t size32 = (size / 32) * 32;
- for (size_t i = 0; i < size32; i += 32) {
+ for (size_t i = size_8p; i < size32; i += 32) {
const __m512i vv = _mm512_loadu_si512(values + i);
const __mmask32 cmpl_mask =
_mm512_cmp_epi16_mask(lower_v, vv, pred_lower);
@@ -898,9 +1073,32 @@ OpWithinRangeValImpl::op_within_range_val(
// todo: aligned reads & writes
+ // interleaved pages
+ constexpr size_t BLOCK_COUNT = PAGE_SIZE / sizeof(int32_t);
+ const size_t size_8p =
+ (size / (N_BLOCKS * BLOCK_COUNT)) * N_BLOCKS * BLOCK_COUNT;
+ for (size_t i = 0; i < size_8p; i += N_BLOCKS * BLOCK_COUNT) {
+ for (size_t p = 0; p < BLOCK_COUNT; p += 16) {
+ for (size_t ip = 0; ip < N_BLOCKS; ip++) {
+ const __m512i vv =
+ _mm512_loadu_si512(values + i + p + ip * BLOCK_COUNT);
+ const __mmask16 cmpl_mask =
+ _mm512_cmp_epi32_mask(lower_v, vv, pred_lower);
+ const __mmask16 cmp_mask = _mm512_mask_cmp_epi32_mask(
+ cmpl_mask, vv, upper_v, pred_upper);
+
+ res_u16[(i + p + ip * BLOCK_COUNT) / 16] = cmp_mask;
+
+ _mm_prefetch((const char*)(values + i + p + ip * BLOCK_COUNT) +
+ BLOCKS_PREFETCH_AHEAD * CACHELINE_WIDTH,
+ _MM_HINT_T0);
+ }
+ }
+ }
+
// process big blocks
const size_t size16 = (size / 16) * 16;
- for (size_t i = 0; i < size16; i += 16) {
+ for (size_t i = size_8p; i < size16; i += 16) {
const __m512i vv = _mm512_loadu_si512(values + i);
const __mmask16 cmpl_mask =
_mm512_cmp_epi32_mask(lower_v, vv, pred_lower);
@@ -947,9 +1145,32 @@ OpWithinRangeValImpl::op_within_range_val(
// todo: aligned reads & writes
+ // interleaved pages
+ constexpr size_t BLOCK_COUNT = PAGE_SIZE / sizeof(int64_t);
+ const size_t size_8p =
+ (size / (N_BLOCKS * BLOCK_COUNT)) * N_BLOCKS * BLOCK_COUNT;
+ for (size_t i = 0; i < size_8p; i += N_BLOCKS * BLOCK_COUNT) {
+ for (size_t p = 0; p < BLOCK_COUNT; p += 8) {
+ for (size_t ip = 0; ip < N_BLOCKS; ip++) {
+ const __m512i vv =
+ _mm512_loadu_si512(values + i + p + ip * BLOCK_COUNT);
+ const __mmask8 cmpl_mask =
+ _mm512_cmp_epi64_mask(lower_v, vv, pred_lower);
+ const __mmask8 cmp_mask = _mm512_mask_cmp_epi64_mask(
+ cmpl_mask, vv, upper_v, pred_upper);
+
+ res_u8[(i + p + ip * BLOCK_COUNT) / 8] = cmp_mask;
+
+ _mm_prefetch((const char*)(values + i + p + ip * BLOCK_COUNT) +
+ BLOCKS_PREFETCH_AHEAD * CACHELINE_WIDTH,
+ _MM_HINT_T0);
+ }
+ }
+ }
+
// process big blocks
const size_t size8 = (size / 8) * 8;
- for (size_t i = 0; i < size8; i += 8) {
+ for (size_t i = size_8p; i < size8; i += 8) {
const __m512i vv = _mm512_loadu_si512(values + i);
const __mmask8 cmpl_mask =
_mm512_cmp_epi64_mask(lower_v, vv, pred_lower);
@@ -984,9 +1205,32 @@ OpWithinRangeValImpl::op_within_range_val(
// todo: aligned reads & writes
+ // interleaved pages
+ constexpr size_t BLOCK_COUNT = PAGE_SIZE / sizeof(float);
+ const size_t size_8p =
+ (size / (N_BLOCKS * BLOCK_COUNT)) * N_BLOCKS * BLOCK_COUNT;
+ for (size_t i = 0; i < size_8p; i += N_BLOCKS * BLOCK_COUNT) {
+ for (size_t p = 0; p < BLOCK_COUNT; p += 16) {
+ for (size_t ip = 0; ip < N_BLOCKS; ip++) {
+ const __m512 vv =
+ _mm512_loadu_ps(values + i + p + ip * BLOCK_COUNT);
+ const __mmask16 cmpl_mask =
+ _mm512_cmp_ps_mask(lower_v, vv, pred_lower);
+ const __mmask16 cmp_mask =
+ _mm512_mask_cmp_ps_mask(cmpl_mask, vv, upper_v, pred_upper);
+
+ res_u16[(i + p + ip * BLOCK_COUNT) / 16] = cmp_mask;
+
+ _mm_prefetch((const char*)(values + i + p + ip * BLOCK_COUNT) +
+ BLOCKS_PREFETCH_AHEAD * CACHELINE_WIDTH,
+ _MM_HINT_T0);
+ }
+ }
+ }
+
// process big blocks
const size_t size16 = (size / 16) * 16;
- for (size_t i = 0; i < size16; i += 16) {
+ for (size_t i = size_8p; i < size16; i += 16) {
const __m512 vv = _mm512_loadu_ps(values + i);
const __mmask16 cmpl_mask = _mm512_cmp_ps_mask(lower_v, vv, pred_lower);
const __mmask16 cmp_mask =
@@ -1031,9 +1275,32 @@ OpWithinRangeValImpl::op_within_range_val(
// todo: aligned reads & writes
+ // interleaved pages
+ constexpr size_t BLOCK_COUNT = PAGE_SIZE / sizeof(double);
+ const size_t size_8p =
+ (size / (N_BLOCKS * BLOCK_COUNT)) * N_BLOCKS * BLOCK_COUNT;
+ for (size_t i = 0; i < size_8p; i += N_BLOCKS * BLOCK_COUNT) {
+ for (size_t p = 0; p < BLOCK_COUNT; p += 8) {
+ for (size_t ip = 0; ip < N_BLOCKS; ip++) {
+ const __m512d vv =
+ _mm512_loadu_pd(values + i + p + ip * BLOCK_COUNT);
+ const __mmask8 cmpl_mask =
+ _mm512_cmp_pd_mask(lower_v, vv, pred_lower);
+ const __mmask8 cmp_mask =
+ _mm512_mask_cmp_pd_mask(cmpl_mask, vv, upper_v, pred_upper);
+
+ res_u8[(i + p + ip * BLOCK_COUNT) / 8] = cmp_mask;
+
+ _mm_prefetch((const char*)(values + i + p + ip * BLOCK_COUNT) +
+ BLOCKS_PREFETCH_AHEAD * CACHELINE_WIDTH,
+ _MM_HINT_T0);
+ }
+ }
+ }
+
// process big blocks
const size_t size8 = (size / 8) * 8;
- for (size_t i = 0; i < size8; i += 8) {
+ for (size_t i = size_8p; i < size8; i += 8) {
const __m512d vv = _mm512_loadu_pd(values + i);
const __mmask8 cmpl_mask = _mm512_cmp_pd_mask(lower_v, vv, pred_lower);
const __mmask8 cmp_mask =
@@ -1196,9 +1463,40 @@ OpArithCompareImpl::op_arith_compare(
const __m512i right_v = _mm512_set1_epi64(right_operand);
const __m512i value_v = _mm512_set1_epi64(value);
+ // interleaved pages
+ constexpr size_t BLOCK_COUNT = PAGE_SIZE / (sizeof(int8_t));
+ const size_t size_8p =
+ (size / (N_BLOCKS * BLOCK_COUNT)) * N_BLOCKS * BLOCK_COUNT;
+ for (size_t i = 0; i < size_8p; i += N_BLOCKS * BLOCK_COUNT) {
+ for (size_t p = 0; p < BLOCK_COUNT; p += 16) {
+ for (size_t ip = 0; ip < N_BLOCKS; ip++) {
+ const __m128i vs = _mm_loadu_si128(
+ (const __m128i*)(src + i + p + ip * BLOCK_COUNT));
+ const __m512i v0s = _mm512_cvtepi8_epi64(
+ _mm_unpacklo_epi64(vs, _mm_setzero_si128()));
+ const __m512i v1s = _mm512_cvtepi8_epi64(
+ _mm_unpackhi_epi64(vs, _mm_setzero_si128()));
+ const __mmask8 cmp_mask0 =
+ ArithHelperI64::op(v0s, right_v, value_v);
+ const __mmask8 cmp_mask1 =
+ ArithHelperI64::op(v1s, right_v, value_v);
+
+ res_u8[(i + p + ip * BLOCK_COUNT) / 8 + 0] = cmp_mask0;
+ res_u8[(i + p + ip * BLOCK_COUNT) / 8 + 1] = cmp_mask1;
+
+ if (p % CACHELINE_WIDTH == 0) {
+ _mm_prefetch(
+ (const char*)(src + i + p + ip * BLOCK_COUNT) +
+ BLOCKS_PREFETCH_AHEAD * CACHELINE_WIDTH,
+ _MM_HINT_T0);
+ }
+ }
+ }
+ }
+
// process big blocks
const size_t size16 = (size / 16) * 16;
- for (size_t i = 0; i < size16; i += 16) {
+ for (size_t i = size_8p; i < size16; i += 16) {
const __m128i vs = _mm_loadu_si128((const __m128i*)(src + i));
const __m512i v0s = _mm512_cvtepi8_epi64(
_mm_unpacklo_epi64(vs, _mm_setzero_si128()));
@@ -1251,9 +1549,40 @@ OpArithCompareImpl::op_arith_compare(
// todo: aligned reads & writes
+ // interleaved pages
+ constexpr size_t BLOCK_COUNT = PAGE_SIZE / (sizeof(int16_t));
+ const size_t size_8p =
+ (size / (N_BLOCKS * BLOCK_COUNT)) * N_BLOCKS * BLOCK_COUNT;
+ for (size_t i = 0; i < size_8p; i += N_BLOCKS * BLOCK_COUNT) {
+ for (size_t p = 0; p < BLOCK_COUNT; p += 16) {
+ for (size_t ip = 0; ip < N_BLOCKS; ip++) {
+ const __m256i vs = _mm256_loadu_si256(
+ (const __m256i*)(src + i + p + ip * BLOCK_COUNT));
+ const __m512i v0s =
+ _mm512_cvtepi16_epi64(_mm256_extracti128_si256(vs, 0));
+ const __m512i v1s =
+ _mm512_cvtepi16_epi64(_mm256_extracti128_si256(vs, 1));
+ const __mmask8 cmp_mask0 =
+ ArithHelperI64::op(v0s, right_v, value_v);
+ const __mmask8 cmp_mask1 =
+ ArithHelperI64::op(v1s, right_v, value_v);
+
+ res_u8[(i + p + ip * BLOCK_COUNT) / 8 + 0] = cmp_mask0;
+ res_u8[(i + p + ip * BLOCK_COUNT) / 8 + 1] = cmp_mask1;
+
+ if ((2 * p) % CACHELINE_WIDTH == 0) {
+ _mm_prefetch(
+ (const char*)(src + i + p + ip * BLOCK_COUNT) +
+ BLOCKS_PREFETCH_AHEAD * CACHELINE_WIDTH,
+ _MM_HINT_T0);
+ }
+ }
+ }
+ }
+
// process big blocks
const size_t size16 = (size / 16) * 16;
- for (size_t i = 0; i < size16; i += 16) {
+ for (size_t i = size_8p; i < size16; i += 16) {
const __m256i vs = _mm256_loadu_si256((const __m256i*)(src + i));
const __m512i v0s =
_mm512_cvtepi16_epi64(_mm256_extracti128_si256(vs, 0));
@@ -1304,9 +1633,37 @@ OpArithCompareImpl::op_arith_compare(
// todo: aligned reads & writes
+ // interleaved pages
+ constexpr size_t BLOCK_COUNT = PAGE_SIZE / (sizeof(int32_t));
+ const size_t size_8p =
+ (size / (N_BLOCKS * BLOCK_COUNT)) * N_BLOCKS * BLOCK_COUNT;
+ for (size_t i = 0; i < size_8p; i += N_BLOCKS * BLOCK_COUNT) {
+ for (size_t p = 0; p < BLOCK_COUNT; p += 16) {
+ for (size_t ip = 0; ip < N_BLOCKS; ip++) {
+ const __m512i vs = _mm512_loadu_si512(
+ (const __m512i*)(src + i + p + ip * BLOCK_COUNT));
+ const __m512i v0s =
+ _mm512_cvtepi32_epi64(_mm512_extracti64x4_epi64(vs, 0));
+ const __m512i v1s =
+ _mm512_cvtepi32_epi64(_mm512_extracti64x4_epi64(vs, 1));
+ const __mmask8 cmp_mask0 =
+ ArithHelperI64::op(v0s, right_v, value_v);
+ const __mmask8 cmp_mask1 =
+ ArithHelperI64::op(v1s, right_v, value_v);
+
+ res_u8[(i + p + ip * BLOCK_COUNT) / 8 + 0] = cmp_mask0;
+ res_u8[(i + p + ip * BLOCK_COUNT) / 8 + 1] = cmp_mask1;
+
+ _mm_prefetch((const char*)(src + i + p + ip * BLOCK_COUNT) +
+ BLOCKS_PREFETCH_AHEAD * CACHELINE_WIDTH,
+ _MM_HINT_T0);
+ }
+ }
+ }
+
// process big blocks
const size_t size16 = (size / 16) * 16;
- for (size_t i = 0; i < size16; i += 16) {
+ for (size_t i = size_8p; i < size16; i += 16) {
const __m512i vs = _mm512_loadu_si512((const __m512i*)(src + i));
const __m512i v0s =
_mm512_cvtepi32_epi64(_mm512_extracti64x4_epi64(vs, 0));
@@ -1358,9 +1715,30 @@ OpArithCompareImpl::op_arith_compare(
// todo: aligned reads & writes
+ // interleaved pages
+ constexpr size_t BLOCK_COUNT = PAGE_SIZE / (sizeof(int64_t));
+ const size_t size_8p =
+ (size / (N_BLOCKS * BLOCK_COUNT)) * N_BLOCKS * BLOCK_COUNT;
+ for (size_t i = 0; i < size_8p; i += N_BLOCKS * BLOCK_COUNT) {
+ for (size_t p = 0; p < BLOCK_COUNT; p += 8) {
+ for (size_t ip = 0; ip < N_BLOCKS; ip++) {
+ const __m512i v0s = _mm512_loadu_si512(
+ (const __m512i*)(src + i + p + ip * BLOCK_COUNT));
+ const __mmask8 cmp_mask =
+ ArithHelperI64::op(v0s, right_v, value_v);
+
+ res_u8[(i + p + ip * BLOCK_COUNT) / 8] = cmp_mask;
+
+ _mm_prefetch((const char*)(src + i + p + ip * BLOCK_COUNT) +
+ BLOCKS_PREFETCH_AHEAD * CACHELINE_WIDTH,
+ _MM_HINT_T0);
+ }
+ }
+ }
+
// process big blocks
const size_t size8 = (size / 8) * 8;
- for (size_t i = 0; i < size8; i += 8) {
+ for (size_t i = size_8p; i < size8; i += 8) {
const __m512i v0s = _mm512_loadu_si512((const __m512i*)(src + i));
const __mmask8 cmp_mask =
ArithHelperI64::op(v0s, right_v, value_v);
@@ -1394,9 +1772,30 @@ OpArithCompareImpl::op_arith_compare(
// todo: aligned reads & writes
+ // interleaved pages
+ constexpr size_t BLOCK_COUNT = PAGE_SIZE / (sizeof(float));
+ const size_t size_8p =
+ (size / (N_BLOCKS * BLOCK_COUNT)) * N_BLOCKS * BLOCK_COUNT;
+ for (size_t i = 0; i < size_8p; i += N_BLOCKS * BLOCK_COUNT) {
+ for (size_t p = 0; p < BLOCK_COUNT; p += 16) {
+ for (size_t ip = 0; ip < N_BLOCKS; ip++) {
+ const __m512 v0s =
+ _mm512_loadu_ps(src + i + p + ip * BLOCK_COUNT);
+ const __mmask16 cmp_mask =
+ ArithHelperF32::op(v0s, right_v, value_v);
+
+ res_u16[(i + p + ip * BLOCK_COUNT) / 16] = cmp_mask;
+
+ _mm_prefetch((const char*)(src + i + p + ip * BLOCK_COUNT) +
+ BLOCKS_PREFETCH_AHEAD * CACHELINE_WIDTH,
+ _MM_HINT_T0);
+ }
+ }
+ }
+
// process big blocks
const size_t size16 = (size / 16) * 16;
- for (size_t i = 0; i < size16; i += 16) {
+ for (size_t i = size_8p; i < size16; i += 16) {
const __m512 v0s = _mm512_loadu_ps(src + i);
const __mmask16 cmp_mask =
ArithHelperF32::op(v0s, right_v, value_v);
@@ -1437,9 +1836,30 @@ OpArithCompareImpl::op_arith_compare(
// todo: aligned reads & writes
+ // interleaved pages
+ constexpr size_t BLOCK_COUNT = PAGE_SIZE / (sizeof(int64_t));
+ const size_t size_8p =
+ (size / (N_BLOCKS * BLOCK_COUNT)) * N_BLOCKS * BLOCK_COUNT;
+ for (size_t i = 0; i < size_8p; i += N_BLOCKS * BLOCK_COUNT) {
+ for (size_t p = 0; p < BLOCK_COUNT; p += 8) {
+ for (size_t ip = 0; ip < N_BLOCKS; ip++) {
+ const __m512d v0s =
+ _mm512_loadu_pd(src + i + p + ip * BLOCK_COUNT);
+ const __mmask8 cmp_mask =
+ ArithHelperF64::op(v0s, right_v, value_v);
+
+ res_u8[(i + p + ip * BLOCK_COUNT) / 8] = cmp_mask;
+
+ _mm_prefetch((const char*)(src + i + p + ip * BLOCK_COUNT) +
+ BLOCKS_PREFETCH_AHEAD * CACHELINE_WIDTH,
+ _MM_HINT_T0);
+ }
+ }
+ }
+
// process big blocks
const size_t size8 = (size / 8) * 8;
- for (size_t i = 0; i < size8; i += 8) {
+ for (size_t i = size_8p; i < size8; i += 8) {
const __m512d v0s = _mm512_loadu_pd(src + i);
const __mmask8 cmp_mask =
ArithHelperF64::op(v0s, right_v, value_v);
diff --git a/internal/core/src/bitset/detail/platform/x86/instruction_set.cpp b/internal/core/src/bitset/detail/platform/x86/instruction_set.cpp
index 329dc4243cfa5..71a574bf80e74 100644
--- a/internal/core/src/bitset/detail/platform/x86/instruction_set.cpp
+++ b/internal/core/src/bitset/detail/platform/x86/instruction_set.cpp
@@ -90,13 +90,13 @@ InstructionSet::InstructionSet()
}
// load bitset with flags for function 0x80000001
- if (nExIds_ >= (int)0x80000001) {
+ if (nExIds_ >= static_cast(0x80000001)) {
f_81_ECX_ = extdata_[1][2];
f_81_EDX_ = extdata_[1][3];
}
// Interpret CPU brand string if reported
- if (nExIds_ >= (int)0x80000004) {
+ if (nExIds_ >= static_cast(0x80000004)) {
memcpy(brand, extdata_[2].data(), sizeof(cpui));
memcpy(brand + 16, extdata_[3].data(), sizeof(cpui));
memcpy(brand + 32, extdata_[4].data(), sizeof(cpui));
diff --git a/internal/core/src/clustering/CMakeLists.txt b/internal/core/src/clustering/CMakeLists.txt
index 40833d9ef2c30..7331281499596 100644
--- a/internal/core/src/clustering/CMakeLists.txt
+++ b/internal/core/src/clustering/CMakeLists.txt
@@ -9,16 +9,5 @@
# is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
# or implied. See the License for the specific language governing permissions and limitations under the License
-
-set(CLUSTERING_FILES
- analyze_c.cpp
- KmeansClustering.cpp
- )
-
-milvus_add_pkg_config("milvus_clustering")
-add_library(milvus_clustering SHARED ${CLUSTERING_FILES})
-
-# link order matters
-target_link_libraries(milvus_clustering milvus_index)
-
-install(TARGETS milvus_clustering DESTINATION "${CMAKE_INSTALL_LIBDIR}")
+add_source_at_current_directory_recursively()
+add_library(milvus_clustering OBJECT ${SOURCE_FILES})
diff --git a/internal/core/src/clustering/KmeansClustering.h b/internal/core/src/clustering/KmeansClustering.h
index bfb7d0e4a1dcd..500613ea0a0f5 100644
--- a/internal/core/src/clustering/KmeansClustering.h
+++ b/internal/core/src/clustering/KmeansClustering.h
@@ -21,7 +21,6 @@
#include
#include "storage/MemFileManagerImpl.h"
-#include "storage/space.h"
#include "pb/clustering.pb.h"
#include "knowhere/cluster/cluster_factory.h"
diff --git a/internal/core/src/clustering/file_utils.h b/internal/core/src/clustering/file_utils.h
index 097d57e84baa8..f5e8b966c7410 100644
--- a/internal/core/src/clustering/file_utils.h
+++ b/internal/core/src/clustering/file_utils.h
@@ -25,7 +25,6 @@
#include "storage/ChunkManager.h"
#include "storage/DataCodec.h"
#include "storage/Types.h"
-#include "storage/space.h"
namespace milvus::clustering {
diff --git a/internal/core/src/clustering/milvus_clustering.pc.in b/internal/core/src/clustering/milvus_clustering.pc.in
deleted file mode 100644
index d1bbb3d3ba934..0000000000000
--- a/internal/core/src/clustering/milvus_clustering.pc.in
+++ /dev/null
@@ -1,9 +0,0 @@
-libdir=@CMAKE_INSTALL_FULL_LIBDIR@
-includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@
-
-Name: Milvus Clustering
-Description: Clustering modules for Milvus
-Version: @MILVUS_VERSION@
-
-Libs: -L${libdir} -lmilvus_clustering
-Cflags: -I${includedir}
diff --git a/internal/core/src/common/Array.h b/internal/core/src/common/Array.h
index ce2d6255db973..705258c876c94 100644
--- a/internal/core/src/common/Array.h
+++ b/internal/core/src/common/Array.h
@@ -16,6 +16,7 @@
#pragma once
+#include
#include
#include
@@ -246,6 +247,7 @@ class Array {
return T(data_ + offsets_[index], element_length);
}
if constexpr (std::is_same_v || std::is_same_v ||
+ std::is_same_v || std::is_same_v ||
std::is_same_v || std::is_same_v) {
switch (element_type_) {
case DataType::INT8:
diff --git a/internal/core/src/common/CMakeLists.txt b/internal/core/src/common/CMakeLists.txt
index 4330b43f8099f..e1239c4d49142 100644
--- a/internal/core/src/common/CMakeLists.txt
+++ b/internal/core/src/common/CMakeLists.txt
@@ -9,35 +9,5 @@
# is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
# or implied. See the License for the specific language governing permissions and limitations under the License
-milvus_add_pkg_config("milvus_common")
-
-set(COMMON_SRC
- Schema.cpp
- SystemProperty.cpp
- Slice.cpp
- binary_set_c.cpp
- init_c.cpp
- Common.cpp
- RangeSearchHelper.cpp
- Tracer.cpp
- IndexMeta.cpp
- EasyAssert.cpp
- FieldData.cpp
- RegexQuery.cpp
- )
-
-add_library(milvus_common SHARED ${COMMON_SRC})
-
-target_link_libraries(milvus_common
- milvus_bitset
- milvus_config
- milvus_log
- milvus_proto
- yaml-cpp
- boost_bitset_ext
- simdjson
- ${CONAN_LIBS}
- re2
- )
-
-install(TARGETS milvus_common DESTINATION "${CMAKE_INSTALL_LIBDIR}")
+add_source_at_current_directory_recursively()
+add_library(milvus_common OBJECT ${SOURCE_FILES})
diff --git a/internal/core/src/common/Chunk.cpp b/internal/core/src/common/Chunk.cpp
new file mode 100644
index 0000000000000..8e957afd18748
--- /dev/null
+++ b/internal/core/src/common/Chunk.cpp
@@ -0,0 +1,61 @@
+// Copyright (C) 2019-2020 Zilliz. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software distributed under the License
+// is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+// or implied. See the License for the specific language governing permissions and limitations under the License
+
+#include
+#include
+#include "common/Array.h"
+#include "common/Span.h"
+#include "common/Types.h"
+#include "common/Chunk.h"
+
+namespace milvus {
+
+std::vector
+StringChunk::StringViews() const {
+ std::vector ret;
+ for (int i = 0; i < row_nums_ - 1; i++) {
+ ret.emplace_back(data_ + offsets_[i], offsets_[i + 1] - offsets_[i]);
+ }
+ ret.emplace_back(data_ + offsets_[row_nums_ - 1],
+ size_ - MMAP_STRING_PADDING - offsets_[row_nums_ - 1]);
+ return ret;
+}
+
+void
+ArrayChunk::ConstructViews() {
+ views_.reserve(row_nums_);
+
+ for (int i = 0; i < row_nums_; ++i) {
+ auto data_ptr = data_ + offsets_[i];
+ auto next_data_ptr = i == row_nums_ - 1
+ ? data_ + size_ - MMAP_ARRAY_PADDING
+ : data_ + offsets_[i + 1];
+ auto offsets_len = lens_[i] * sizeof(uint64_t);
+ std::vector element_indices = {};
+ if (IsStringDataType(element_type_)) {
+ std::vector tmp(
+ reinterpret_cast(data_ptr),
+ reinterpret_cast(data_ptr + offsets_len));
+ element_indices = std::move(tmp);
+ }
+ views_.emplace_back(data_ptr + offsets_len,
+ next_data_ptr - data_ptr - offsets_len,
+ element_type_,
+ std::move(element_indices));
+ }
+}
+
+SpanBase
+ArrayChunk::Span() const {
+ return SpanBase(views_.data(), views_.size(), sizeof(ArrayView));
+}
+
+} // namespace milvus
diff --git a/internal/core/src/common/Chunk.h b/internal/core/src/common/Chunk.h
new file mode 100644
index 0000000000000..facc0cd4c0408
--- /dev/null
+++ b/internal/core/src/common/Chunk.h
@@ -0,0 +1,148 @@
+// Copyright (C) 2019-2020 Zilliz. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software distributed under the License
+// is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+// or implied. See the License for the specific language governing permissions and limitations under the License
+
+#pragma once
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include "arrow/array/array_base.h"
+#include "arrow/record_batch.h"
+#include "common/Array.h"
+#include "common/ChunkTarget.h"
+#include "common/FieldDataInterface.h"
+#include "common/Json.h"
+#include "common/Span.h"
+#include "knowhere/sparse_utils.h"
+#include "simdjson/common_defs.h"
+#include "sys/mman.h"
+namespace milvus {
+constexpr size_t MMAP_STRING_PADDING = 1;
+constexpr size_t MMAP_ARRAY_PADDING = 1;
+class Chunk {
+ public:
+ Chunk() = default;
+ Chunk(int64_t row_nums, char* data, size_t size)
+ : row_nums_(row_nums), data_(data), size_(size) {
+ }
+ virtual ~Chunk() {
+ munmap(data_, size_);
+ }
+
+ protected:
+ char* data_;
+ int64_t row_nums_;
+ size_t size_;
+};
+
+// for fixed size data, includes fixed size array
+template
+class FixedWidthChunk : public Chunk {
+ public:
+ FixedWidthChunk(int32_t row_nums, int32_t dim, char* data, size_t size)
+ : Chunk(row_nums, data, size), dim_(dim){};
+
+ milvus::SpanBase
+ Span() const {
+ auto null_bitmap_bytes_num = (row_nums_ + 7) / 8;
+ return milvus::SpanBase(
+ data_ + null_bitmap_bytes_num, row_nums_, sizeof(T) * dim_);
+ }
+
+ private:
+ int dim_;
+};
+
+class StringChunk : public Chunk {
+ public:
+ StringChunk() = default;
+ StringChunk(int32_t row_nums, char* data, size_t size)
+ : Chunk(row_nums, data, size) {
+ auto null_bitmap_bytes_num = (row_nums + 7) / 8;
+ offsets_ = reinterpret_cast(data + null_bitmap_bytes_num);
+ }
+
+ std::vector
+ StringViews() const;
+
+ protected:
+ uint64_t* offsets_;
+};
+
+using JSONChunk = StringChunk;
+
+class ArrayChunk : public Chunk {
+ public:
+ ArrayChunk(int32_t row_nums,
+ char* data,
+ size_t size,
+ milvus::DataType element_type)
+ : Chunk(row_nums, data, size), element_type_(element_type) {
+ auto null_bitmap_bytes_num = (row_nums + 7) / 8;
+ offsets_ = reinterpret_cast(data + null_bitmap_bytes_num);
+ lens_ = offsets_ + row_nums;
+ ConstructViews();
+ }
+
+ SpanBase
+ Span() const;
+
+ void
+ ConstructViews();
+
+ private:
+ milvus::DataType element_type_;
+ uint64_t* offsets_;
+ uint64_t* lens_;
+ std::vector views_;
+};
+
+class SparseFloatVectorChunk : public Chunk {
+ public:
+ SparseFloatVectorChunk(int32_t row_nums, char* data, size_t size)
+ : Chunk(row_nums, data, size) {
+ vec_.resize(row_nums);
+ auto null_bitmap_bytes_num = (row_nums + 7) / 8;
+ auto offsets_ptr =
+ reinterpret_cast(data + null_bitmap_bytes_num);
+ for (int i = 0; i < row_nums; i++) {
+ int vec_size = 0;
+ if (i == row_nums - 1) {
+ vec_size = size - offsets_ptr[i];
+ } else {
+ vec_size = offsets_ptr[i + 1] - offsets_ptr[i];
+ }
+
+ vec_[i] = {
+ vec_size / knowhere::sparse::SparseRow::element_size(),
+ (uint8_t*)(data + offsets_ptr[i]),
+ false};
+ }
+ }
+
+ const char*
+ Data() const {
+ return static_cast(static_cast(vec_.data()));
+ }
+
+ // only for test
+ std::vector>&
+ Vec() {
+ return vec_;
+ }
+
+ private:
+ std::vector> vec_;
+};
+} // namespace milvus
\ No newline at end of file
diff --git a/internal/core/src/common/ChunkTarget.cpp b/internal/core/src/common/ChunkTarget.cpp
new file mode 100644
index 0000000000000..abe47dd819f8d
--- /dev/null
+++ b/internal/core/src/common/ChunkTarget.cpp
@@ -0,0 +1,74 @@
+// Copyright (C) 2019-2020 Zilliz. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software distributed under the License
+// is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+// or implied. See the License for the specific language governing permissions and limitations under the License
+
+#include
+#include
+#include "common/EasyAssert.h"
+#include
+
+namespace milvus {
+void
+MemChunkTarget::write(const void* data, size_t size, bool append) {
+ AssertInfo(size + size_ <= cap_, "can not exceed target capacity");
+ std::memcpy(data_ + size_, data, size);
+ size_ += append ? size : 0;
+}
+
+void
+MemChunkTarget::skip(size_t size) {
+ size_ += size;
+}
+
+void
+MemChunkTarget::seek(size_t offset) {
+ size_ = offset;
+}
+
+std::pair
+MemChunkTarget::get() {
+ return {data_, cap_};
+}
+
+size_t
+MemChunkTarget::tell() {
+ return size_;
+}
+
+void
+MmapChunkTarget::write(const void* data, size_t size, bool append) {
+ auto n = file_.Write(data, size);
+ AssertInfo(n != -1, "failed to write data to file");
+ size_ += append ? size : 0;
+}
+
+void
+MmapChunkTarget::skip(size_t size) {
+ file_.Seek(size, SEEK_CUR);
+ size_ += size;
+}
+
+void
+MmapChunkTarget::seek(size_t offset) {
+ file_.Seek(offset_ + offset, SEEK_SET);
+}
+
+std::pair
+MmapChunkTarget::get() {
+ auto m = mmap(
+ nullptr, size_, PROT_READ, MAP_SHARED, file_.Descriptor(), offset_);
+ return {(char*)m, size_};
+}
+
+size_t
+MmapChunkTarget::tell() {
+ return size_;
+}
+} // namespace milvus
\ No newline at end of file
diff --git a/internal/core/src/common/ChunkTarget.h b/internal/core/src/common/ChunkTarget.h
new file mode 100644
index 0000000000000..3419e40cb202a
--- /dev/null
+++ b/internal/core/src/common/ChunkTarget.h
@@ -0,0 +1,96 @@
+// Copyright (C) 2019-2020 Zilliz. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software distributed under the License
+// is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+// or implied. See the License for the specific language governing permissions and limitations under the License
+
+#pragma once
+#include
+#include
+#include
+#include
+#include "common/File.h"
+namespace milvus {
+class ChunkTarget {
+ public:
+ virtual void
+ write(const void* data, size_t size, bool append = true) = 0;
+
+ virtual void
+ skip(size_t size) = 0;
+
+ virtual void
+ seek(size_t offset) = 0;
+
+ virtual std::pair
+ get() = 0;
+
+ virtual ~ChunkTarget() = default;
+
+ virtual size_t
+ tell() = 0;
+};
+
+class MmapChunkTarget : public ChunkTarget {
+ public:
+ MmapChunkTarget(File& file, size_t offset) : file_(file), offset_(offset) {
+ }
+ void
+ write(const void* data, size_t size, bool append = true) override;
+
+ void
+ skip(size_t size) override;
+
+ void
+ seek(size_t offset) override;
+
+ std::pair
+ get() override;
+
+ size_t
+ tell() override;
+
+ private:
+ File& file_;
+ size_t offset_ = 0;
+ size_t size_ = 0;
+};
+
+class MemChunkTarget : public ChunkTarget {
+ public:
+ MemChunkTarget(size_t cap) : cap_(cap) {
+ data_ = reinterpret_cast(mmap(nullptr,
+ cap,
+ PROT_READ | PROT_WRITE,
+ MAP_PRIVATE | MAP_ANON,
+ -1,
+ 0));
+ }
+
+ void
+ write(const void* data, size_t size, bool append = true) override;
+
+ void
+ skip(size_t size) override;
+
+ void
+ seek(size_t offset) override;
+
+ std::pair
+ get() override;
+
+ size_t
+ tell() override;
+
+ private:
+ char* data_; // no need to delete in destructor, will be deleted by Chunk
+ size_t cap_;
+ size_t size_ = 0;
+};
+
+} // namespace milvus
\ No newline at end of file
diff --git a/internal/core/src/common/ChunkWriter.cpp b/internal/core/src/common/ChunkWriter.cpp
new file mode 100644
index 0000000000000..52b339feb2a23
--- /dev/null
+++ b/internal/core/src/common/ChunkWriter.cpp
@@ -0,0 +1,362 @@
+// Copyright (C) 2019-2020 Zilliz. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software distributed under the License
+// is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+// or implied. See the License for the specific language governing permissions and limitations under the License
+
+#include "common/ChunkWriter.h"
+#include
+#include
+#include
+#include
+#include "arrow/array/array_binary.h"
+#include "arrow/array/array_primitive.h"
+#include "arrow/record_batch.h"
+#include "common/Chunk.h"
+#include "common/EasyAssert.h"
+#include "common/FieldDataInterface.h"
+#include "common/Types.h"
+#include "common/VectorTrait.h"
+#include "simdjson/common_defs.h"
+#include "simdjson/padded_string.h"
+namespace milvus {
+
+void
+StringChunkWriter::write(std::shared_ptr data) {
+ auto size = 0;
+ std::vector strs;
+ std::vector> null_bitmaps;
+ for (auto batch : *data) {
+ auto data = batch.ValueOrDie()->column(0);
+ auto array = std::dynamic_pointer_cast(data);
+ for (int i = 0; i < array->length(); i++) {
+ auto str = array->GetView(i);
+ strs.push_back(str);
+ size += str.size();
+ }
+ auto null_bitmap_n = (data->length() + 7) / 8;
+ null_bitmaps.emplace_back(data->null_bitmap_data(), null_bitmap_n);
+ size += null_bitmap_n;
+ row_nums_ += array->length();
+ }
+ size += sizeof(uint64_t) * row_nums_ + MMAP_STRING_PADDING;
+ if (file_) {
+ target_ = std::make_shared(*file_, file_offset_);
+ } else {
+ target_ = std::make_shared(size);
+ }
+
+ // chunk layout: null bitmap, offset1, offset2, ..., offsetn, str1, str2, ..., strn, padding
+ // write null bitmaps
+ for (auto [data, size] : null_bitmaps) {
+ if (data == nullptr) {
+ std::vector null_bitmap(size, 0xff);
+ target_->write(null_bitmap.data(), size);
+ } else {
+ target_->write(data, size);
+ }
+ }
+
+ // write data
+ offsets_pos_ = target_->tell();
+ target_->skip(sizeof(uint64_t) * row_nums_);
+
+ for (auto str : strs) {
+ offsets_.push_back(target_->tell());
+ target_->write(str.data(), str.size());
+ }
+}
+
+std::shared_ptr
+StringChunkWriter::finish() {
+ // write padding, maybe not needed anymore
+ // FIXME
+ char padding[MMAP_STRING_PADDING];
+ target_->write(padding, MMAP_STRING_PADDING);
+
+ // seek back to write offsets
+ target_->seek(offsets_pos_);
+ target_->write(offsets_.data(), offsets_.size() * sizeof(uint64_t));
+ auto [data, size] = target_->get();
+ return std::make_shared(row_nums_, data, size);
+}
+
+void
+JSONChunkWriter::write(std::shared_ptr data) {
+ auto size = 0;
+
+ std::vector jsons;
+ std::vector> null_bitmaps;
+ for (auto batch : *data) {
+ auto data = batch.ValueOrDie()->column(0);
+ auto array = std::dynamic_pointer_cast(data);
+ for (int i = 0; i < array->length(); i++) {
+ auto str = array->GetView(i);
+ auto json = Json(simdjson::padded_string(str));
+ size += json.data().size();
+ jsons.push_back(std::move(json));
+ }
+ AssertInfo(data->length() % 8 == 0,
+ "String length should be multiple of 8");
+ auto null_bitmap_n = (data->length() + 7) / 8;
+ null_bitmaps.emplace_back(data->null_bitmap_data(), null_bitmap_n);
+ size += null_bitmap_n;
+ row_nums_ += array->length();
+ }
+ size += sizeof(uint64_t) * row_nums_ + simdjson::SIMDJSON_PADDING;
+ if (file_) {
+ target_ = std::make_shared(*file_, file_offset_);
+ } else {
+ target_ = std::make_shared(size);
+ }
+
+ // chunk layout: null bitmaps, offset1, offset2, ... ,json1, json2, ..., jsonn
+ // write null bitmaps
+ for (auto [data, size] : null_bitmaps) {
+ if (data == nullptr) {
+ std::vector null_bitmap(size, 0xff);
+ target_->write(null_bitmap.data(), size);
+ } else {
+ target_->write(data, size);
+ }
+ }
+
+ offsets_pos_ = target_->tell();
+ target_->skip(sizeof(uint64_t) * row_nums_);
+
+ // write data
+ for (auto json : jsons) {
+ offsets_.push_back(target_->tell());
+ target_->write(json.data().data(), json.data().size());
+ }
+}
+
+std::shared_ptr
+JSONChunkWriter::finish() {
+ char padding[simdjson::SIMDJSON_PADDING];
+ target_->write(padding, simdjson::SIMDJSON_PADDING);
+
+ // write offsets and padding
+ target_->seek(offsets_pos_);
+ target_->write(offsets_.data(), offsets_.size() * sizeof(uint64_t));
+ auto [data, size] = target_->get();
+ return std::make_shared(row_nums_, data, size);
+}
+
+void
+ArrayChunkWriter::write(std::shared_ptr data) {
+ auto size = 0;
+
+ std::vector arrays;
+ std::vector> null_bitmaps;
+ for (auto batch : *data) {
+ auto data = batch.ValueOrDie()->column(0);
+ auto array = std::dynamic_pointer_cast(data);
+ for (int i = 0; i < array->length(); i++) {
+ auto str = array->GetView(i);
+ ScalarArray scalar_array;
+ scalar_array.ParseFromArray(str.data(), str.size());
+ auto arr = Array(scalar_array);
+ size += arr.byte_size();
+ arrays.push_back(std::move(arr));
+ // element offsets size
+ size += sizeof(uint64_t) * arr.length();
+ }
+ row_nums_ += array->length();
+ auto null_bitmap_n = (data->length() + 7) / 8;
+ null_bitmaps.emplace_back(data->null_bitmap_data(), null_bitmap_n);
+ size += null_bitmap_n;
+ }
+
+ auto is_string = IsStringDataType(element_type_);
+ // offsets + lens
+ size += is_string ? sizeof(uint64_t) * row_nums_ * 2 + MMAP_ARRAY_PADDING
+ : sizeof(uint64_t) * row_nums_ + MMAP_ARRAY_PADDING;
+ if (file_) {
+ target_ = std::make_shared(*file_, file_offset_);
+ } else {
+ target_ = std::make_shared(size);
+ }
+
+ // chunk layout: nullbitmaps, offsets, elem_off1, elem_off2, .. data1, data2, ..., datan, padding
+ for (auto [data, size] : null_bitmaps) {
+ if (data == nullptr) {
+ std::vector null_bitmap(size, 0xff);
+ target_->write(null_bitmap.data(), size);
+ } else {
+ target_->write(data, size);
+ }
+ }
+
+ offsets_pos_ = target_->tell();
+ target_->skip(sizeof(uint64_t) * row_nums_ * 2);
+ for (auto& arr : arrays) {
+ // write elements offsets
+ offsets_.push_back(target_->tell());
+ if (is_string) {
+ target_->write(arr.get_offsets().data(),
+ arr.get_offsets().size() * sizeof(uint64_t));
+ }
+ lens_.push_back(arr.length());
+ target_->write(arr.data(), arr.byte_size());
+ }
+}
+
+std::shared_ptr
+ArrayChunkWriter::finish() {
+ char padding[MMAP_ARRAY_PADDING];
+ target_->write(padding, MMAP_ARRAY_PADDING);
+
+ // write offsets and lens
+ target_->seek(offsets_pos_);
+ for (size_t i = 0; i < offsets_.size(); i++) {
+ target_->write(&offsets_[i], sizeof(uint64_t));
+ target_->write(&lens_[i], sizeof(uint64_t));
+ }
+ auto [data, size] = target_->get();
+ return std::make_shared(row_nums_, data, size, element_type_);
+}
+
+void
+SparseFloatVectorChunkWriter::write(
+ std::shared_ptr data) {
+ auto size = 0;
+ std::vector strs;
+ std::vector> null_bitmaps;
+ for (auto batch : *data) {
+ auto data = batch.ValueOrDie()->column(0);
+ auto array = std::dynamic_pointer_cast(data);
+ for (int i = 0; i < array->length(); i++) {
+ auto str = array->GetView(i);
+ strs.push_back(str);
+ size += str.size();
+ }
+ auto null_bitmap_n = (data->length() + 7) / 8;
+ null_bitmaps.emplace_back(data->null_bitmap_data(), null_bitmap_n);
+ size += null_bitmap_n;
+ row_nums_ += array->length();
+ }
+ size += sizeof(uint64_t) * row_nums_;
+ if (file_) {
+ target_ = std::make_shared(*file_, file_offset_);
+ } else {
+ target_ = std::make_shared(size);
+ }
+
+ // chunk layout: null bitmap, offset1, offset2, ..., offsetn, str1, str2, ..., strn
+ // write null bitmaps
+ for (auto [data, size] : null_bitmaps) {
+ if (data == nullptr) {
+ std::vector null_bitmap(size, 0xff);
+ target_->write(null_bitmap.data(), size);
+ } else {
+ target_->write(data, size);
+ }
+ }
+
+ // write data
+ offsets_pos_ = target_->tell();
+ target_->skip(sizeof(uint64_t) * row_nums_);
+
+ for (auto str : strs) {
+ offsets_.push_back(target_->tell());
+ target_->write(str.data(), str.size());
+ }
+}
+
+std::shared_ptr
+SparseFloatVectorChunkWriter::finish() {
+ // seek back to write offsets
+ target_->seek(offsets_pos_);
+ target_->write(offsets_.data(), offsets_.size() * sizeof(uint64_t));
+ auto [data, size] = target_->get();
+ return std::make_shared(row_nums_, data, size);
+}
+
+std::shared_ptr
+create_chunk(const FieldMeta& field_meta,
+ int dim,
+ std::shared_ptr r) {
+ std::shared_ptr w;
+
+ switch (field_meta.get_data_type()) {
+ case milvus::DataType::BOOL: {
+ w = std::make_shared>(dim);
+ break;
+ }
+ case milvus::DataType::INT8: {
+ w = std::make_shared>(dim);
+ break;
+ }
+ case milvus::DataType::INT16: {
+ w = std::make_shared>(dim);
+ break;
+ }
+ case milvus::DataType::INT32: {
+ w = std::make_shared>(dim);
+ break;
+ }
+ case milvus::DataType::INT64: {
+ w = std::make_shared>(dim);
+ break;
+ }
+ case milvus::DataType::FLOAT: {
+ w = std::make_shared>(dim);
+ break;
+ }
+ case milvus::DataType::DOUBLE: {
+ w = std::make_shared>(dim);
+ break;
+ }
+ case milvus::DataType::VECTOR_FLOAT: {
+ w = std::make_shared<
+ ChunkWriter>(dim);
+ break;
+ }
+ case milvus::DataType::VECTOR_BINARY: {
+ w = std::make_shared<
+ ChunkWriter>(dim / 8);
+ break;
+ }
+ case milvus::DataType::VECTOR_FLOAT16: {
+ w = std::make_shared<
+ ChunkWriter>(dim);
+ break;
+ }
+ case milvus::DataType::VECTOR_BFLOAT16: {
+ w = std::make_shared<
+ ChunkWriter>(dim);
+ break;
+ }
+ case milvus::DataType::VARCHAR:
+ case milvus::DataType::STRING: {
+ w = std::make_shared();
+ break;
+ }
+ case milvus::DataType::JSON: {
+ w = std::make_shared();
+ break;
+ }
+ case milvus::DataType::ARRAY: {
+ w = std::make_shared(
+ field_meta.get_element_type());
+ break;
+ }
+ case milvus::DataType::VECTOR_SPARSE_FLOAT: {
+ w = std::make_shared();
+ break;
+ }
+ default:
+ PanicInfo(Unsupported, "Unsupported data type");
+ }
+
+ w->write(r);
+ return w->finish();
+}
+
+} // namespace milvus
\ No newline at end of file
diff --git a/internal/core/src/common/ChunkWriter.h b/internal/core/src/common/ChunkWriter.h
new file mode 100644
index 0000000000000..a16b9bae47448
--- /dev/null
+++ b/internal/core/src/common/ChunkWriter.h
@@ -0,0 +1,239 @@
+// Copyright (C) 2019-2020 Zilliz. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software distributed under the License
+// is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+// or implied. See the License for the specific language governing permissions and limitations under the License
+
+#pragma once
+#include
+#include
+#include
+#include
+#include
+#include "arrow/array/array_primitive.h"
+#include "common/ChunkTarget.h"
+#include "arrow/record_batch.h"
+#include "common/Chunk.h"
+#include "common/EasyAssert.h"
+#include "common/FieldDataInterface.h"
+namespace milvus {
+
+class ChunkWriterBase {
+ public:
+ ChunkWriterBase() = default;
+
+ ChunkWriterBase(File& file, size_t offset)
+ : file_(&file), file_offset_(offset) {
+ }
+
+ virtual void
+ write(std::shared_ptr data) = 0;
+
+ virtual std::shared_ptr
+ finish() = 0;
+
+ std::pair
+ get_data() {
+ return target_->get();
+ }
+
+ protected:
+ int row_nums_ = 0;
+ File* file_ = nullptr;
+ size_t file_offset_ = 0;
+ std::shared_ptr target_;
+};
+
+template
+class ChunkWriter : public ChunkWriterBase {
+ public:
+ ChunkWriter(int dim) : dim_(dim) {
+ }
+
+ ChunkWriter(int dim, File& file, size_t offset)
+ : ChunkWriterBase(file, offset), dim_(dim){};
+
+ void
+ write(std::shared_ptr data) override {
+ auto size = 0;
+ auto row_nums = 0;
+
+ auto batch_vec = data->ToRecordBatches().ValueOrDie();
+
+ for (auto batch : batch_vec) {
+ row_nums += batch->num_rows();
+ auto data = batch->column(0);
+ auto array = std::dynamic_pointer_cast(data);
+ auto null_bitmap_n = (data->length() + 7) / 8;
+ size += null_bitmap_n + array->length() * dim_ * sizeof(T);
+ }
+
+ row_nums_ = row_nums;
+ if (file_) {
+ target_ = std::make_shared(*file_, file_offset_);
+ } else {
+ target_ = std::make_shared(size);
+ }
+
+ // chunk layout: nullbitmap, data1, data2, ..., datan
+ for (auto batch : batch_vec) {
+ auto data = batch->column(0);
+ auto null_bitmap = data->null_bitmap_data();
+ auto null_bitmap_n = (data->length() + 7) / 8;
+ if (null_bitmap) {
+ target_->write(null_bitmap, null_bitmap_n);
+ } else {
+ std::vector null_bitmap(null_bitmap_n, 0xff);
+ target_->write(null_bitmap.data(), null_bitmap_n);
+ }
+ }
+
+ for (auto batch : batch_vec) {
+ auto data = batch->column(0);
+ auto array = std::dynamic_pointer_cast(data);
+ auto data_ptr = array->raw_values();
+ target_->write(data_ptr, array->length() * dim_ * sizeof(T));
+ }
+ }
+
+ std::shared_ptr
+ finish() override {
+ auto [data, size] = target_->get();
+ return std::make_shared>(
+ row_nums_, dim_, data, size);
+ }
+
+ private:
+ int dim_;
+};
+
+template <>
+inline void
+ChunkWriter::write(
+ std::shared_ptr data) {
+ auto size = 0;
+ auto row_nums = 0;
+ auto batch_vec = data->ToRecordBatches().ValueOrDie();
+
+ for (auto batch : batch_vec) {
+ row_nums += batch->num_rows();
+ auto data = batch->column(0);
+ auto array = std::dynamic_pointer_cast(data);
+ size += array->length() * dim_;
+ size += (data->length() + 7) / 8;
+ }
+ row_nums_ = row_nums;
+ if (file_) {
+ target_ = std::make_shared(*file_, file_offset_);
+ } else {
+ target_ = std::make_shared(size);
+ }
+ // chunk layout: nullbitmap, data1, data2, ..., datan
+ for (auto batch : batch_vec) {
+ auto data = batch->column(0);
+ auto null_bitmap = data->null_bitmap_data();
+ auto null_bitmap_n = (data->length() + 7) / 8;
+ if (null_bitmap) {
+ target_->write(null_bitmap, null_bitmap_n);
+ } else {
+ std::vector null_bitmap(null_bitmap_n, 0xff);
+ target_->write(null_bitmap.data(), null_bitmap_n);
+ }
+ }
+
+ for (auto batch : batch_vec) {
+ auto data = batch->column(0);
+ auto array = std::dynamic_pointer_cast(data);
+ for (int i = 0; i < array->length(); i++) {
+ auto value = array->Value(i);
+ target_->write(&value, sizeof(bool));
+ }
+ }
+}
+
+class StringChunkWriter : public ChunkWriterBase {
+ public:
+ using ChunkWriterBase::ChunkWriterBase;
+
+ void
+ write(std::shared_ptr data) override;
+
+ std::shared_ptr
+ finish() override;
+
+ protected:
+ std::vector offsets_;
+ size_t offsets_pos_ = 0;
+};
+
+class JSONChunkWriter : public ChunkWriterBase {
+ public:
+ using ChunkWriterBase::ChunkWriterBase;
+
+ void
+ write(std::shared_ptr data) override;
+
+ std::shared_ptr
+ finish() override;
+
+ private:
+ std::vector offsets_;
+ size_t offsets_pos_ = 0;
+};
+
+class ArrayChunkWriter : public ChunkWriterBase {
+ public:
+ ArrayChunkWriter(const milvus::DataType element_type)
+ : element_type_(element_type) {
+ }
+ ArrayChunkWriter(const milvus::DataType element_type,
+ File& file,
+ size_t offset)
+ : ChunkWriterBase(file, offset), element_type_(element_type) {
+ }
+
+ void
+ write(std::shared_ptr data) override;
+
+ std::shared_ptr
+ finish() override;
+
+ private:
+ const milvus::DataType element_type_;
+ std::vector offsets_;
+ std::vector lens_;
+ size_t offsets_pos_;
+};
+
+class SparseFloatVectorChunkWriter : public ChunkWriterBase {
+ public:
+ using ChunkWriterBase::ChunkWriterBase;
+
+ void
+ write(std::shared_ptr data) override;
+
+ std::shared_ptr
+ finish() override;
+
+ private:
+ uint64_t offsets_pos_ = 0;
+ std::vector offsets_;
+};
+
+std::shared_ptr
+create_chunk(const FieldMeta& field_meta,
+ int dim,
+ std::shared_ptr r);
+
+std::shared_ptr
+create_chunk(const FieldMeta& field_meta,
+ int dim,
+ File& file,
+ size_t file_offset,
+ std::shared_ptr r);
+} // namespace milvus
\ No newline at end of file
diff --git a/internal/core/src/common/Consts.h b/internal/core/src/common/Consts.h
index 5ccf8e8b4ee7c..662a2d28cd1ad 100644
--- a/internal/core/src/common/Consts.h
+++ b/internal/core/src/common/Consts.h
@@ -45,6 +45,8 @@ const char OFFSET_MAPPING_NAME[] = "offset_mapping";
const char NUM_CLUSTERS[] = "num_clusters";
const char KMEANS_CLUSTER[] = "KMEANS";
const char VEC_OPT_FIELDS[] = "opt_fields";
+const char PAGE_RETAIN_ORDER[] = "page_retain_order";
+const char TEXT_LOG_ROOT_PATH[] = "text_log";
const char DEFAULT_PLANNODE_ID[] = "0";
const char DEAFULT_QUERY_ID[] = "0";
@@ -69,3 +71,5 @@ const int64_t DEFAULT_MAX_OUTPUT_SIZE = 67108864; // bytes, 64MB
const int64_t DEFAULT_CHUNK_MANAGER_REQUEST_TIMEOUT_MS = 10000;
const int64_t DEFAULT_BITMAP_INDEX_CARDINALITY_BOUND = 500;
+
+const size_t MARISA_NULL_KEY_ID = -1;
diff --git a/internal/core/src/common/EasyAssert.h b/internal/core/src/common/EasyAssert.h
index e101301639f2e..8458d17e019f9 100644
--- a/internal/core/src/common/EasyAssert.h
+++ b/internal/core/src/common/EasyAssert.h
@@ -130,7 +130,7 @@ FailureCStatus(const std::exception* ex) {
#define AssertInfo(expr, info, args...) \
do { \
- auto _expr_res = bool(expr); \
+ auto _expr_res = static_cast(expr); \
/* call func only when needed */ \
if (!_expr_res) { \
milvus::impl::EasyAssertInfo(_expr_res, \
diff --git a/internal/core/src/common/FieldData.cpp b/internal/core/src/common/FieldData.cpp
index bd913d6541567..f64e677d9a036 100644
--- a/internal/core/src/common/FieldData.cpp
+++ b/internal/core/src/common/FieldData.cpp
@@ -69,8 +69,8 @@ FieldDataImpl::FillFieldData(
ssize_t byte_count = (element_count + 7) / 8;
// Note: if 'nullable == true` and valid_data is nullptr
// means null_count == 0, will fill it with 0xFF
- if (valid_data == nullptr) {
- valid_data_.resize(byte_count, 0xFF);
+ if (!valid_data) {
+ valid_data_.assign(byte_count, 0xFF);
} else {
std::copy_n(valid_data, byte_count, valid_data_.data());
}
diff --git a/internal/core/src/common/FieldDataInterface.h b/internal/core/src/common/FieldDataInterface.h
index 2fab8b8394193..926a1bb16e3d9 100644
--- a/internal/core/src/common/FieldDataInterface.h
+++ b/internal/core/src/common/FieldDataInterface.h
@@ -124,6 +124,175 @@ class FieldDataBase {
const bool nullable_;
};
+template
+class FieldBitsetImpl : public FieldDataBase {
+ public:
+ FieldBitsetImpl() = delete;
+ FieldBitsetImpl(FieldBitsetImpl&&) = delete;
+ FieldBitsetImpl(const FieldBitsetImpl&) = delete;
+
+ FieldBitsetImpl&
+ operator=(FieldBitsetImpl&&) = delete;
+ FieldBitsetImpl&
+ operator=(const FieldBitsetImpl&) = delete;
+
+ explicit FieldBitsetImpl(DataType data_type, TargetBitmap&& bitmap)
+ : FieldDataBase(data_type, false), length_(bitmap.size()) {
+ data_ = std::move(bitmap).into();
+ cap_ = data_.size() * sizeof(Type) * 8;
+ Assert(cap_ >= length_);
+ }
+
+ // FillFieldData used for read and write with storage,
+ // no need to implement for bitset which used in runtime process.
+ void
+ FillFieldData(const void* source, ssize_t element_count) override {
+ PanicInfo(NotImplemented,
+ "FillFieldData(const void* source, ssize_t element_count)"
+ "not implemented for bitset");
+ }
+
+ void
+ FillFieldData(const void* field_data,
+ const uint8_t* valid_data,
+ ssize_t element_count) override {
+ PanicInfo(NotImplemented,
+ "FillFieldData(const void* field_data, "
+ "const uint8_t* valid_data, ssize_t element_count)"
+ "not implemented for bitset");
+ }
+
+ void
+ FillFieldData(const std::shared_ptr array) override {
+ PanicInfo(NotImplemented,
+ "FillFieldData(const std::shared_ptr& array) "
+ "not implemented for bitset");
+ }
+
+ virtual void
+ FillFieldData(const std::shared_ptr& array) {
+ PanicInfo(NotImplemented,
+ "FillFieldData(const std::shared_ptr& "
+ "array) not implemented for bitset");
+ }
+
+ virtual void
+ FillFieldData(const std::shared_ptr& array) {
+ PanicInfo(NotImplemented,
+ "FillFieldData(const std::shared_ptr& "
+ "array) not implemented for bitset");
+ }
+
+ std::string
+ GetName() const {
+ return "FieldBitsetImpl";
+ }
+
+ void*
+ Data() override {
+ return data_.data();
+ }
+
+ uint8_t*
+ ValidData() override {
+ PanicInfo(NotImplemented, "ValidData() not implemented for bitset");
+ }
+
+ const void*
+ RawValue(ssize_t offset) const override {
+ PanicInfo(NotImplemented,
+ "RawValue(ssize_t offset) not implemented for bitset");
+ }
+
+ int64_t
+ Size() const override {
+ return DataSize() + ValidDataSize();
+ }
+
+ int64_t
+ DataSize() const override {
+ return sizeof(Type) * get_num_rows();
+ }
+
+ int64_t
+ DataSize(ssize_t offset) const override {
+ return sizeof(Type);
+ }
+
+ int64_t
+ ValidDataSize() const override {
+ return 0;
+ }
+
+ size_t
+ Length() const override {
+ return get_length();
+ }
+
+ bool
+ IsFull() const override {
+ auto cap_num_rows = get_num_rows();
+ auto filled_num_rows = get_length();
+ return cap_num_rows == filled_num_rows;
+ }
+
+ bool
+ IsNullable() const override {
+ return false;
+ }
+
+ void
+ Reserve(size_t cap) override {
+ std::lock_guard lck(cap_mutex_);
+ AssertInfo(cap % (8 * sizeof(Type)) == 0,
+ "Reverse bitset size must be a multiple of {}",
+ 8 * sizeof(Type));
+ if (cap > cap_) {
+ data_.resize(cap / (8 * sizeof(Type)));
+ cap_ = cap;
+ }
+ }
+
+ public:
+ int64_t
+ get_num_rows() const override {
+ std::shared_lock lck(cap_mutex_);
+ return cap_;
+ }
+
+ size_t
+ get_length() const {
+ std::shared_lock lck(length_mutex_);
+ return length_;
+ }
+
+ int64_t
+ get_dim() const override {
+ return 1;
+ }
+
+ int64_t
+ get_null_count() const override {
+ PanicInfo(NotImplemented,
+ "get_null_count() not implemented for bitset");
+ }
+
+ bool
+ is_valid(ssize_t offset) const override {
+ PanicInfo(NotImplemented,
+ "is_valid(ssize_t offset) not implemented for bitset");
+ }
+
+ private:
+ FixedVector data_{};
+ // capacity that data_ can store
+ int64_t cap_;
+ mutable std::shared_mutex cap_mutex_;
+ // number of actual elements in data_
+ size_t length_{};
+ mutable std::shared_mutex length_mutex_;
+};
+
template
class FieldDataImpl : public FieldDataBase {
public:
@@ -159,8 +328,8 @@ class FieldDataImpl : public FieldDataBase {
: FieldDataBase(type, nullable), dim_(is_type_entire_row ? 1 : dim) {
AssertInfo(!nullable, "need to fill valid_data when nullable is true");
data_ = std::move(data);
- Assert(data.size() % dim == 0);
- num_rows_ = data.size() / dim;
+ Assert(data_.size() % dim == 0);
+ num_rows_ = data_.size() / dim;
}
explicit FieldDataImpl(size_t dim,
@@ -173,8 +342,8 @@ class FieldDataImpl : public FieldDataBase {
"no need to fill valid_data when nullable is false");
data_ = std::move(data);
valid_data_ = std::move(valid_data);
- Assert(data.size() % dim == 0);
- num_rows_ = data.size() / dim;
+ Assert(data_.size() % dim == 0);
+ num_rows_ = data_.size() / dim;
}
void
@@ -476,7 +645,7 @@ class FieldDataJsonImpl : public FieldDataImpl {
if (IsNullable()) {
auto valid_data = array->null_bitmap_data();
if (valid_data == nullptr) {
- valid_data_.resize((n + 7) / 8, 0xFF);
+ valid_data_.assign((n + 7) / 8, 0xFF);
} else {
std::copy_n(valid_data, (n + 7) / 8, valid_data_.data());
}
diff --git a/internal/core/src/common/FieldMeta.cpp b/internal/core/src/common/FieldMeta.cpp
new file mode 100644
index 0000000000000..9b6056bc46e0a
--- /dev/null
+++ b/internal/core/src/common/FieldMeta.cpp
@@ -0,0 +1,131 @@
+// Copyright (C) 2019-2020 Zilliz. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software distributed under the License
+// is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+// or implied. See the License for the specific language governing permissions and limitations under the License
+
+#include "common/FieldMeta.h"
+#include "common/SystemProperty.h"
+#include "common/protobuf_utils.h"
+
+#include
+
+#include "Consts.h"
+
+namespace milvus {
+TokenizerParams
+ParseTokenizerParams(const TypeParams& params) {
+ auto iter = params.find("analyzer_params");
+ if (iter == params.end()) {
+ return {};
+ }
+ nlohmann::json j = nlohmann::json::parse(iter->second);
+ std::map ret;
+ for (const auto& [k, v] : j.items()) {
+ try {
+ ret[k] = v.get();
+ } catch (std::exception& e) {
+ ret[k] = v.dump();
+ }
+ }
+ return ret;
+}
+
+bool
+FieldMeta::enable_match() const {
+ if (!IsStringDataType(type_)) {
+ return false;
+ }
+ if (!string_info_.has_value()) {
+ return false;
+ }
+ return string_info_->enable_match;
+}
+
+TokenizerParams
+FieldMeta::get_tokenizer_params() const {
+ Assert(enable_match());
+ auto params = string_info_->params;
+ return ParseTokenizerParams(params);
+}
+
+FieldMeta
+FieldMeta::ParseFrom(const milvus::proto::schema::FieldSchema& schema_proto) {
+ auto field_id = FieldId(schema_proto.fieldid());
+ auto name = FieldName(schema_proto.name());
+ auto nullable = schema_proto.nullable();
+ if (field_id.get() < 100) {
+ // system field id
+ auto is_system =
+ SystemProperty::Instance().SystemFieldVerify(name, field_id);
+ AssertInfo(is_system,
+ "invalid system type: name(" + name.get() + "), id(" +
+ std::to_string(field_id.get()) + ")");
+ }
+
+ auto data_type = DataType(schema_proto.data_type());
+
+ if (IsVectorDataType(data_type)) {
+ auto type_map = RepeatedKeyValToMap(schema_proto.type_params());
+ auto index_map = RepeatedKeyValToMap(schema_proto.index_params());
+
+ int64_t dim = 0;
+ if (!IsSparseFloatVectorDataType(data_type)) {
+ AssertInfo(type_map.count("dim"), "dim not found");
+ dim = boost::lexical_cast(type_map.at("dim"));
+ }
+ if (!index_map.count("metric_type")) {
+ return FieldMeta{
+ name, field_id, data_type, dim, std::nullopt, false};
+ }
+ auto metric_type = index_map.at("metric_type");
+ return FieldMeta{name, field_id, data_type, dim, metric_type, false};
+ }
+
+ if (IsStringDataType(data_type)) {
+ auto type_map = RepeatedKeyValToMap(schema_proto.type_params());
+ AssertInfo(type_map.count(MAX_LENGTH), "max_length not found");
+ auto max_len = boost::lexical_cast(type_map.at(MAX_LENGTH));
+ bool enable_match = false;
+ if (type_map.count("enable_match")) {
+ auto param_str = type_map.at("enable_match");
+ std::transform(param_str.begin(),
+ param_str.end(),
+ param_str.begin(),
+ ::tolower);
+
+ auto bool_cast = [](const std::string& arg) -> bool {
+ std::istringstream ss(arg);
+ bool b;
+ ss >> std::boolalpha >> b;
+ return b;
+ };
+
+ enable_match = bool_cast(param_str);
+ }
+ return FieldMeta{name,
+ field_id,
+ data_type,
+ max_len,
+ nullable,
+ enable_match,
+ type_map};
+ }
+
+ if (IsArrayDataType(data_type)) {
+ return FieldMeta{name,
+ field_id,
+ data_type,
+ DataType(schema_proto.element_type()),
+ nullable};
+ }
+
+ return FieldMeta{name, field_id, data_type, nullable};
+}
+
+} // namespace milvus
diff --git a/internal/core/src/common/FieldMeta.h b/internal/core/src/common/FieldMeta.h
index 42522e9b4f452..ac965bbe7bce2 100644
--- a/internal/core/src/common/FieldMeta.h
+++ b/internal/core/src/common/FieldMeta.h
@@ -24,6 +24,11 @@
#include "common/Types.h"
namespace milvus {
+using TypeParams = std::map;
+using TokenizerParams = std::map;
+
+TokenizerParams
+ParseTokenizerParams(const TypeParams& params);
class FieldMeta {
public:
@@ -53,6 +58,21 @@ class FieldMeta {
Assert(IsStringDataType(type_));
}
+ FieldMeta(const FieldName& name,
+ FieldId id,
+ DataType type,
+ int64_t max_length,
+ bool nullable,
+ bool enable_match,
+ std::map& params)
+ : name_(name),
+ id_(id),
+ type_(type),
+ string_info_(StringInfo{max_length, enable_match, std::move(params)}),
+ nullable_(nullable) {
+ Assert(IsStringDataType(type_));
+ }
+
FieldMeta(const FieldName& name,
FieldId id,
DataType type,
@@ -99,6 +119,12 @@ class FieldMeta {
return string_info_->max_length;
}
+ bool
+ enable_match() const;
+
+ TokenizerParams
+ get_tokenizer_params() const;
+
std::optional
get_metric_type() const {
Assert(IsVectorDataType(type_));
@@ -160,6 +186,10 @@ class FieldMeta {
}
}
+ public:
+ static FieldMeta
+ ParseFrom(const milvus::proto::schema::FieldSchema& schema_proto);
+
private:
struct VectorInfo {
int64_t dim_;
@@ -167,6 +197,8 @@ class FieldMeta {
};
struct StringInfo {
int64_t max_length;
+ bool enable_match;
+ std::map params;
};
FieldName name_;
FieldId id_;
diff --git a/internal/core/src/common/Json.h b/internal/core/src/common/Json.h
index 708e94de250ba..297dbcbdcca77 100644
--- a/internal/core/src/common/Json.h
+++ b/internal/core/src/common/Json.h
@@ -34,8 +34,43 @@
#include "simdjson/dom/element.h"
#include "simdjson/error.h"
#include "simdjson/padded_string.h"
+#include "rapidjson/document.h"
+#include "rapidjson/error/en.h"
+#include "rapidjson/writer.h"
+#include "rapidjson/stringbuffer.h"
namespace milvus {
+// function to extract specific keys and convert them to json
+// rapidjson is suitable for extract and reconstruct serialization
+// instead of simdjson which not suitable for serialization
+inline std::string
+ExtractSubJson(const std::string& json, const std::vector& keys) {
+ rapidjson::Document doc;
+ doc.Parse(json.c_str());
+ if (doc.HasParseError()) {
+ PanicInfo(ErrorCode::UnexpectedError,
+ "json parse failed, error:{}",
+ rapidjson::GetParseError_En(doc.GetParseError()));
+ }
+
+ rapidjson::Document result_doc;
+ result_doc.SetObject();
+ rapidjson::Document::AllocatorType& allocator = result_doc.GetAllocator();
+
+ for (const auto& key : keys) {
+ if (doc.HasMember(key.c_str())) {
+ result_doc.AddMember(rapidjson::Value(key.c_str(), allocator),
+ doc[key.c_str()],
+ allocator);
+ }
+ }
+
+ rapidjson::StringBuffer buffer;
+ rapidjson::Writer writer(buffer);
+ result_doc.Accept(writer);
+ return buffer.GetString();
+}
+
using document = simdjson::ondemand::document;
template
using value_result = simdjson::simdjson_result;
diff --git a/internal/core/src/common/QueryInfo.h b/internal/core/src/common/QueryInfo.h
index 31785ea365183..440194d33c9f7 100644
--- a/internal/core/src/common/QueryInfo.h
+++ b/internal/core/src/common/QueryInfo.h
@@ -27,6 +27,7 @@ namespace milvus {
struct SearchInfo {
int64_t topk_{0};
int64_t group_size_{1};
+ bool group_strict_size_{false};
int64_t round_decimal_{0};
FieldId field_id_;
MetricType metric_type_;
diff --git a/internal/core/src/common/QueryResult.h b/internal/core/src/common/QueryResult.h
index aa4d79911e191..b5298d01b4346 100644
--- a/internal/core/src/common/QueryResult.h
+++ b/internal/core/src/common/QueryResult.h
@@ -107,8 +107,8 @@ struct VectorIterator {
for (auto& iter : iterators_) {
if (iter->HasNext()) {
auto origin_pair = iter->Next();
- origin_pair.first = convert_to_segment_offset(
- origin_pair.first, idx);
+ origin_pair.first =
+ convert_to_segment_offset(origin_pair.first, idx);
auto off_dis_pair =
std::make_shared(origin_pair, idx++);
heap_.push(off_dis_pair);
diff --git a/internal/core/src/common/Schema.cpp b/internal/core/src/common/Schema.cpp
index d5eaa200920dd..3ae3ac850609f 100644
--- a/internal/core/src/common/Schema.cpp
+++ b/internal/core/src/common/Schema.cpp
@@ -37,57 +37,22 @@ Schema::ParseFrom(const milvus::proto::schema::CollectionSchema& schema_proto) {
for (const milvus::proto::schema::FieldSchema& child :
schema_proto.fields()) {
auto field_id = FieldId(child.fieldid());
- auto name = FieldName(child.name());
- auto nullable = child.nullable();
- if (field_id.get() < 100) {
- // system field id
- auto is_system =
- SystemProperty::Instance().SystemFieldVerify(name, field_id);
- AssertInfo(is_system,
- "invalid system type: name(" + name.get() + "), id(" +
- std::to_string(field_id.get()) + ")");
- }
-
- auto data_type = DataType(child.data_type());
-
- if (IsVectorDataType(data_type)) {
- auto type_map = RepeatedKeyValToMap(child.type_params());
- auto index_map = RepeatedKeyValToMap(child.index_params());
- int64_t dim = 0;
- if (!IsSparseFloatVectorDataType(data_type)) {
- AssertInfo(type_map.count("dim"), "dim not found");
- dim = boost::lexical_cast(type_map.at("dim"));
- }
- if (!index_map.count("metric_type")) {
- schema->AddField(
- name, field_id, data_type, dim, std::nullopt, false);
- } else {
- auto metric_type = index_map.at("metric_type");
- schema->AddField(
- name, field_id, data_type, dim, metric_type, false);
- }
- } else if (IsStringDataType(data_type)) {
- auto type_map = RepeatedKeyValToMap(child.type_params());
- AssertInfo(type_map.count(MAX_LENGTH), "max_length not found");
- auto max_len =
- boost::lexical_cast(type_map.at(MAX_LENGTH));
- schema->AddField(name, field_id, data_type, max_len, nullable);
- } else if (IsArrayDataType(data_type)) {
- schema->AddField(name,
- field_id,
- data_type,
- DataType(child.element_type()),
- nullable);
- } else {
- schema->AddField(name, field_id, data_type, nullable);
- }
+ auto f = FieldMeta::ParseFrom(child);
+ schema->AddField(std::move(f));
if (child.is_primary_key()) {
AssertInfo(!schema->get_primary_field_id().has_value(),
"repetitive primary key");
schema->set_primary_field_id(field_id);
}
+
+ if (child.is_dynamic()) {
+ Assert(schema_proto.enable_dynamic_field());
+ AssertInfo(!schema->get_dynamic_field_id().has_value(),
+ "repetitive dynamic field");
+ schema->set_dynamic_field_id(field_id);
+ }
}
AssertInfo(schema->get_primary_field_id().has_value(),
diff --git a/internal/core/src/common/Schema.h b/internal/core/src/common/Schema.h
index b6ae2065de6de..fb585923a0fd1 100644
--- a/internal/core/src/common/Schema.h
+++ b/internal/core/src/common/Schema.h
@@ -113,6 +113,20 @@ class Schema {
this->AddField(std::move(field_meta));
}
+ // string type
+ void
+ AddField(const FieldName& name,
+ const FieldId id,
+ DataType data_type,
+ int64_t max_length,
+ bool nullable,
+ bool enable_match,
+ std::map& params) {
+ auto field_meta = FieldMeta(
+ name, id, data_type, max_length, nullable, enable_match, params);
+ this->AddField(std::move(field_meta));
+ }
+
// vector type
void
AddField(const FieldName& name,
@@ -131,6 +145,11 @@ class Schema {
this->primary_field_id_opt_ = field_id;
}
+ void
+ set_dynamic_field_id(FieldId field_id) {
+ this->dynamic_field_id_opt_ = field_id;
+ }
+
auto
begin() const {
return fields_.begin();
@@ -184,6 +203,11 @@ class Schema {
return primary_field_id_opt_;
}
+ std::optional
+ get_dynamic_field_id() const {
+ return dynamic_field_id_opt_;
+ }
+
public:
static std::shared_ptr
ParseFrom(const milvus::proto::schema::CollectionSchema& schema_proto);
@@ -213,6 +237,7 @@ class Schema {
std::unordered_map id_names_; // field_id -> field_name
std::optional primary_field_id_opt_;
+ std::optional dynamic_field_id_opt_;
};
using SchemaPtr = std::shared_ptr;
diff --git a/internal/core/src/common/Span.h b/internal/core/src/common/Span.h
index cc6cbf2b727ad..3334b8b44e72e 100644
--- a/internal/core/src/common/Span.h
+++ b/internal/core/src/common/Span.h
@@ -33,6 +33,15 @@ class SpanBase {
int64_t element_sizeof)
: data_(data), row_count_(row_count), element_sizeof_(element_sizeof) {
}
+ explicit SpanBase(const void* data,
+ const bool* valid_data,
+ int64_t row_count,
+ int64_t element_sizeof)
+ : data_(data),
+ valid_data_(valid_data),
+ row_count_(row_count),
+ element_sizeof_(element_sizeof) {
+ }
int64_t
row_count() const {
@@ -49,8 +58,14 @@ class SpanBase {
return data_;
}
+ const bool*
+ valid_data() const {
+ return valid_data_;
+ }
+
private:
const void* data_;
+ const bool* valid_data_{nullptr};
int64_t row_count_;
int64_t element_sizeof_;
};
@@ -65,20 +80,22 @@ class Span>> {
public:
using embedded_type = T;
- explicit Span(const T* data, int64_t row_count)
- : data_(data), row_count_(row_count) {
+ explicit Span(const T* data, const bool* valid_data, int64_t row_count)
+ : data_(data), valid_data_(valid_data), row_count_(row_count) {
}
- explicit Span(std::string_view data) {
- Span(data.data(), data.size());
+ explicit Span(std::string_view data, bool* valid_data) {
+ Span(data.data(), valid_data, data.size());
}
operator SpanBase() const {
- return SpanBase(data_, row_count_, sizeof(T));
+ return SpanBase(data_, valid_data_, row_count_, sizeof(T));
}
explicit Span(const SpanBase& base)
- : Span(reinterpret_cast(base.data()), base.row_count()) {
+ : Span(reinterpret_cast(base.data()),
+ base.valid_data(),
+ base.row_count()) {
assert(base.element_sizeof() == sizeof(T));
}
@@ -92,6 +109,11 @@ class Span
+#include
#include "log/Log.h"
+#include
+#include
#include
#include
-#include
#include
#include "opentelemetry/exporters/jaeger/jaeger_exporter_factory.h"
@@ -41,12 +44,13 @@ namespace jaeger = opentelemetry::exporter::jaeger;
namespace ostream = opentelemetry::exporter::trace;
namespace otlp = opentelemetry::exporter::otlp;
-static bool enable_trace = true;
+static std::atomic enable_trace = true;
static std::shared_ptr noop_trace_provider =
std::make_shared();
void
initTelemetry(const TraceConfig& cfg) {
+ bool export_created = true;
std::unique_ptr exporter;
if (cfg.exporter == "stdout") {
exporter = ostream::OStreamSpanExporterFactory::Create();
@@ -57,16 +61,27 @@ initTelemetry(const TraceConfig& cfg) {
exporter = jaeger::JaegerExporterFactory::Create(opts);
LOG_INFO("init jaeger exporter, endpoint: {}", opts.endpoint);
} else if (cfg.exporter == "otlp") {
- auto opts = otlp::OtlpGrpcExporterOptions{};
- opts.endpoint = cfg.otlpEndpoint;
- opts.use_ssl_credentials = cfg.oltpSecure;
- exporter = otlp::OtlpGrpcExporterFactory::Create(opts);
- LOG_INFO("init otlp exporter, endpoint: {}", opts.endpoint);
+ if (cfg.otlpMethod == "http") {
+ auto opts = otlp::OtlpHttpExporterOptions{};
+ opts.url = cfg.otlpEndpoint;
+ exporter = otlp::OtlpHttpExporterFactory::Create(opts);
+ LOG_INFO("init otlp http exporter, endpoint: {}", opts.url);
+ } else if (cfg.otlpMethod == "grpc" ||
+ cfg.otlpMethod == "") { // legacy configuration
+ auto opts = otlp::OtlpGrpcExporterOptions{};
+ opts.endpoint = cfg.otlpEndpoint;
+ opts.use_ssl_credentials = cfg.oltpSecure;
+ exporter = otlp::OtlpGrpcExporterFactory::Create(opts);
+ LOG_INFO("init otlp grpc exporter, endpoint: {}", opts.endpoint);
+ } else {
+ LOG_INFO("unknown otlp exporter method: {}", cfg.otlpMethod);
+ export_created = false;
+ }
} else {
LOG_INFO("Empty Trace");
- enable_trace = false;
+ export_created = false;
}
- if (enable_trace) {
+ if (export_created) {
auto processor = trace_sdk::BatchSpanProcessorFactory::Create(
std::move(exporter), {});
resource::ResourceAttributes attributes = {
@@ -78,8 +93,10 @@ initTelemetry(const TraceConfig& cfg) {
trace_sdk::TracerProviderFactory::Create(
std::move(processor), resource, std::move(sampler));
trace::Provider::SetTracerProvider(provider);
+ enable_trace.store(true);
} else {
trace::Provider::SetTracerProvider(noop_trace_provider);
+ enable_trace.store(false);
}
}
@@ -93,8 +110,8 @@ GetTracer() {
std::shared_ptr
StartSpan(const std::string& name, TraceContext* parentCtx) {
trace::StartSpanOptions opts;
- if (enable_trace && parentCtx != nullptr && parentCtx->traceID != nullptr &&
- parentCtx->spanID != nullptr) {
+ if (enable_trace.load() && parentCtx != nullptr &&
+ parentCtx->traceID != nullptr && parentCtx->spanID != nullptr) {
if (EmptyTraceID(parentCtx) || EmptySpanID(parentCtx)) {
return noop_trace_provider->GetTracer("noop")->StartSpan("noop");
}
@@ -110,21 +127,21 @@ StartSpan(const std::string& name, TraceContext* parentCtx) {
thread_local std::shared_ptr local_span;
void
SetRootSpan(std::shared_ptr span) {
- if (enable_trace) {
+ if (enable_trace.load()) {
local_span = std::move(span);
}
}
void
CloseRootSpan() {
- if (enable_trace) {
+ if (enable_trace.load()) {
local_span = nullptr;
}
}
void
AddEvent(const std::string& event_label) {
- if (enable_trace && local_span != nullptr) {
+ if (enable_trace.load() && local_span != nullptr) {
local_span->AddEvent(event_label);
}
}
@@ -151,23 +168,43 @@ EmptySpanID(const TraceContext* ctx) {
return isEmptyID(ctx->spanID, trace::SpanId::kSize);
}
-std::vector
-GetTraceIDAsVector(const TraceContext* ctx) {
+std::string
+BytesToHexStr(const uint8_t* data, const size_t len) {
+ std::stringstream ss;
+ for (size_t i = 0; i < len; i++) {
+ ss << std::hex << std::setw(2) << std::setfill('0')
+ << static_cast(data[i]);
+ }
+ return ss.str();
+}
+
+std::string
+GetIDFromHexStr(const std::string& hexStr) {
+ std::stringstream ss;
+ for (size_t i = 0; i < hexStr.length(); i += 2) {
+ std::string byteStr = hexStr.substr(i, 2);
+ char byte = static_cast