luclima commited on
Commit
9de2d54
·
verified ·
1 Parent(s): 29fe7fb

Delete folder asian_ai with huggingface_hub

Browse files
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. asian_ai/.gitkeep +0 -0
  2. asian_ai/asian_ai_integration.py +0 -213
  3. asian_ai/chinese/3FS/.clang-format +0 -29
  4. asian_ai/chinese/3FS/.clang-tidy +0 -117
  5. asian_ai/chinese/3FS/.clangd +0 -3
  6. asian_ai/chinese/3FS/.dockerignore +0 -3
  7. asian_ai/chinese/3FS/.github/workflows/build-dev-docker-image.yml +0 -52
  8. asian_ai/chinese/3FS/.github/workflows/build.yml +0 -30
  9. asian_ai/chinese/3FS/.gitignore +0 -17
  10. asian_ai/chinese/3FS/.gitmodules +0 -42
  11. asian_ai/chinese/3FS/CMakeLists.txt +0 -208
  12. asian_ai/chinese/3FS/Cargo.lock +0 -2139
  13. asian_ai/chinese/3FS/Cargo.toml +0 -22
  14. asian_ai/chinese/3FS/LICENSE +0 -21
  15. asian_ai/chinese/3FS/README.md +0 -129
  16. asian_ai/chinese/3FS/benchmarks/CMakeLists.txt +0 -1
  17. asian_ai/chinese/3FS/benchmarks/fio_usrbio/Makefile +0 -23
  18. asian_ai/chinese/3FS/benchmarks/fio_usrbio/README.md +0 -40
  19. asian_ai/chinese/3FS/benchmarks/fio_usrbio/hf3fs_usrbio.cpp +0 -286
  20. asian_ai/chinese/3FS/benchmarks/storage_bench/CMakeLists.txt +0 -1
  21. asian_ai/chinese/3FS/benchmarks/storage_bench/StorageBench.cc +0 -291
  22. asian_ai/chinese/3FS/benchmarks/storage_bench/StorageBench.h +0 -906
  23. asian_ai/chinese/3FS/cmake/AddCrate.cmake +0 -33
  24. asian_ai/chinese/3FS/cmake/ApacheArrow.cmake +0 -61
  25. asian_ai/chinese/3FS/cmake/CLangFormat.cmake +0 -24
  26. asian_ai/chinese/3FS/cmake/CLangTidy.cmake +0 -52
  27. asian_ai/chinese/3FS/cmake/CTestCustom.cmake +0 -12
  28. asian_ai/chinese/3FS/cmake/CodeCoverage.cmake +0 -27
  29. asian_ai/chinese/3FS/cmake/CompileFlags.cmake +0 -21
  30. asian_ai/chinese/3FS/cmake/DumpConfig.cmake +0 -15
  31. asian_ai/chinese/3FS/cmake/GitVersion.cmake +0 -127
  32. asian_ai/chinese/3FS/cmake/Jemalloc.cmake +0 -20
  33. asian_ai/chinese/3FS/cmake/Sanitizers.cmake +0 -242
  34. asian_ai/chinese/3FS/cmake/Target.cmake +0 -109
  35. asian_ai/chinese/3FS/configs/admin_cli.toml +0 -338
  36. asian_ai/chinese/3FS/configs/hf3fs_client_agent.toml +0 -557
  37. asian_ai/chinese/3FS/configs/hf3fs_client_agent_app.toml +0 -1
  38. asian_ai/chinese/3FS/configs/hf3fs_client_agent_launcher.toml +0 -88
  39. asian_ai/chinese/3FS/configs/hf3fs_fuse_main.toml +0 -450
  40. asian_ai/chinese/3FS/configs/hf3fs_fuse_main_app.toml +0 -1
  41. asian_ai/chinese/3FS/configs/hf3fs_fuse_main_launcher.toml +0 -95
  42. asian_ai/chinese/3FS/configs/meta_main.toml +0 -633
  43. asian_ai/chinese/3FS/configs/meta_main_app.toml +0 -2
  44. asian_ai/chinese/3FS/configs/meta_main_launcher.toml +0 -93
  45. asian_ai/chinese/3FS/configs/mgmtd_main.toml +0 -232
  46. asian_ai/chinese/3FS/configs/mgmtd_main_app.toml +0 -2
  47. asian_ai/chinese/3FS/configs/mgmtd_main_launcher.toml +0 -44
  48. asian_ai/chinese/3FS/configs/monitor_collector_main.toml +0 -141
  49. asian_ai/chinese/3FS/configs/storage_main.toml +0 -510
  50. asian_ai/chinese/3FS/configs/storage_main_app.toml +0 -2
asian_ai/.gitkeep DELETED
File without changes
asian_ai/asian_ai_integration.py DELETED
@@ -1,213 +0,0 @@
1
- """
2
- MYTHOS AI - Asian AI Integration Hub
3
- =====================================
4
- Integracao completa com IAs Chinesas, Japonesas e Coreanas.
5
- DeepSeek, Qwen, GLM, RAGFlow, MetaGPT, CuPy, Optuna, vLLM, SGLang, EXAONE, Solar.
6
- """
7
-
8
- import os
9
- import sys
10
- import json
11
- import logging
12
- import subprocess
13
- from pathlib import Path
14
- from dataclasses import dataclass, field
15
- from typing import Dict, List, Optional, Any
16
-
17
- logger = logging.getLogger(__name__)
18
-
19
- BASE_DIR = Path(__file__).parent
20
- CHINESE_DIR = BASE_DIR / "chinese"
21
- JAPANESE_DIR = BASE_DIR / "japanese"
22
- KOREAN_DIR = BASE_DIR / "korean"
23
- PERFORMANCE_DIR = BASE_DIR / "performance"
24
-
25
-
26
- @dataclass
27
- class RepoInfo:
28
- name: str
29
- path: Path
30
- country: str
31
- category: str
32
- stars: int = 0
33
- license: str = ""
34
- description: str = ""
35
- installed: bool = False
36
- pip_installed: bool = False
37
-
38
-
39
- class AsianAIHub:
40
- """Hub central para todas as IAs asiaticas integradas ao MYTHOS."""
41
-
42
- def __init__(self):
43
- self.repos: Dict[str, RepoInfo] = {}
44
- self._discover_repos()
45
- self._check_pip_packages()
46
-
47
- def _discover_repos(self):
48
- """Descobre todos os repos clonados."""
49
- repo_configs = {
50
- # CHINESES - DeepSeek
51
- "DeepSeek-V3": {"country": "china", "category": "llm", "stars": 104000,
52
- "license": "MIT", "description": "MoE 671B, MLA attention, 14.8T tokens"},
53
- "DeepSeek-R1": {"country": "china", "category": "reasoning", "stars": 92000,
54
- "license": "MIT", "description": "RL-based reasoning, self-verification"},
55
- "DeepEP": {"country": "china", "category": "infrastructure", "stars": 9800,
56
- "license": "MIT", "description": "Expert-parallel communication library"},
57
- "DeepGEMM": {"country": "china", "category": "infrastructure", "stars": 7500,
58
- "license": "MIT", "description": "Efficient GPU BLAS kernels"},
59
- "DeepSpec": {"country": "china", "category": "inference", "stars": 5900,
60
- "license": "MIT", "description": "Speculative decoding full-stack"},
61
- "3FS": {"country": "china", "category": "infrastructure", "stars": 8000,
62
- "license": "MIT", "description": "High-performance distributed file system"},
63
-
64
- # CHINESES - Qwen/Alibaba
65
- "Qwen3": {"country": "china", "category": "llm", "stars": 25000,
66
- "license": "Apache-2.0", "description": "MoE 235B, thinking modes, 100+ languages"},
67
- "Qwen-Agent": {"country": "china", "category": "agent", "stars": 12000,
68
- "license": "Apache-2.0", "description": "Agent framework with planning, tools"},
69
-
70
- # CHINESES - Plataformas
71
- "RAGFlow": {"country": "china", "category": "rag", "stars": 84000,
72
- "license": "Apache-2.0", "description": "RAG engine with deep document parsing"},
73
- "FastGPT": {"country": "china", "category": "rag", "stars": 29000,
74
- "license": "Apache-2.0", "description": "Knowledge base + visual workflow"},
75
- "Dify": {"country": "china", "category": "platform", "stars": 135000,
76
- "license": "Apache-2.0", "description": "LLM app builder with RAG, agents, workflows"},
77
- "MetaGPT": {"country": "china", "category": "agent", "stars": 59000,
78
- "license": "MIT", "description": "Multi-agent software company simulation"},
79
- "PaddleOCR": {"country": "china", "category": "ocr", "stars": 84500,
80
- "license": "Apache-2.0", "description": "OCR 100+ languages, PDF to structured data"},
81
-
82
- # CHINESES - GLM/Zhipu
83
- "GLM-4": {"country": "china", "category": "llm", "stars": 10000,
84
- "license": "Apache-2.0", "description": "355B MoE, visual reasoning"},
85
-
86
- # JAPONESAS
87
- "CuPy": {"country": "japan", "category": "gpu", "stars": 9500,
88
- "license": "MIT", "description": "NumPy-compatible GPU matrix library"},
89
- "Optuna": {"country": "japan", "category": "optimization", "stars": 12000,
90
- "license": "MIT", "description": "Automatic hyperparameter optimization"},
91
- "PFRL": {"country": "japan", "category": "rl", "stars": 1300,
92
- "license": "MIT", "description": "PyTorch reinforcement learning library"},
93
-
94
- # COREANAS
95
- "K-EXAONE": {"country": "korea", "category": "llm", "stars": 1000,
96
- "license": "Mixed", "description": "LG AI MoE multilingual model"},
97
- }
98
-
99
- for category_dir, repos in [
100
- (CHINESE_DIR, repo_configs),
101
- (JAPANESE_DIR, repo_configs),
102
- (KOREAN_DIR, repo_configs),
103
- ]:
104
- if not category_dir.exists():
105
- continue
106
- for repo_dir in category_dir.iterdir():
107
- if repo_dir.is_dir() and repo_dir.name in repos:
108
- config = repos[repo_dir.name]
109
- self.repos[repo_dir.name] = RepoInfo(
110
- name=repo_dir.name,
111
- path=repo_dir,
112
- country=config["country"],
113
- category=config["category"],
114
- stars=config["stars"],
115
- license=config["license"],
116
- description=config["description"],
117
- installed=True,
118
- )
119
-
120
- # Performance repos
121
- if PERFORMANCE_DIR.exists():
122
- perf_configs = {
123
- "vLLM": {"category": "inference", "stars": 45000, "license": "Apache-2.0",
124
- "description": "High-throughput LLM serving with PagedAttention"},
125
- "SGLang": {"category": "inference", "stars": 12000, "license": "Apache-2.0",
126
- "description": "Runtime for LLM with structured generation"},
127
- }
128
- for repo_dir in PERFORMANCE_DIR.iterdir():
129
- if repo_dir.is_dir() and repo_dir.name in perf_configs:
130
- config = perf_configs[repo_dir.name]
131
- self.repos[repo_dir.name] = RepoInfo(
132
- name=repo_dir.name,
133
- path=repo_dir,
134
- country="performance",
135
- category=config["category"],
136
- stars=config["stars"],
137
- license=config["license"],
138
- description=config["description"],
139
- installed=True,
140
- )
141
-
142
- def _check_pip_packages(self):
143
- """Verifica quais pacotes estao instalados via pip."""
144
- pip_packages = {
145
- "optuna": "Optuna",
146
- "cupy": "CuPy",
147
- "cupyx": "CuPy",
148
- "transformers": "Transformers",
149
- "accelerate": "Accelerate",
150
- "bitsandbytes": "BitsAndBytes",
151
- "sentencepiece": "SentencePiece",
152
- "huggingface_hub": "HuggingFace Hub",
153
- "paddleocr": "PaddleOCR",
154
- "paddlepaddle": "PaddlePaddle",
155
- }
156
- for pkg, repo_name in pip_packages.items():
157
- try:
158
- __import__(pkg)
159
- if repo_name in self.repos:
160
- self.repos[repo_name].pip_installed = True
161
- except ImportError:
162
- pass
163
-
164
- def get_summary(self) -> Dict[str, Any]:
165
- """Retorna resumo de todos os repos."""
166
- by_country = {"china": [], "japan": [], "korea": [], "performance": []}
167
- for repo in self.repos.values():
168
- by_country.setdefault(repo.country, []).append({
169
- "name": repo.name,
170
- "category": repo.category,
171
- "stars": repo.stars,
172
- "license": repo.license,
173
- "description": repo.description,
174
- "installed": repo.installed,
175
- "pip_installed": repo.pip_installed,
176
- "path": str(repo.path),
177
- })
178
- return {
179
- "total_repos": len(self.repos),
180
- "total_stars": sum(r.stars for r in self.repos.values()),
181
- "by_country": by_country,
182
- "pip_packages_installed": sum(1 for r in self.repos.values() if r.pip_installed),
183
- }
184
-
185
- def print_status(self):
186
- """Imprime status formatado."""
187
- summary = self.get_summary()
188
- print(f"\n{'='*60}")
189
- print(f" MYTHOS AI - Asian AI Hub")
190
- print(f" {summary['total_repos']} repos | {summary['total_stars']:,} stars total")
191
- print(f"{'='*60}")
192
-
193
- for country, flag in [("china", "CN"), ("japan", "JP"), ("korea", "KR"), ("performance", "PERF")]:
194
- repos = summary["by_country"].get(country, [])
195
- if repos:
196
- print(f"\n [{flag}] {country.upper()} ({len(repos)} repos)")
197
- for r in repos:
198
- status = "[pip]" if r["pip_installed"] else "[clone]"
199
- print(f" {status} {r['name']:20s} | {r['category']:15s} | {r['stars']:>6,} stars | {r['license']}")
200
-
201
- print(f"\n{'='*60}\n")
202
-
203
-
204
- def get_asian_ai_hub() -> AsianAIHub:
205
- """Singleton para o Asian AI Hub."""
206
- if not hasattr(get_asian_ai_hub, "_instance"):
207
- get_asian_ai_hub._instance = AsianAIHub()
208
- return get_asian_ai_hub._instance
209
-
210
-
211
- if __name__ == "__main__":
212
- hub = get_asian_ai_hub()
213
- hub.print_status()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
asian_ai/chinese/3FS/.clang-format DELETED
@@ -1,29 +0,0 @@
1
- BasedOnStyle: Google
2
- Language: Cpp
3
- Standard: c++20
4
- AlignAfterOpenBracket: Align
5
- AlignEscapedNewlines: Left
6
- AlignTrailingComments: true
7
- AllowAllArgumentsOnNextLine: false
8
- AllowAllParametersOfDeclarationOnNextLine: false
9
- AlwaysBreakAfterReturnType: None
10
- AlwaysBreakTemplateDeclarations: true
11
- BinPackArguments: false
12
- BinPackParameters: false
13
- BitFieldColonSpacing: Both
14
- BreakConstructorInitializers: BeforeColon
15
- BreakInheritanceList: BeforeColon
16
- IndentWidth: 2
17
- PointerAlignment: Right
18
- DerivePointerAlignment: false
19
- ColumnLimit: 120
20
- PackConstructorInitializers: Never
21
- SpaceAfterTemplateKeyword: true
22
-
23
- IncludeCategories:
24
- - Regex: 'Flat_generated\.h("|>)'
25
- Priority: 1000
26
- SortPriority: 1000
27
- - Regex: '"fbs/macros/'
28
- Priority: 1001
29
- SortPriority: 1001
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
asian_ai/chinese/3FS/.clang-tidy DELETED
@@ -1,117 +0,0 @@
1
- Checks: >
2
- -*,
3
- bugprone-undelegated-constructor,
4
- bugprone-argument-comment,
5
- bugprone-bad-signal-to-kill-thread,
6
- bugprone-bool-pointer-implicit-conversion,
7
- bugprone-copy-constructor-init,
8
- bugprone-dangling-handle,
9
- bugprone-forward-declaration-namespace,
10
- bugprone-fold-init-type,
11
- bugprone-inaccurate-erase,
12
- bugprone-incorrect-roundings,
13
- bugprone-infinite-loop,
14
- bugprone-integer-division,
15
- bugprone-macro-repeated-side-effects,
16
- bugprone-misplaced-operator-in-strlen-in-alloc,
17
- bugprone-misplaced-pointer-arithmetic-in-alloc,
18
- bugprone-misplaced-widening-cast,
19
- bugprone-move-forwarding-reference,
20
- bugprone-multiple-statement-macro,
21
- bugprone-parent-virtual-call,
22
- bugprone-posix-return,
23
- bugprone-reserved-identifier,
24
- bugprone-signed-char-misuse,
25
- bugprone-sizeof-container,
26
- bugprone-sizeof-expression,
27
- bugprone-string-constructor,
28
- bugprone-string-integer-assignment,
29
- bugprone-string-literal-with-embedded-nul,
30
- bugprone-suspicious-enum-usage,
31
- bugprone-suspicious-include,
32
- bugprone-suspicious-memset-usage,
33
- bugprone-suspicious-missing-comma,
34
- bugprone-suspicious-string-compare,
35
- bugprone-swapped-arguments,
36
- bugprone-terminating-continue,
37
- bugprone-throw-keyword-missing,
38
- bugprone-too-small-loop-variable,
39
- bugprone-undefined-memory-manipulation,
40
- bugprone-unhandled-self-assignment,
41
- bugprone-unused-raii,
42
- bugprone-unused-return-value,
43
- bugprone-use-after-move,
44
- bugprone-virtual-near-miss,
45
- # bugprone-macro-parentheses,
46
- # bugprone-narrowing-conversions,
47
- # bugprone-exception-escape,
48
-
49
- performance-faster-string-find,
50
- performance-for-range-copy,
51
- performance-implicit-conversion-in-loop,
52
- performance-inefficient-algorithm,
53
- performance-inefficient-vector-operation,
54
- performance-move-constructor-init,
55
- performance-no-automatic-move,
56
- performance-trivially-destructible,
57
- performance-unnecessary-copy-initialization,
58
- performance-move-const-arg,
59
-
60
- modernize-avoid-bind,
61
- modernize-loop-convert,
62
- modernize-make-shared,
63
- modernize-make-unique,
64
- modernize-raw-string-literal,
65
- modernize-redundant-void-arg,
66
- modernize-replace-auto-ptr,
67
- modernize-replace-random-shuffle,
68
- modernize-use-auto,
69
- modernize-use-bool-literals,
70
- modernize-use-nullptr,
71
- modernize-use-using,
72
- modernize-use-override,
73
- modernize-use-equals-default,
74
- modernize-use-equals-delete,
75
-
76
- misc-throw-by-value-catch-by-reference,
77
- misc-misplaced-const,
78
- misc-unconventional-assign-operator,
79
- misc-redundant-expression,
80
- misc-static-assert,
81
- misc-unconventional-assign-operator,
82
- misc-uniqueptr-reset-release,
83
- misc-unused-alias-decls,
84
- misc-unused-parameters,
85
- misc-unused-using-decls,
86
-
87
- readability-avoid-const-params-in-decls
88
- readability-const-return-type,
89
- readability-container-size-empty,
90
- readability-delete-null-pointer,
91
- readability-deleted-default,
92
- readability-misplaced-array-index,
93
- readability-non-const-parameter,
94
- readability-redundant-control-flow,
95
- readability-redundant-function-ptr-dereference,
96
- readability-redundant-smartptr-get,
97
- readability-redundant-string-cstr,
98
- readability-redundant-string-init,
99
- readability-static-definition-in-anonymous-namespace,
100
- readability-string-compare,
101
- readability-uniqueptr-delete-release,
102
- readability-simplify-subscript-expr,
103
- readability-simplify-boolean-expr,
104
- readability-inconsistent-declaration-parameter-name,
105
- # readability-qualified-auto,
106
-
107
- cert-flp30-c,
108
- cert-mem57-cpp,
109
- cert-oop58-cpp,
110
- google-build-explicit-make-pair,
111
- google-runtime-operator,
112
- hicpp-exception-baseclass,
113
- cppcoreguidelines-virtual-class-destructor,
114
- WarningsAsErrors: ""
115
- CheckOptions:
116
- - key: performance-move-const-arg.CheckTriviallyCopyableMove
117
- value: false
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
asian_ai/chinese/3FS/.clangd DELETED
@@ -1,3 +0,0 @@
1
- CompileFlags:
2
- Add: -fcoroutines-ts
3
- Remove: [-fcoroutines, -DNO_INTELLISENSE]
 
 
 
 
asian_ai/chinese/3FS/.dockerignore DELETED
@@ -1,3 +0,0 @@
1
- clang
2
- build
3
- deploy/*/Dockerfile
 
 
 
 
asian_ai/chinese/3FS/.github/workflows/build-dev-docker-image.yml DELETED
@@ -1,52 +0,0 @@
1
- name: Build development Docker image
2
-
3
- on:
4
- workflow_dispatch:
5
-
6
- env:
7
- REGISTRY: ghcr.io
8
- IMAGE_NAME: ${{ github.repository }}-dev
9
-
10
- jobs:
11
- push_to_registry:
12
- runs-on: ubuntu-latest
13
-
14
- permissions:
15
- packages: write
16
- contents: read
17
- attestations: write
18
- id-token: write
19
-
20
- steps:
21
- - name: Check out the repository
22
- uses: actions/checkout@v4
23
-
24
- - name: Log in to the Container registry
25
- uses: docker/login-action@65b78e6e13532edd9afa3aa52ac7964289d1a9c1
26
- with:
27
- registry: ${{ env.REGISTRY }}
28
- username: ${{ github.actor }}
29
- password: ${{ secrets.GITHUB_TOKEN }}
30
-
31
- - name: Extract metadata (tags, labels) for Docker
32
- id: meta
33
- uses: docker/metadata-action@9ec57ed1fcdbf14dcef7dfbe97b2010124a938b7
34
- with:
35
- images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
36
-
37
- - name: Build and push Docker image
38
- id: push
39
- uses: docker/build-push-action@3b5e8027fcad23fda98b2e3ac259d8d67585f671
40
- with:
41
- context: .
42
- file: ./dockerfile/dev.dockerfile
43
- push: true
44
- tags: ${{ steps.meta.outputs.tags }}
45
- labels: ${{ steps.meta.outputs.labels }}
46
-
47
- - name: Generate artifact attestation
48
- uses: actions/attest-build-provenance@v2
49
- with:
50
- subject-name: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME}}
51
- subject-digest: ${{ steps.push.outputs.digest }}
52
- push-to-registry: true
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
asian_ai/chinese/3FS/.github/workflows/build.yml DELETED
@@ -1,30 +0,0 @@
1
- name: Build
2
-
3
- on:
4
- push:
5
- branches: [ "main" ]
6
- pull_request:
7
- branches: [ "main" ]
8
-
9
- jobs:
10
- build:
11
- runs-on: self-hosted # or `ubuntu-22.04`
12
-
13
- steps:
14
- - uses: actions/checkout@v4
15
-
16
- - name: Prepare
17
- run: |
18
- sudo apt install -y cmake libuv1-dev liblz4-dev liblzma-dev libdouble-conversion-dev libdwarf-dev libunwind-dev
19
- sudo apt install -y libaio-dev libgflags-dev libgoogle-glog-dev libgtest-dev libgmock-dev clang-format-14 clang-14 clang-tidy-14 lld-14
20
- sudo apt install -y libgoogle-perftools-dev google-perftools libssl-dev gcc-12 g++-12 libboost-all-dev meson rustc cargo
21
- wget https://github.com/apple/foundationdb/releases/download/7.1.61/foundationdb-clients_7.1.61-1_amd64.deb && sudo dpkg -i foundationdb-clients_7.1.61-1_amd64.deb
22
- git clone https://github.com/libfuse/libfuse.git libfuse -b fuse-3.16.2 --depth 1 && mkdir libfuse/build && cd libfuse/build && meson setup .. && ninja && sudo ninja install && cd ../.. && rm -rf libfuse
23
- git submodule update --init --recursive
24
- ./patches/apply.sh
25
-
26
- - name: Build
27
- run: |
28
- cargo build --release
29
- cmake -S . -B build -DCMAKE_CXX_COMPILER=clang++-14 -DCMAKE_C_COMPILER=clang-14 -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DSHUFFLE_METHOD=g++11
30
- cmake --build build -j 32
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
asian_ai/chinese/3FS/.gitignore DELETED
@@ -1,17 +0,0 @@
1
- /.cache
2
- /.vscode
3
- /build
4
- /debug
5
- /release
6
- /clang
7
- /clangdbg
8
- /packages
9
- *.o
10
- *.a
11
- *.so
12
- *.log
13
- compile_commands.json
14
- *_generated.h
15
- *~
16
- __pycache__
17
- /target
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
asian_ai/chinese/3FS/.gitmodules DELETED
@@ -1,42 +0,0 @@
1
- [submodule "third_party/googletest"]
2
- path = third_party/googletest
3
- url = https://github.com/google/googletest.git
4
- [submodule "third_party/folly"]
5
- path = third_party/folly
6
- url = https://github.com/facebook/folly.git
7
- [submodule "third_party/leveldb"]
8
- path = third_party/leveldb
9
- url = https://github.com/google/leveldb.git
10
- [submodule "third_party/rocksdb"]
11
- path = third_party/rocksdb
12
- url = https://github.com/facebook/rocksdb.git
13
- [submodule "third_party/scnlib"]
14
- path = third_party/scnlib
15
- url = https://github.com/eliaskosunen/scnlib.git
16
- [submodule "third_party/pybind11"]
17
- path = third_party/pybind11
18
- url = https://github.com/pybind/pybind11.git
19
- [submodule "third_party/clickhouse-cpp"]
20
- path = third_party/clickhouse-cpp
21
- url = https://github.com/ClickHouse/clickhouse-cpp.git
22
- [submodule "third_party/fmt"]
23
- path = third_party/fmt
24
- url = https://github.com/fmtlib/fmt.git
25
- [submodule "third_party/toml11"]
26
- path = third_party/toml11
27
- url = https://github.com/ToruNiina/toml11.git
28
- [submodule "third_party/jemalloc"]
29
- path = third_party/jemalloc
30
- url = https://github.com/jemalloc/jemalloc.git
31
- [submodule "third_party/mimalloc"]
32
- path = third_party/mimalloc
33
- url = https://github.com/microsoft/mimalloc.git
34
- [submodule "third_party/zstd"]
35
- path = third_party/zstd
36
- url = https://github.com/facebook/zstd.git
37
- [submodule "third_party/liburing"]
38
- path = third_party/liburing
39
- url = https://github.com/axboe/liburing.git
40
- [submodule "third_party/gtest-parallel"]
41
- path = third_party/gtest-parallel
42
- url = https://github.com/google/gtest-parallel.git
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
asian_ai/chinese/3FS/CMakeLists.txt DELETED
@@ -1,208 +0,0 @@
1
- cmake_minimum_required(VERSION 3.12)
2
- project(3FS VERSION 0.1.5 LANGUAGES C CXX)
3
-
4
- set(CMAKE_CONFIGURATION_TYPES "RelWithDebInfo;Debug;Release;MinSizeRel" CACHE STRING "" FORCE)
5
- if (NOT CMAKE_BUILD_TYPE OR CMAKE_BUILD_TYPE STREQUAL "None")
6
- set (CMAKE_BUILD_TYPE "RelWithDebInfo")
7
- message (STATUS "CMAKE_BUILD_TYPE is not set, set to default = ${CMAKE_BUILD_TYPE}")
8
- endif ()
9
- message (STATUS "CMAKE_BUILD_TYPE: ${CMAKE_BUILD_TYPE}")
10
-
11
- string (TOUPPER ${CMAKE_BUILD_TYPE} CMAKE_BUILD_TYPE_UC)
12
-
13
- if(CMAKE_BUILD_TYPE_UC STREQUAL "DEBUG" )
14
- option(ENABLE_ASSERTIONS "Enable assertions" ON)
15
- else()
16
- option(ENABLE_ASSERTIONS "Enable assertions" OFF)
17
- endif()
18
- message (STATUS "ENABLE_ASSERTIONS: ${ENABLE_ASSERTIONS}")
19
-
20
- if(ENABLE_ASSERTIONS)
21
- add_definitions(-D_DEBUG)
22
- # On non-Debug builds cmake automatically defines NDEBUG, so we explicitly undefine it:
23
- if(NOT CMAKE_BUILD_TYPE_UC STREQUAL "DEBUG")
24
- # NOTE: use `add_compile_options` rather than `add_definitions` since
25
- # `add_definitions` does not support generator expressions.
26
- add_compile_options($<$<OR:$<COMPILE_LANGUAGE:C>,$<COMPILE_LANGUAGE:CXX>>:-UNDEBUG>)
27
- endif()
28
- endif()
29
-
30
- set(SHUFFLE_METHODS "g++10" "g++11" "stdshuffle")
31
- set(SHUFFLE_METHOD "" CACHE STRING "Choose the shuffle method (REQUIRED)")
32
- set_property(CACHE SHUFFLE_METHOD PROPERTY STRINGS ${SHUFFLE_METHODS})
33
-
34
- if("${SHUFFLE_METHOD}" STREQUAL "")
35
- message(FATAL_ERROR
36
- "\n [ERROR]: SHUFFLE_METHOD is not set!\n"
37
- " You must specify it using: cmake -DSHUFFLE_METHOD=<value>\n"
38
- " Valid options are: ${SHUFFLE_METHODS}"
39
- )
40
- elseif(NOT SHUFFLE_METHOD IN_LIST SHUFFLE_METHODS)
41
- message(FATAL_ERROR
42
- "\n [ERROR]: Invalid SHUFFLE_METHOD: '${SHUFFLE_METHOD}'\n"
43
- " Valid options are: ${SHUFFLE_METHODS}"
44
- )
45
- endif()
46
-
47
- message(STATUS "Use Shuffle Method: ${SHUFFLE_METHOD}")
48
- if(SHUFFLE_METHOD STREQUAL "stdshuffle")
49
- add_compile_definitions(USE_STD_SHUFFLE)
50
- elseif(SHUFFLE_METHOD STREQUAL "g++10")
51
- add_compile_definitions(USE_GCC10_SHUFFLE)
52
- elseif(SHUFFLE_METHOD STREQUAL "g++11")
53
- add_compile_definitions(USE_GCC11_SHUFFLE)
54
- endif()
55
-
56
- option(OVERRIDE_CXX_NEW_DELETE "Override C++ new/delete operator" OFF)
57
- option(SAVE_ALLOCATE_SIZE "Use more memory to save allocate size" OFF)
58
-
59
- option(ENABLE_FUSE_APPLICATION "" ON)
60
-
61
- if (DEFINED SANITIZER AND SANITIZER)
62
- set(OVERRIDE_CXX_NEW_DELETE OFF)
63
- endif()
64
- message (STATUS "OVERRIDE_CXX_NEW_DELETE: ${OVERRIDE_CXX_NEW_DELETE}")
65
-
66
- if (OVERRIDE_CXX_NEW_DELETE)
67
- add_definitions(-DOVERRIDE_CXX_NEW_DELETE)
68
- if (SAVE_ALLOCATE_SIZE)
69
- add_definitions(-DSAVE_ALLOCATE_SIZE)
70
- endif()
71
- endif()
72
- message (STATUS "SAVE_ALLOCATE_SIZE: ${SAVE_ALLOCATE_SIZE}")
73
-
74
- set(CMAKE_C_STANDARD 11)
75
- set(CMAKE_C_STANDARD_REQUIRED OFF)
76
- set(CMAKE_C_EXTENSIONS ON)
77
- set(CMAKE_CXX_STANDARD 20)
78
- set(CMAKE_CXX_STANDARD_REQUIRED ON)
79
- set(CMAKE_CXX_EXTENSIONS OFF)
80
- set(CMAKE_POSITION_INDEPENDENT_CODE ON)
81
- set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
82
-
83
- if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
84
- set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fcoroutines-ts")
85
- set(CMAKE_CXX_LINK_FLAGS "${CMAKE_CXX_LINK_FLAGS} -latomic")
86
- add_link_options(-fuse-ld=lld)
87
- # Do not build with libc++ (LLVM's implementation of the C++ standard library) in fdb
88
- set(USE_LIBCXX OFF)
89
- elseif (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
90
- set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fcoroutines")
91
- endif()
92
-
93
- # Remove project root from the __FILE__ macro variable
94
- add_compile_options(-fmacro-prefix-map=${CMAKE_SOURCE_DIR}=.)
95
-
96
- if(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64")
97
- add_compile_options(-msse4.2 -mavx2)
98
- elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64")
99
- # ARM architecture detected:
100
- # Clang on ARM uses built-in runtime library (compiler-rt) to provide symbols like '__muloti4'.
101
- # Without explicitly specifying '-rtlib=compiler-rt', linking may fail due to missing '__muloti4'.
102
- # '-unwindlib=libgcc' ensures proper exception unwinding compatibility.
103
- add_compile_options(-march=armv8-a+crc)
104
- message(STATUS "ARM architecture detected, linking with compiler-rt and libgcc.")
105
- add_link_options("-rtlib=compiler-rt" "-unwindlib=libgcc")
106
- endif()
107
- add_compile_definitions(ROCKSDB_NAMESPACE=rocksdb_internal)
108
- include(cmake/Sanitizers.cmake)
109
- include(cmake/CompileFlags.cmake)
110
-
111
- # folly can't work normally under -Werror
112
- store_compile_flags()
113
- add_subdirectory("third_party/fmt" EXCLUDE_FROM_ALL)
114
- restore_compile_flags()
115
- set(ZSTD_BUILD_STATIC ON)
116
- add_subdirectory("third_party/zstd/build/cmake" EXCLUDE_FROM_ALL)
117
- set(zstd_INCLUDE_DIRS "${PROJECT_SOURCE_DIR}/third_party/zstd/lib")
118
- set(ZSTD_INCLUDE_DIR "${PROJECT_SOURCE_DIR}/third_party/zstd/lib")
119
- set(zstd_FOUND ON)
120
- set(ZSTD_FOUND ON)
121
- set(zstd_LIBRARIES "${PROJECT_BINARY_DIR}/third_party/zstd/build/cmake/lib/libzstd.a")
122
- set(ZSTD_LIBRARY "${PROJECT_BINARY_DIR}/third_party/zstd/build/cmake/lib/libzstd.a")
123
- restore_compile_flags()
124
- add_subdirectory("third_party/googletest" EXCLUDE_FROM_ALL)
125
- restore_compile_flags()
126
- set(FOLLY_NO_EXCEPTION_TRACER ON)
127
- add_subdirectory("third_party/folly" EXCLUDE_FROM_ALL)
128
- restore_compile_flags()
129
- set(LEVELDB_BUILD_TESTS OFF CACHE BOOL "Disable LevelDB tests")
130
- set(LEVELDB_BUILD_BENCHMARKS OFF CACHE BOOL "Disable LevelDB benchmarks")
131
- set(LEVELDB_INSTALL OFF CACHE BOOL "Disable LevelDB install")
132
- add_subdirectory("third_party/leveldb" EXCLUDE_FROM_ALL)
133
- restore_compile_flags()
134
- set(CMAKE_POLICY_DEFAULT_CMP0077 NEW)
135
- set(WITH_LZ4 ON)
136
- set(WITH_ZSTD ON)
137
- set(USE_RTTI ON)
138
- set(WITH_TESTS OFF)
139
- set(WITH_BENCHMARK_TOOLS OFF)
140
- set(WITH_TOOLS OFF)
141
- set(WITH_ALL_TESTS OFF)
142
-
143
- add_subdirectory("third_party/rocksdb" EXCLUDE_FROM_ALL)
144
- restore_compile_flags()
145
- set(SCN_TESTS OFF)
146
- set(SCN_EXAMPLES OFF)
147
- set(SCN_BENCHMARKS OFF)
148
- set(SCN_DOCS OFF)
149
- set(SCN_INSTALL OFF)
150
- set(SCN_PEDANTIC OFF)
151
- add_subdirectory("third_party/scnlib" EXCLUDE_FROM_ALL)
152
- restore_compile_flags()
153
- add_subdirectory("third_party/pybind11" EXCLUDE_FROM_ALL)
154
- restore_compile_flags()
155
- add_subdirectory("third_party/toml11" EXCLUDE_FROM_ALL)
156
- restore_compile_flags()
157
- set (MI_OVERRIDE OFF)
158
- add_subdirectory("third_party/mimalloc" EXCLUDE_FROM_ALL)
159
- restore_compile_flags()
160
- add_subdirectory("third_party/clickhouse-cpp" EXCLUDE_FROM_ALL)
161
- TARGET_INCLUDE_DIRECTORIES(clickhouse-cpp-lib
162
- PUBLIC ${PROJECT_SOURCE_DIR}/third_party/clickhouse-cpp
163
- )
164
- TARGET_INCLUDE_DIRECTORIES(clickhouse-cpp-lib-static
165
- PUBLIC ${PROJECT_SOURCE_DIR}/third_party/clickhouse-cpp
166
- )
167
- TARGET_INCLUDE_DIRECTORIES (absl-lib
168
- PUBLIC ${PROJECT_SOURCE_DIR}/third_party/clickhouse-cpp/contrib
169
- )
170
- restore_compile_flags()
171
- add_subdirectory("third_party/liburing-cmake" EXCLUDE_FROM_ALL)
172
- restore_compile_flags()
173
-
174
- set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Werror -Wpedantic")
175
-
176
- set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${COMPILER_FLAGS}")
177
- set (CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -O3 ${DEBUG_INFO_FLAGS} ${CMAKE_CXX_FLAGS_ADD}")
178
- set (CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -O0 ${DEBUG_INFO_FLAGS} -fno-inline ${CMAKE_CXX_FLAGS_ADD}")
179
-
180
- set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${COMPILER_FLAGS} ${CMAKE_C_FLAGS_ADD}")
181
- set (CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} -O3 ${DEBUG_INFO_FLAGS} ${CMAKE_C_FLAGS_ADD}")
182
- set (CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -O0 ${DEBUG_INFO_FLAGS} -fno-inline ${CMAKE_C_FLAGS_ADD}")
183
-
184
- set (CMAKE_ASM_FLAGS "${CMAKE_ASM_FLAGS} ${COMPILER_FLAGS} ${CMAKE_ASM_FLAGS_ADD}")
185
- set (CMAKE_ASM_FLAGS_RELWITHDEBINFO "${CMAKE_ASM_FLAGS_RELWITHDEBINFO} -O3 ${DEBUG_INFO_FLAGS} ${CMAKE_ASM_FLAGS_ADD}")
186
- set (CMAKE_ASM_FLAGS_DEBUG "${CMAKE_ASM_FLAGS_DEBUG} -O0 ${DEBUG_INFO_FLAGS} -fno-inline ${CMAKE_ASM_FLAGS_ADD}")
187
-
188
- set(Boost_USE_STATIC_LIBS ON)
189
- set(FDB_VERSION 7.1.5-ibe)
190
-
191
- find_package(Threads REQUIRED)
192
- find_package(Boost REQUIRED COMPONENTS filesystem system program_options)
193
- find_library(LIBUV_LIBRARY NAMES libuv1)
194
- enable_testing()
195
-
196
- include(cmake/CodeCoverage.cmake)
197
- include(cmake/CLangFormat.cmake)
198
- include(cmake/CLangTidy.cmake)
199
- include(cmake/Target.cmake)
200
- include(cmake/DumpConfig.cmake)
201
- include(cmake/Jemalloc.cmake)
202
- include(cmake/ApacheArrow.cmake)
203
- include(cmake/AddCrate.cmake)
204
- configure_file(cmake/CTestCustom.cmake ${CMAKE_BINARY_DIR} @ONLY)
205
-
206
- add_subdirectory(src)
207
- add_subdirectory(tests)
208
- add_subdirectory(benchmarks)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
asian_ai/chinese/3FS/Cargo.lock DELETED
@@ -1,2139 +0,0 @@
1
- # This file is automatically @generated by Cargo.
2
- # It is not intended for manual editing.
3
- version = 4
4
-
5
- [[package]]
6
- name = "aho-corasick"
7
- version = "1.1.3"
8
- source = "registry+https://github.com/rust-lang/crates.io-index"
9
- checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916"
10
- dependencies = [
11
- "memchr",
12
- ]
13
-
14
- [[package]]
15
- name = "android-tzdata"
16
- version = "0.1.1"
17
- source = "registry+https://github.com/rust-lang/crates.io-index"
18
- checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0"
19
-
20
- [[package]]
21
- name = "android_system_properties"
22
- version = "0.1.5"
23
- source = "registry+https://github.com/rust-lang/crates.io-index"
24
- checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311"
25
- dependencies = [
26
- "libc",
27
- ]
28
-
29
- [[package]]
30
- name = "anes"
31
- version = "0.1.6"
32
- source = "registry+https://github.com/rust-lang/crates.io-index"
33
- checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299"
34
-
35
- [[package]]
36
- name = "ansi_term"
37
- version = "0.12.1"
38
- source = "registry+https://github.com/rust-lang/crates.io-index"
39
- checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2"
40
- dependencies = [
41
- "winapi",
42
- ]
43
-
44
- [[package]]
45
- name = "anstream"
46
- version = "0.6.18"
47
- source = "registry+https://github.com/rust-lang/crates.io-index"
48
- checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b"
49
- dependencies = [
50
- "anstyle",
51
- "anstyle-parse",
52
- "anstyle-query",
53
- "anstyle-wincon",
54
- "colorchoice",
55
- "is_terminal_polyfill",
56
- "utf8parse",
57
- ]
58
-
59
- [[package]]
60
- name = "anstyle"
61
- version = "1.0.10"
62
- source = "registry+https://github.com/rust-lang/crates.io-index"
63
- checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9"
64
-
65
- [[package]]
66
- name = "anstyle-parse"
67
- version = "0.2.6"
68
- source = "registry+https://github.com/rust-lang/crates.io-index"
69
- checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9"
70
- dependencies = [
71
- "utf8parse",
72
- ]
73
-
74
- [[package]]
75
- name = "anstyle-query"
76
- version = "1.1.2"
77
- source = "registry+https://github.com/rust-lang/crates.io-index"
78
- checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c"
79
- dependencies = [
80
- "windows-sys 0.59.0",
81
- ]
82
-
83
- [[package]]
84
- name = "anstyle-wincon"
85
- version = "3.0.7"
86
- source = "registry+https://github.com/rust-lang/crates.io-index"
87
- checksum = "ca3534e77181a9cc07539ad51f2141fe32f6c3ffd4df76db8ad92346b003ae4e"
88
- dependencies = [
89
- "anstyle",
90
- "once_cell",
91
- "windows-sys 0.59.0",
92
- ]
93
-
94
- [[package]]
95
- name = "anyhow"
96
- version = "1.0.94"
97
- source = "registry+https://github.com/rust-lang/crates.io-index"
98
- checksum = "c1fd03a028ef38ba2276dce7e33fcd6369c158a1bca17946c4b1b701891c1ff7"
99
-
100
- [[package]]
101
- name = "atomic-wait"
102
- version = "1.1.0"
103
- source = "registry+https://github.com/rust-lang/crates.io-index"
104
- checksum = "a55b94919229f2c42292fd71ffa4b75e83193bffdd77b1e858cd55fd2d0b0ea8"
105
- dependencies = [
106
- "libc",
107
- "windows-sys 0.42.0",
108
- ]
109
-
110
- [[package]]
111
- name = "atty"
112
- version = "0.2.14"
113
- source = "registry+https://github.com/rust-lang/crates.io-index"
114
- checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
115
- dependencies = [
116
- "hermit-abi 0.1.19",
117
- "libc",
118
- "winapi",
119
- ]
120
-
121
- [[package]]
122
- name = "autocfg"
123
- version = "1.4.0"
124
- source = "registry+https://github.com/rust-lang/crates.io-index"
125
- checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26"
126
-
127
- [[package]]
128
- name = "bindgen"
129
- version = "0.69.5"
130
- source = "registry+https://github.com/rust-lang/crates.io-index"
131
- checksum = "271383c67ccabffb7381723dea0672a673f292304fcb45c01cc648c7a8d58088"
132
- dependencies = [
133
- "bitflags 2.6.0",
134
- "cexpr",
135
- "clang-sys",
136
- "itertools 0.12.1",
137
- "lazy_static",
138
- "lazycell",
139
- "proc-macro2",
140
- "quote",
141
- "regex",
142
- "rustc-hash 1.1.0",
143
- "shlex",
144
- "syn 2.0.100",
145
- ]
146
-
147
- [[package]]
148
- name = "bindgen"
149
- version = "0.71.1"
150
- source = "registry+https://github.com/rust-lang/crates.io-index"
151
- checksum = "5f58bf3d7db68cfbac37cfc485a8d711e87e064c3d0fe0435b92f7a407f9d6b3"
152
- dependencies = [
153
- "bitflags 2.6.0",
154
- "cexpr",
155
- "clang-sys",
156
- "itertools 0.12.1",
157
- "log",
158
- "prettyplease",
159
- "proc-macro2",
160
- "quote",
161
- "regex",
162
- "rustc-hash 2.1.1",
163
- "shlex",
164
- "syn 2.0.100",
165
- ]
166
-
167
- [[package]]
168
- name = "bitflags"
169
- version = "1.3.2"
170
- source = "registry+https://github.com/rust-lang/crates.io-index"
171
- checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
172
-
173
- [[package]]
174
- name = "bitflags"
175
- version = "2.6.0"
176
- source = "registry+https://github.com/rust-lang/crates.io-index"
177
- checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de"
178
-
179
- [[package]]
180
- name = "bumpalo"
181
- version = "3.16.0"
182
- source = "registry+https://github.com/rust-lang/crates.io-index"
183
- checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c"
184
-
185
- [[package]]
186
- name = "byteorder"
187
- version = "1.5.0"
188
- source = "registry+https://github.com/rust-lang/crates.io-index"
189
- checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
190
-
191
- [[package]]
192
- name = "bzip2-sys"
193
- version = "0.1.11+1.0.8"
194
- source = "registry+https://github.com/rust-lang/crates.io-index"
195
- checksum = "736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdc"
196
- dependencies = [
197
- "cc",
198
- "libc",
199
- "pkg-config",
200
- ]
201
-
202
- [[package]]
203
- name = "cast"
204
- version = "0.3.0"
205
- source = "registry+https://github.com/rust-lang/crates.io-index"
206
- checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5"
207
-
208
- [[package]]
209
- name = "cc"
210
- version = "1.2.2"
211
- source = "registry+https://github.com/rust-lang/crates.io-index"
212
- checksum = "f34d93e62b03caf570cccc334cbc6c2fceca82f39211051345108adcba3eebdc"
213
- dependencies = [
214
- "jobserver",
215
- "libc",
216
- "shlex",
217
- ]
218
-
219
- [[package]]
220
- name = "cexpr"
221
- version = "0.6.0"
222
- source = "registry+https://github.com/rust-lang/crates.io-index"
223
- checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766"
224
- dependencies = [
225
- "nom",
226
- ]
227
-
228
- [[package]]
229
- name = "cfg-if"
230
- version = "1.0.0"
231
- source = "registry+https://github.com/rust-lang/crates.io-index"
232
- checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
233
-
234
- [[package]]
235
- name = "cfg_aliases"
236
- version = "0.2.1"
237
- source = "registry+https://github.com/rust-lang/crates.io-index"
238
- checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724"
239
-
240
- [[package]]
241
- name = "chrono"
242
- version = "0.4.38"
243
- source = "registry+https://github.com/rust-lang/crates.io-index"
244
- checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401"
245
- dependencies = [
246
- "android-tzdata",
247
- "iana-time-zone",
248
- "js-sys",
249
- "num-traits",
250
- "wasm-bindgen",
251
- "windows-targets",
252
- ]
253
-
254
- [[package]]
255
- name = "chunk_engine"
256
- version = "0.1.11"
257
- dependencies = [
258
- "anyhow",
259
- "byteorder",
260
- "clap 4.5.22",
261
- "crc32c",
262
- "criterion",
263
- "cxx",
264
- "cxx-build",
265
- "dashmap",
266
- "derse",
267
- "lazy_static",
268
- "libc",
269
- "lockmap",
270
- "rand",
271
- "rocksdb",
272
- "rolling-file",
273
- "serde",
274
- "static_assertions",
275
- "tempfile",
276
- "tinyvec",
277
- "toml",
278
- "tracing",
279
- "tracing-appender",
280
- "tracing-subscriber",
281
- ]
282
-
283
- [[package]]
284
- name = "ciborium"
285
- version = "0.2.2"
286
- source = "registry+https://github.com/rust-lang/crates.io-index"
287
- checksum = "42e69ffd6f0917f5c029256a24d0161db17cea3997d185db0d35926308770f0e"
288
- dependencies = [
289
- "ciborium-io",
290
- "ciborium-ll",
291
- "serde",
292
- ]
293
-
294
- [[package]]
295
- name = "ciborium-io"
296
- version = "0.2.2"
297
- source = "registry+https://github.com/rust-lang/crates.io-index"
298
- checksum = "05afea1e0a06c9be33d539b876f1ce3692f4afea2cb41f740e7743225ed1c757"
299
-
300
- [[package]]
301
- name = "ciborium-ll"
302
- version = "0.2.2"
303
- source = "registry+https://github.com/rust-lang/crates.io-index"
304
- checksum = "57663b653d948a338bfb3eeba9bb2fd5fcfaecb9e199e87e1eda4d9e8b240fd9"
305
- dependencies = [
306
- "ciborium-io",
307
- "half",
308
- ]
309
-
310
- [[package]]
311
- name = "clang-sys"
312
- version = "1.8.1"
313
- source = "registry+https://github.com/rust-lang/crates.io-index"
314
- checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4"
315
- dependencies = [
316
- "glob",
317
- "libc",
318
- "libloading",
319
- ]
320
-
321
- [[package]]
322
- name = "clap"
323
- version = "2.34.0"
324
- source = "registry+https://github.com/rust-lang/crates.io-index"
325
- checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c"
326
- dependencies = [
327
- "ansi_term",
328
- "atty",
329
- "bitflags 1.3.2",
330
- "strsim 0.8.0",
331
- "textwrap",
332
- "unicode-width",
333
- "vec_map",
334
- ]
335
-
336
- [[package]]
337
- name = "clap"
338
- version = "4.5.22"
339
- source = "registry+https://github.com/rust-lang/crates.io-index"
340
- checksum = "69371e34337c4c984bbe322360c2547210bf632eb2814bbe78a6e87a2935bd2b"
341
- dependencies = [
342
- "clap_builder",
343
- "clap_derive",
344
- ]
345
-
346
- [[package]]
347
- name = "clap_builder"
348
- version = "4.5.22"
349
- source = "registry+https://github.com/rust-lang/crates.io-index"
350
- checksum = "6e24c1b4099818523236a8ca881d2b45db98dadfb4625cf6608c12069fcbbde1"
351
- dependencies = [
352
- "anstream",
353
- "anstyle",
354
- "clap_lex",
355
- "strsim 0.11.1",
356
- ]
357
-
358
- [[package]]
359
- name = "clap_derive"
360
- version = "4.5.18"
361
- source = "registry+https://github.com/rust-lang/crates.io-index"
362
- checksum = "4ac6a0c7b1a9e9a5186361f67dfa1b88213572f427fb9ab038efb2bd8c582dab"
363
- dependencies = [
364
- "heck 0.5.0",
365
- "proc-macro2",
366
- "quote",
367
- "syn 2.0.100",
368
- ]
369
-
370
- [[package]]
371
- name = "clap_lex"
372
- version = "0.7.3"
373
- source = "registry+https://github.com/rust-lang/crates.io-index"
374
- checksum = "afb84c814227b90d6895e01398aee0d8033c00e7466aca416fb6a8e0eb19d8a7"
375
-
376
- [[package]]
377
- name = "codespan-reporting"
378
- version = "0.11.1"
379
- source = "registry+https://github.com/rust-lang/crates.io-index"
380
- checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e"
381
- dependencies = [
382
- "termcolor",
383
- "unicode-width",
384
- ]
385
-
386
- [[package]]
387
- name = "colorchoice"
388
- version = "1.0.3"
389
- source = "registry+https://github.com/rust-lang/crates.io-index"
390
- checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990"
391
-
392
- [[package]]
393
- name = "core-foundation-sys"
394
- version = "0.8.7"
395
- source = "registry+https://github.com/rust-lang/crates.io-index"
396
- checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b"
397
-
398
- [[package]]
399
- name = "crc32c"
400
- version = "0.6.8"
401
- source = "registry+https://github.com/rust-lang/crates.io-index"
402
- checksum = "3a47af21622d091a8f0fb295b88bc886ac74efcc613efc19f5d0b21de5c89e47"
403
- dependencies = [
404
- "rustc_version",
405
- ]
406
-
407
- [[package]]
408
- name = "criterion"
409
- version = "0.5.1"
410
- source = "registry+https://github.com/rust-lang/crates.io-index"
411
- checksum = "f2b12d017a929603d80db1831cd3a24082f8137ce19c69e6447f54f5fc8d692f"
412
- dependencies = [
413
- "anes",
414
- "cast",
415
- "ciborium",
416
- "clap 4.5.22",
417
- "criterion-plot",
418
- "is-terminal",
419
- "itertools 0.10.5",
420
- "num-traits",
421
- "once_cell",
422
- "oorandom",
423
- "plotters",
424
- "rayon",
425
- "regex",
426
- "serde",
427
- "serde_derive",
428
- "serde_json",
429
- "tinytemplate",
430
- "walkdir",
431
- ]
432
-
433
- [[package]]
434
- name = "criterion-plot"
435
- version = "0.5.0"
436
- source = "registry+https://github.com/rust-lang/crates.io-index"
437
- checksum = "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1"
438
- dependencies = [
439
- "cast",
440
- "itertools 0.10.5",
441
- ]
442
-
443
- [[package]]
444
- name = "crossbeam-channel"
445
- version = "0.5.13"
446
- source = "registry+https://github.com/rust-lang/crates.io-index"
447
- checksum = "33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2"
448
- dependencies = [
449
- "crossbeam-utils",
450
- ]
451
-
452
- [[package]]
453
- name = "crossbeam-deque"
454
- version = "0.8.5"
455
- source = "registry+https://github.com/rust-lang/crates.io-index"
456
- checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d"
457
- dependencies = [
458
- "crossbeam-epoch",
459
- "crossbeam-utils",
460
- ]
461
-
462
- [[package]]
463
- name = "crossbeam-epoch"
464
- version = "0.9.18"
465
- source = "registry+https://github.com/rust-lang/crates.io-index"
466
- checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e"
467
- dependencies = [
468
- "crossbeam-utils",
469
- ]
470
-
471
- [[package]]
472
- name = "crossbeam-utils"
473
- version = "0.8.20"
474
- source = "registry+https://github.com/rust-lang/crates.io-index"
475
- checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80"
476
-
477
- [[package]]
478
- name = "crunchy"
479
- version = "0.2.2"
480
- source = "registry+https://github.com/rust-lang/crates.io-index"
481
- checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7"
482
-
483
- [[package]]
484
- name = "cxx"
485
- version = "1.0.133"
486
- source = "registry+https://github.com/rust-lang/crates.io-index"
487
- checksum = "05e1ec88093d2abd9cf1b09ffd979136b8e922bf31cad966a8fe0d73233112ef"
488
- dependencies = [
489
- "cc",
490
- "cxxbridge-cmd",
491
- "cxxbridge-flags",
492
- "cxxbridge-macro",
493
- "foldhash",
494
- "link-cplusplus",
495
- ]
496
-
497
- [[package]]
498
- name = "cxx-build"
499
- version = "1.0.133"
500
- source = "registry+https://github.com/rust-lang/crates.io-index"
501
- checksum = "9afa390d956ee7ccb41aeed7ed7856ab3ffb4fc587e7216be7e0f83e949b4e6c"
502
- dependencies = [
503
- "cc",
504
- "codespan-reporting",
505
- "proc-macro2",
506
- "quote",
507
- "scratch",
508
- "syn 2.0.100",
509
- ]
510
-
511
- [[package]]
512
- name = "cxxbridge-cmd"
513
- version = "1.0.133"
514
- source = "registry+https://github.com/rust-lang/crates.io-index"
515
- checksum = "3c23bfff654d6227cbc83de8e059d2f8678ede5fc3a6c5a35d5c379983cc61e6"
516
- dependencies = [
517
- "clap 4.5.22",
518
- "codespan-reporting",
519
- "proc-macro2",
520
- "quote",
521
- "syn 2.0.100",
522
- ]
523
-
524
- [[package]]
525
- name = "cxxbridge-flags"
526
- version = "1.0.133"
527
- source = "registry+https://github.com/rust-lang/crates.io-index"
528
- checksum = "f7c01b36e22051bc6928a78583f1621abaaf7621561c2ada1b00f7878fbe2caa"
529
-
530
- [[package]]
531
- name = "cxxbridge-macro"
532
- version = "1.0.133"
533
- source = "registry+https://github.com/rust-lang/crates.io-index"
534
- checksum = "f6e14013136fac689345d17b9a6df55977251f11d333c0a571e8d963b55e1f95"
535
- dependencies = [
536
- "proc-macro2",
537
- "quote",
538
- "rustversion",
539
- "syn 2.0.100",
540
- ]
541
-
542
- [[package]]
543
- name = "dashmap"
544
- version = "6.1.0"
545
- source = "registry+https://github.com/rust-lang/crates.io-index"
546
- checksum = "5041cc499144891f3790297212f32a74fb938e5136a14943f338ef9e0ae276cf"
547
- dependencies = [
548
- "cfg-if",
549
- "crossbeam-utils",
550
- "hashbrown 0.14.5",
551
- "lock_api",
552
- "once_cell",
553
- "parking_lot_core",
554
- ]
555
-
556
- [[package]]
557
- name = "deranged"
558
- version = "0.3.11"
559
- source = "registry+https://github.com/rust-lang/crates.io-index"
560
- checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4"
561
- dependencies = [
562
- "powerfmt",
563
- ]
564
-
565
- [[package]]
566
- name = "derse"
567
- version = "0.1.32"
568
- source = "registry+https://github.com/rust-lang/crates.io-index"
569
- checksum = "ddcfe91e406c110568015f9cd5934396bcfdf745c3c265c00a6e5c381f0fcde5"
570
- dependencies = [
571
- "derse-derive",
572
- "thiserror",
573
- "tinyvec",
574
- ]
575
-
576
- [[package]]
577
- name = "derse-derive"
578
- version = "0.1.15"
579
- source = "registry+https://github.com/rust-lang/crates.io-index"
580
- checksum = "effbaf2997637f96a3b52502d1b4d8ca7a7f4a55a5206ef6d4d71712fa2368be"
581
- dependencies = [
582
- "proc-macro-crate",
583
- "proc-macro2",
584
- "quote",
585
- "syn 2.0.100",
586
- ]
587
-
588
- [[package]]
589
- name = "either"
590
- version = "1.13.0"
591
- source = "registry+https://github.com/rust-lang/crates.io-index"
592
- checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0"
593
-
594
- [[package]]
595
- name = "equivalent"
596
- version = "1.0.1"
597
- source = "registry+https://github.com/rust-lang/crates.io-index"
598
- checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5"
599
-
600
- [[package]]
601
- name = "errno"
602
- version = "0.3.10"
603
- source = "registry+https://github.com/rust-lang/crates.io-index"
604
- checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d"
605
- dependencies = [
606
- "libc",
607
- "windows-sys 0.59.0",
608
- ]
609
-
610
- [[package]]
611
- name = "fastrand"
612
- version = "2.2.0"
613
- source = "registry+https://github.com/rust-lang/crates.io-index"
614
- checksum = "486f806e73c5707928240ddc295403b1b93c96a02038563881c4a2fd84b81ac4"
615
-
616
- [[package]]
617
- name = "foldhash"
618
- version = "0.1.3"
619
- source = "registry+https://github.com/rust-lang/crates.io-index"
620
- checksum = "f81ec6369c545a7d40e4589b5597581fa1c441fe1cce96dd1de43159910a36a2"
621
-
622
- [[package]]
623
- name = "getrandom"
624
- version = "0.2.15"
625
- source = "registry+https://github.com/rust-lang/crates.io-index"
626
- checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7"
627
- dependencies = [
628
- "cfg-if",
629
- "libc",
630
- "wasi 0.11.0+wasi-snapshot-preview1",
631
- ]
632
-
633
- [[package]]
634
- name = "getrandom"
635
- version = "0.3.1"
636
- source = "registry+https://github.com/rust-lang/crates.io-index"
637
- checksum = "43a49c392881ce6d5c3b8cb70f98717b7c07aabbdff06687b9030dbfbe2725f8"
638
- dependencies = [
639
- "cfg-if",
640
- "libc",
641
- "wasi 0.13.3+wasi-0.2.2",
642
- "windows-targets",
643
- ]
644
-
645
- [[package]]
646
- name = "glob"
647
- version = "0.3.1"
648
- source = "registry+https://github.com/rust-lang/crates.io-index"
649
- checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b"
650
-
651
- [[package]]
652
- name = "half"
653
- version = "2.4.1"
654
- source = "registry+https://github.com/rust-lang/crates.io-index"
655
- checksum = "6dd08c532ae367adf81c312a4580bc67f1d0fe8bc9c460520283f4c0ff277888"
656
- dependencies = [
657
- "cfg-if",
658
- "crunchy",
659
- ]
660
-
661
- [[package]]
662
- name = "hashbrown"
663
- version = "0.14.5"
664
- source = "registry+https://github.com/rust-lang/crates.io-index"
665
- checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1"
666
-
667
- [[package]]
668
- name = "hashbrown"
669
- version = "0.15.2"
670
- source = "registry+https://github.com/rust-lang/crates.io-index"
671
- checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289"
672
-
673
- [[package]]
674
- name = "heck"
675
- version = "0.3.3"
676
- source = "registry+https://github.com/rust-lang/crates.io-index"
677
- checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c"
678
- dependencies = [
679
- "unicode-segmentation",
680
- ]
681
-
682
- [[package]]
683
- name = "heck"
684
- version = "0.5.0"
685
- source = "registry+https://github.com/rust-lang/crates.io-index"
686
- checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
687
-
688
- [[package]]
689
- name = "hermit-abi"
690
- version = "0.1.19"
691
- source = "registry+https://github.com/rust-lang/crates.io-index"
692
- checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
693
- dependencies = [
694
- "libc",
695
- ]
696
-
697
- [[package]]
698
- name = "hermit-abi"
699
- version = "0.4.0"
700
- source = "registry+https://github.com/rust-lang/crates.io-index"
701
- checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc"
702
-
703
- [[package]]
704
- name = "hf3fs-usrbio-sys"
705
- version = "0.1.0"
706
- dependencies = [
707
- "bindgen 0.71.1",
708
- "shared_memory",
709
- "uuid",
710
- ]
711
-
712
- [[package]]
713
- name = "iana-time-zone"
714
- version = "0.1.61"
715
- source = "registry+https://github.com/rust-lang/crates.io-index"
716
- checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220"
717
- dependencies = [
718
- "android_system_properties",
719
- "core-foundation-sys",
720
- "iana-time-zone-haiku",
721
- "js-sys",
722
- "wasm-bindgen",
723
- "windows-core",
724
- ]
725
-
726
- [[package]]
727
- name = "iana-time-zone-haiku"
728
- version = "0.1.2"
729
- source = "registry+https://github.com/rust-lang/crates.io-index"
730
- checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f"
731
- dependencies = [
732
- "cc",
733
- ]
734
-
735
- [[package]]
736
- name = "indexmap"
737
- version = "2.7.0"
738
- source = "registry+https://github.com/rust-lang/crates.io-index"
739
- checksum = "62f822373a4fe84d4bb149bf54e584a7f4abec90e072ed49cda0edea5b95471f"
740
- dependencies = [
741
- "equivalent",
742
- "hashbrown 0.15.2",
743
- ]
744
-
745
- [[package]]
746
- name = "is-terminal"
747
- version = "0.4.13"
748
- source = "registry+https://github.com/rust-lang/crates.io-index"
749
- checksum = "261f68e344040fbd0edea105bef17c66edf46f984ddb1115b775ce31be948f4b"
750
- dependencies = [
751
- "hermit-abi 0.4.0",
752
- "libc",
753
- "windows-sys 0.52.0",
754
- ]
755
-
756
- [[package]]
757
- name = "is_terminal_polyfill"
758
- version = "1.70.1"
759
- source = "registry+https://github.com/rust-lang/crates.io-index"
760
- checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf"
761
-
762
- [[package]]
763
- name = "itertools"
764
- version = "0.10.5"
765
- source = "registry+https://github.com/rust-lang/crates.io-index"
766
- checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473"
767
- dependencies = [
768
- "either",
769
- ]
770
-
771
- [[package]]
772
- name = "itertools"
773
- version = "0.12.1"
774
- source = "registry+https://github.com/rust-lang/crates.io-index"
775
- checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569"
776
- dependencies = [
777
- "either",
778
- ]
779
-
780
- [[package]]
781
- name = "itoa"
782
- version = "1.0.14"
783
- source = "registry+https://github.com/rust-lang/crates.io-index"
784
- checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674"
785
-
786
- [[package]]
787
- name = "jobserver"
788
- version = "0.1.32"
789
- source = "registry+https://github.com/rust-lang/crates.io-index"
790
- checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0"
791
- dependencies = [
792
- "libc",
793
- ]
794
-
795
- [[package]]
796
- name = "js-sys"
797
- version = "0.3.74"
798
- source = "registry+https://github.com/rust-lang/crates.io-index"
799
- checksum = "a865e038f7f6ed956f788f0d7d60c541fff74c7bd74272c5d4cf15c63743e705"
800
- dependencies = [
801
- "once_cell",
802
- "wasm-bindgen",
803
- ]
804
-
805
- [[package]]
806
- name = "lazy_static"
807
- version = "1.5.0"
808
- source = "registry+https://github.com/rust-lang/crates.io-index"
809
- checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
810
-
811
- [[package]]
812
- name = "lazycell"
813
- version = "1.3.0"
814
- source = "registry+https://github.com/rust-lang/crates.io-index"
815
- checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55"
816
-
817
- [[package]]
818
- name = "libc"
819
- version = "0.2.167"
820
- source = "registry+https://github.com/rust-lang/crates.io-index"
821
- checksum = "09d6582e104315a817dff97f75133544b2e094ee22447d2acf4a74e189ba06fc"
822
-
823
- [[package]]
824
- name = "libloading"
825
- version = "0.8.6"
826
- source = "registry+https://github.com/rust-lang/crates.io-index"
827
- checksum = "fc2f4eb4bc735547cfed7c0a4922cbd04a4655978c09b54f1f7b228750664c34"
828
- dependencies = [
829
- "cfg-if",
830
- "windows-targets",
831
- ]
832
-
833
- [[package]]
834
- name = "librocksdb-sys"
835
- version = "0.16.0+8.10.0"
836
- source = "registry+https://github.com/rust-lang/crates.io-index"
837
- checksum = "ce3d60bc059831dc1c83903fb45c103f75db65c5a7bf22272764d9cc683e348c"
838
- dependencies = [
839
- "bindgen 0.69.5",
840
- "bzip2-sys",
841
- "cc",
842
- "glob",
843
- "libc",
844
- "libz-sys",
845
- "lz4-sys",
846
- "zstd-sys",
847
- ]
848
-
849
- [[package]]
850
- name = "libz-sys"
851
- version = "1.1.20"
852
- source = "registry+https://github.com/rust-lang/crates.io-index"
853
- checksum = "d2d16453e800a8cf6dd2fc3eb4bc99b786a9b90c663b8559a5b1a041bf89e472"
854
- dependencies = [
855
- "cc",
856
- "pkg-config",
857
- "vcpkg",
858
- ]
859
-
860
- [[package]]
861
- name = "link-cplusplus"
862
- version = "1.0.9"
863
- source = "registry+https://github.com/rust-lang/crates.io-index"
864
- checksum = "9d240c6f7e1ba3a28b0249f774e6a9dd0175054b52dfbb61b16eb8505c3785c9"
865
- dependencies = [
866
- "cc",
867
- ]
868
-
869
- [[package]]
870
- name = "linux-raw-sys"
871
- version = "0.4.14"
872
- source = "registry+https://github.com/rust-lang/crates.io-index"
873
- checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89"
874
-
875
- [[package]]
876
- name = "lock_api"
877
- version = "0.4.12"
878
- source = "registry+https://github.com/rust-lang/crates.io-index"
879
- checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17"
880
- dependencies = [
881
- "autocfg",
882
- "scopeguard 1.2.0",
883
- ]
884
-
885
- [[package]]
886
- name = "lockmap"
887
- version = "0.1.6"
888
- source = "registry+https://github.com/rust-lang/crates.io-index"
889
- checksum = "8aaaea9efca9e51113b978e9c485d2d16603693b8c82fff6ebe585ebe253f451"
890
- dependencies = [
891
- "atomic-wait",
892
- ]
893
-
894
- [[package]]
895
- name = "log"
896
- version = "0.4.22"
897
- source = "registry+https://github.com/rust-lang/crates.io-index"
898
- checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24"
899
-
900
- [[package]]
901
- name = "lz4-sys"
902
- version = "1.11.1+lz4-1.10.0"
903
- source = "registry+https://github.com/rust-lang/crates.io-index"
904
- checksum = "6bd8c0d6c6ed0cd30b3652886bb8711dc4bb01d637a68105a3d5158039b418e6"
905
- dependencies = [
906
- "cc",
907
- "libc",
908
- ]
909
-
910
- [[package]]
911
- name = "memchr"
912
- version = "2.7.4"
913
- source = "registry+https://github.com/rust-lang/crates.io-index"
914
- checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
915
-
916
- [[package]]
917
- name = "memoffset"
918
- version = "0.6.5"
919
- source = "registry+https://github.com/rust-lang/crates.io-index"
920
- checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce"
921
- dependencies = [
922
- "autocfg",
923
- ]
924
-
925
- [[package]]
926
- name = "minimal-lexical"
927
- version = "0.2.1"
928
- source = "registry+https://github.com/rust-lang/crates.io-index"
929
- checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
930
-
931
- [[package]]
932
- name = "nix"
933
- version = "0.23.2"
934
- source = "registry+https://github.com/rust-lang/crates.io-index"
935
- checksum = "8f3790c00a0150112de0f4cd161e3d7fc4b2d8a5542ffc35f099a2562aecb35c"
936
- dependencies = [
937
- "bitflags 1.3.2",
938
- "cc",
939
- "cfg-if",
940
- "libc",
941
- "memoffset",
942
- ]
943
-
944
- [[package]]
945
- name = "nix"
946
- version = "0.29.0"
947
- source = "registry+https://github.com/rust-lang/crates.io-index"
948
- checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46"
949
- dependencies = [
950
- "bitflags 2.6.0",
951
- "cfg-if",
952
- "cfg_aliases",
953
- "libc",
954
- ]
955
-
956
- [[package]]
957
- name = "nom"
958
- version = "7.1.3"
959
- source = "registry+https://github.com/rust-lang/crates.io-index"
960
- checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a"
961
- dependencies = [
962
- "memchr",
963
- "minimal-lexical",
964
- ]
965
-
966
- [[package]]
967
- name = "nu-ansi-term"
968
- version = "0.46.0"
969
- source = "registry+https://github.com/rust-lang/crates.io-index"
970
- checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84"
971
- dependencies = [
972
- "overload",
973
- "winapi",
974
- ]
975
-
976
- [[package]]
977
- name = "num-conv"
978
- version = "0.1.0"
979
- source = "registry+https://github.com/rust-lang/crates.io-index"
980
- checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9"
981
-
982
- [[package]]
983
- name = "num-traits"
984
- version = "0.2.19"
985
- source = "registry+https://github.com/rust-lang/crates.io-index"
986
- checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
987
- dependencies = [
988
- "autocfg",
989
- ]
990
-
991
- [[package]]
992
- name = "once_cell"
993
- version = "1.20.2"
994
- source = "registry+https://github.com/rust-lang/crates.io-index"
995
- checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775"
996
-
997
- [[package]]
998
- name = "oorandom"
999
- version = "11.1.4"
1000
- source = "registry+https://github.com/rust-lang/crates.io-index"
1001
- checksum = "b410bbe7e14ab526a0e86877eb47c6996a2bd7746f027ba551028c925390e4e9"
1002
-
1003
- [[package]]
1004
- name = "overload"
1005
- version = "0.1.1"
1006
- source = "registry+https://github.com/rust-lang/crates.io-index"
1007
- checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39"
1008
-
1009
- [[package]]
1010
- name = "parking_lot_core"
1011
- version = "0.9.10"
1012
- source = "registry+https://github.com/rust-lang/crates.io-index"
1013
- checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8"
1014
- dependencies = [
1015
- "cfg-if",
1016
- "libc",
1017
- "redox_syscall",
1018
- "smallvec",
1019
- "windows-targets",
1020
- ]
1021
-
1022
- [[package]]
1023
- name = "pin-project-lite"
1024
- version = "0.2.15"
1025
- source = "registry+https://github.com/rust-lang/crates.io-index"
1026
- checksum = "915a1e146535de9163f3987b8944ed8cf49a18bb0056bcebcdcece385cece4ff"
1027
-
1028
- [[package]]
1029
- name = "pkg-config"
1030
- version = "0.3.31"
1031
- source = "registry+https://github.com/rust-lang/crates.io-index"
1032
- checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2"
1033
-
1034
- [[package]]
1035
- name = "plotters"
1036
- version = "0.3.7"
1037
- source = "registry+https://github.com/rust-lang/crates.io-index"
1038
- checksum = "5aeb6f403d7a4911efb1e33402027fc44f29b5bf6def3effcc22d7bb75f2b747"
1039
- dependencies = [
1040
- "num-traits",
1041
- "plotters-backend",
1042
- "plotters-svg",
1043
- "wasm-bindgen",
1044
- "web-sys",
1045
- ]
1046
-
1047
- [[package]]
1048
- name = "plotters-backend"
1049
- version = "0.3.7"
1050
- source = "registry+https://github.com/rust-lang/crates.io-index"
1051
- checksum = "df42e13c12958a16b3f7f4386b9ab1f3e7933914ecea48da7139435263a4172a"
1052
-
1053
- [[package]]
1054
- name = "plotters-svg"
1055
- version = "0.3.7"
1056
- source = "registry+https://github.com/rust-lang/crates.io-index"
1057
- checksum = "51bae2ac328883f7acdfea3d66a7c35751187f870bc81f94563733a154d7a670"
1058
- dependencies = [
1059
- "plotters-backend",
1060
- ]
1061
-
1062
- [[package]]
1063
- name = "powerfmt"
1064
- version = "0.2.0"
1065
- source = "registry+https://github.com/rust-lang/crates.io-index"
1066
- checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391"
1067
-
1068
- [[package]]
1069
- name = "ppv-lite86"
1070
- version = "0.2.20"
1071
- source = "registry+https://github.com/rust-lang/crates.io-index"
1072
- checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04"
1073
- dependencies = [
1074
- "zerocopy",
1075
- ]
1076
-
1077
- [[package]]
1078
- name = "prettyplease"
1079
- version = "0.2.30"
1080
- source = "registry+https://github.com/rust-lang/crates.io-index"
1081
- checksum = "f1ccf34da56fc294e7d4ccf69a85992b7dfb826b7cf57bac6a70bba3494cc08a"
1082
- dependencies = [
1083
- "proc-macro2",
1084
- "syn 2.0.100",
1085
- ]
1086
-
1087
- [[package]]
1088
- name = "proc-macro-crate"
1089
- version = "3.2.0"
1090
- source = "registry+https://github.com/rust-lang/crates.io-index"
1091
- checksum = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b"
1092
- dependencies = [
1093
- "toml_edit",
1094
- ]
1095
-
1096
- [[package]]
1097
- name = "proc-macro-error"
1098
- version = "1.0.4"
1099
- source = "registry+https://github.com/rust-lang/crates.io-index"
1100
- checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
1101
- dependencies = [
1102
- "proc-macro-error-attr",
1103
- "proc-macro2",
1104
- "quote",
1105
- "syn 1.0.109",
1106
- "version_check",
1107
- ]
1108
-
1109
- [[package]]
1110
- name = "proc-macro-error-attr"
1111
- version = "1.0.4"
1112
- source = "registry+https://github.com/rust-lang/crates.io-index"
1113
- checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
1114
- dependencies = [
1115
- "proc-macro2",
1116
- "quote",
1117
- "version_check",
1118
- ]
1119
-
1120
- [[package]]
1121
- name = "proc-macro2"
1122
- version = "1.0.92"
1123
- source = "registry+https://github.com/rust-lang/crates.io-index"
1124
- checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0"
1125
- dependencies = [
1126
- "unicode-ident",
1127
- ]
1128
-
1129
- [[package]]
1130
- name = "quote"
1131
- version = "1.0.37"
1132
- source = "registry+https://github.com/rust-lang/crates.io-index"
1133
- checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af"
1134
- dependencies = [
1135
- "proc-macro2",
1136
- ]
1137
-
1138
- [[package]]
1139
- name = "rand"
1140
- version = "0.8.5"
1141
- source = "registry+https://github.com/rust-lang/crates.io-index"
1142
- checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
1143
- dependencies = [
1144
- "libc",
1145
- "rand_chacha",
1146
- "rand_core",
1147
- ]
1148
-
1149
- [[package]]
1150
- name = "rand_chacha"
1151
- version = "0.3.1"
1152
- source = "registry+https://github.com/rust-lang/crates.io-index"
1153
- checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
1154
- dependencies = [
1155
- "ppv-lite86",
1156
- "rand_core",
1157
- ]
1158
-
1159
- [[package]]
1160
- name = "rand_core"
1161
- version = "0.6.4"
1162
- source = "registry+https://github.com/rust-lang/crates.io-index"
1163
- checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
1164
- dependencies = [
1165
- "getrandom 0.2.15",
1166
- ]
1167
-
1168
- [[package]]
1169
- name = "rayon"
1170
- version = "1.10.0"
1171
- source = "registry+https://github.com/rust-lang/crates.io-index"
1172
- checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa"
1173
- dependencies = [
1174
- "either",
1175
- "rayon-core",
1176
- ]
1177
-
1178
- [[package]]
1179
- name = "rayon-core"
1180
- version = "1.12.1"
1181
- source = "registry+https://github.com/rust-lang/crates.io-index"
1182
- checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2"
1183
- dependencies = [
1184
- "crossbeam-deque",
1185
- "crossbeam-utils",
1186
- ]
1187
-
1188
- [[package]]
1189
- name = "redox_syscall"
1190
- version = "0.5.7"
1191
- source = "registry+https://github.com/rust-lang/crates.io-index"
1192
- checksum = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f"
1193
- dependencies = [
1194
- "bitflags 2.6.0",
1195
- ]
1196
-
1197
- [[package]]
1198
- name = "regex"
1199
- version = "1.11.1"
1200
- source = "registry+https://github.com/rust-lang/crates.io-index"
1201
- checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191"
1202
- dependencies = [
1203
- "aho-corasick",
1204
- "memchr",
1205
- "regex-automata",
1206
- "regex-syntax",
1207
- ]
1208
-
1209
- [[package]]
1210
- name = "regex-automata"
1211
- version = "0.4.9"
1212
- source = "registry+https://github.com/rust-lang/crates.io-index"
1213
- checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908"
1214
- dependencies = [
1215
- "aho-corasick",
1216
- "memchr",
1217
- "regex-syntax",
1218
- ]
1219
-
1220
- [[package]]
1221
- name = "regex-syntax"
1222
- version = "0.8.5"
1223
- source = "registry+https://github.com/rust-lang/crates.io-index"
1224
- checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c"
1225
-
1226
- [[package]]
1227
- name = "rocksdb"
1228
- version = "0.22.0"
1229
- source = "registry+https://github.com/rust-lang/crates.io-index"
1230
- checksum = "6bd13e55d6d7b8cd0ea569161127567cd587676c99f4472f779a0279aa60a7a7"
1231
- dependencies = [
1232
- "libc",
1233
- "librocksdb-sys",
1234
- ]
1235
-
1236
- [[package]]
1237
- name = "rolling-file"
1238
- version = "0.2.0"
1239
- source = "registry+https://github.com/rust-lang/crates.io-index"
1240
- checksum = "8395b4f860856b740f20a296ea2cd4d823e81a2658cf05ef61be22916026a906"
1241
- dependencies = [
1242
- "chrono",
1243
- ]
1244
-
1245
- [[package]]
1246
- name = "rustc-hash"
1247
- version = "1.1.0"
1248
- source = "registry+https://github.com/rust-lang/crates.io-index"
1249
- checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2"
1250
-
1251
- [[package]]
1252
- name = "rustc-hash"
1253
- version = "2.1.1"
1254
- source = "registry+https://github.com/rust-lang/crates.io-index"
1255
- checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d"
1256
-
1257
- [[package]]
1258
- name = "rustc_version"
1259
- version = "0.4.1"
1260
- source = "registry+https://github.com/rust-lang/crates.io-index"
1261
- checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92"
1262
- dependencies = [
1263
- "semver",
1264
- ]
1265
-
1266
- [[package]]
1267
- name = "rustix"
1268
- version = "0.38.41"
1269
- source = "registry+https://github.com/rust-lang/crates.io-index"
1270
- checksum = "d7f649912bc1495e167a6edee79151c84b1bad49748cb4f1f1167f459f6224f6"
1271
- dependencies = [
1272
- "bitflags 2.6.0",
1273
- "errno",
1274
- "libc",
1275
- "linux-raw-sys",
1276
- "windows-sys 0.52.0",
1277
- ]
1278
-
1279
- [[package]]
1280
- name = "rustversion"
1281
- version = "1.0.18"
1282
- source = "registry+https://github.com/rust-lang/crates.io-index"
1283
- checksum = "0e819f2bc632f285be6d7cd36e25940d45b2391dd6d9b939e79de557f7014248"
1284
-
1285
- [[package]]
1286
- name = "ryu"
1287
- version = "1.0.18"
1288
- source = "registry+https://github.com/rust-lang/crates.io-index"
1289
- checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f"
1290
-
1291
- [[package]]
1292
- name = "same-file"
1293
- version = "1.0.6"
1294
- source = "registry+https://github.com/rust-lang/crates.io-index"
1295
- checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
1296
- dependencies = [
1297
- "winapi-util",
1298
- ]
1299
-
1300
- [[package]]
1301
- name = "scopeguard"
1302
- version = "0.3.3"
1303
- source = "registry+https://github.com/rust-lang/crates.io-index"
1304
- checksum = "94258f53601af11e6a49f722422f6e3425c52b06245a5cf9bc09908b174f5e27"
1305
-
1306
- [[package]]
1307
- name = "scopeguard"
1308
- version = "1.2.0"
1309
- source = "registry+https://github.com/rust-lang/crates.io-index"
1310
- checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
1311
-
1312
- [[package]]
1313
- name = "scratch"
1314
- version = "1.0.7"
1315
- source = "registry+https://github.com/rust-lang/crates.io-index"
1316
- checksum = "a3cf7c11c38cb994f3d40e8a8cde3bbd1f72a435e4c49e85d6553d8312306152"
1317
-
1318
- [[package]]
1319
- name = "semver"
1320
- version = "1.0.23"
1321
- source = "registry+https://github.com/rust-lang/crates.io-index"
1322
- checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b"
1323
-
1324
- [[package]]
1325
- name = "serde"
1326
- version = "1.0.215"
1327
- source = "registry+https://github.com/rust-lang/crates.io-index"
1328
- checksum = "6513c1ad0b11a9376da888e3e0baa0077f1aed55c17f50e7b2397136129fb88f"
1329
- dependencies = [
1330
- "serde_derive",
1331
- ]
1332
-
1333
- [[package]]
1334
- name = "serde_derive"
1335
- version = "1.0.215"
1336
- source = "registry+https://github.com/rust-lang/crates.io-index"
1337
- checksum = "ad1e866f866923f252f05c889987993144fb74e722403468a4ebd70c3cd756c0"
1338
- dependencies = [
1339
- "proc-macro2",
1340
- "quote",
1341
- "syn 2.0.100",
1342
- ]
1343
-
1344
- [[package]]
1345
- name = "serde_json"
1346
- version = "1.0.133"
1347
- source = "registry+https://github.com/rust-lang/crates.io-index"
1348
- checksum = "c7fceb2473b9166b2294ef05efcb65a3db80803f0b03ef86a5fc88a2b85ee377"
1349
- dependencies = [
1350
- "itoa",
1351
- "memchr",
1352
- "ryu",
1353
- "serde",
1354
- ]
1355
-
1356
- [[package]]
1357
- name = "serde_spanned"
1358
- version = "0.6.8"
1359
- source = "registry+https://github.com/rust-lang/crates.io-index"
1360
- checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1"
1361
- dependencies = [
1362
- "serde",
1363
- ]
1364
-
1365
- [[package]]
1366
- name = "sharded-slab"
1367
- version = "0.1.7"
1368
- source = "registry+https://github.com/rust-lang/crates.io-index"
1369
- checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6"
1370
- dependencies = [
1371
- "lazy_static",
1372
- ]
1373
-
1374
- [[package]]
1375
- name = "shared_memory"
1376
- version = "0.12.4"
1377
- source = "registry+https://github.com/rust-lang/crates.io-index"
1378
- checksum = "ba8593196da75d9dc4f69349682bd4c2099f8cde114257d1ef7ef1b33d1aba54"
1379
- dependencies = [
1380
- "cfg-if",
1381
- "libc",
1382
- "nix 0.23.2",
1383
- "rand",
1384
- "win-sys",
1385
- ]
1386
-
1387
- [[package]]
1388
- name = "shlex"
1389
- version = "1.3.0"
1390
- source = "registry+https://github.com/rust-lang/crates.io-index"
1391
- checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
1392
-
1393
- [[package]]
1394
- name = "smallvec"
1395
- version = "1.13.2"
1396
- source = "registry+https://github.com/rust-lang/crates.io-index"
1397
- checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67"
1398
-
1399
- [[package]]
1400
- name = "static_assertions"
1401
- version = "1.1.0"
1402
- source = "registry+https://github.com/rust-lang/crates.io-index"
1403
- checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
1404
-
1405
- [[package]]
1406
- name = "strsim"
1407
- version = "0.8.0"
1408
- source = "registry+https://github.com/rust-lang/crates.io-index"
1409
- checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a"
1410
-
1411
- [[package]]
1412
- name = "strsim"
1413
- version = "0.11.1"
1414
- source = "registry+https://github.com/rust-lang/crates.io-index"
1415
- checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
1416
-
1417
- [[package]]
1418
- name = "structopt"
1419
- version = "0.3.26"
1420
- source = "registry+https://github.com/rust-lang/crates.io-index"
1421
- checksum = "0c6b5c64445ba8094a6ab0c3cd2ad323e07171012d9c98b0b15651daf1787a10"
1422
- dependencies = [
1423
- "clap 2.34.0",
1424
- "lazy_static",
1425
- "structopt-derive",
1426
- ]
1427
-
1428
- [[package]]
1429
- name = "structopt-derive"
1430
- version = "0.4.18"
1431
- source = "registry+https://github.com/rust-lang/crates.io-index"
1432
- checksum = "dcb5ae327f9cc13b68763b5749770cb9e048a99bd9dfdfa58d0cf05d5f64afe0"
1433
- dependencies = [
1434
- "heck 0.3.3",
1435
- "proc-macro-error",
1436
- "proc-macro2",
1437
- "quote",
1438
- "syn 1.0.109",
1439
- ]
1440
-
1441
- [[package]]
1442
- name = "syn"
1443
- version = "1.0.109"
1444
- source = "registry+https://github.com/rust-lang/crates.io-index"
1445
- checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
1446
- dependencies = [
1447
- "proc-macro2",
1448
- "quote",
1449
- "unicode-ident",
1450
- ]
1451
-
1452
- [[package]]
1453
- name = "syn"
1454
- version = "2.0.100"
1455
- source = "registry+https://github.com/rust-lang/crates.io-index"
1456
- checksum = "b09a44accad81e1ba1cd74a32461ba89dee89095ba17b32f5d03683b1b1fc2a0"
1457
- dependencies = [
1458
- "proc-macro2",
1459
- "quote",
1460
- "unicode-ident",
1461
- ]
1462
-
1463
- [[package]]
1464
- name = "tempfile"
1465
- version = "3.14.0"
1466
- source = "registry+https://github.com/rust-lang/crates.io-index"
1467
- checksum = "28cce251fcbc87fac86a866eeb0d6c2d536fc16d06f184bb61aeae11aa4cee0c"
1468
- dependencies = [
1469
- "cfg-if",
1470
- "fastrand",
1471
- "once_cell",
1472
- "rustix",
1473
- "windows-sys 0.59.0",
1474
- ]
1475
-
1476
- [[package]]
1477
- name = "termcolor"
1478
- version = "1.4.1"
1479
- source = "registry+https://github.com/rust-lang/crates.io-index"
1480
- checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755"
1481
- dependencies = [
1482
- "winapi-util",
1483
- ]
1484
-
1485
- [[package]]
1486
- name = "textwrap"
1487
- version = "0.11.0"
1488
- source = "registry+https://github.com/rust-lang/crates.io-index"
1489
- checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060"
1490
- dependencies = [
1491
- "unicode-width",
1492
- ]
1493
-
1494
- [[package]]
1495
- name = "thiserror"
1496
- version = "1.0.69"
1497
- source = "registry+https://github.com/rust-lang/crates.io-index"
1498
- checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52"
1499
- dependencies = [
1500
- "thiserror-impl",
1501
- ]
1502
-
1503
- [[package]]
1504
- name = "thiserror-impl"
1505
- version = "1.0.69"
1506
- source = "registry+https://github.com/rust-lang/crates.io-index"
1507
- checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1"
1508
- dependencies = [
1509
- "proc-macro2",
1510
- "quote",
1511
- "syn 2.0.100",
1512
- ]
1513
-
1514
- [[package]]
1515
- name = "thread_local"
1516
- version = "1.1.8"
1517
- source = "registry+https://github.com/rust-lang/crates.io-index"
1518
- checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c"
1519
- dependencies = [
1520
- "cfg-if",
1521
- "once_cell",
1522
- ]
1523
-
1524
- [[package]]
1525
- name = "time"
1526
- version = "0.3.37"
1527
- source = "registry+https://github.com/rust-lang/crates.io-index"
1528
- checksum = "35e7868883861bd0e56d9ac6efcaaca0d6d5d82a2a7ec8209ff492c07cf37b21"
1529
- dependencies = [
1530
- "deranged",
1531
- "itoa",
1532
- "num-conv",
1533
- "powerfmt",
1534
- "serde",
1535
- "time-core",
1536
- "time-macros",
1537
- ]
1538
-
1539
- [[package]]
1540
- name = "time-core"
1541
- version = "0.1.2"
1542
- source = "registry+https://github.com/rust-lang/crates.io-index"
1543
- checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3"
1544
-
1545
- [[package]]
1546
- name = "time-macros"
1547
- version = "0.2.19"
1548
- source = "registry+https://github.com/rust-lang/crates.io-index"
1549
- checksum = "2834e6017e3e5e4b9834939793b282bc03b37a3336245fa820e35e233e2a85de"
1550
- dependencies = [
1551
- "num-conv",
1552
- "time-core",
1553
- ]
1554
-
1555
- [[package]]
1556
- name = "tinytemplate"
1557
- version = "1.2.1"
1558
- source = "registry+https://github.com/rust-lang/crates.io-index"
1559
- checksum = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc"
1560
- dependencies = [
1561
- "serde",
1562
- "serde_json",
1563
- ]
1564
-
1565
- [[package]]
1566
- name = "tinyvec"
1567
- version = "1.8.0"
1568
- source = "registry+https://github.com/rust-lang/crates.io-index"
1569
- checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938"
1570
- dependencies = [
1571
- "tinyvec_macros",
1572
- ]
1573
-
1574
- [[package]]
1575
- name = "tinyvec_macros"
1576
- version = "0.1.1"
1577
- source = "registry+https://github.com/rust-lang/crates.io-index"
1578
- checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
1579
-
1580
- [[package]]
1581
- name = "toml"
1582
- version = "0.8.19"
1583
- source = "registry+https://github.com/rust-lang/crates.io-index"
1584
- checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e"
1585
- dependencies = [
1586
- "serde",
1587
- "serde_spanned",
1588
- "toml_datetime",
1589
- "toml_edit",
1590
- ]
1591
-
1592
- [[package]]
1593
- name = "toml_datetime"
1594
- version = "0.6.8"
1595
- source = "registry+https://github.com/rust-lang/crates.io-index"
1596
- checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41"
1597
- dependencies = [
1598
- "serde",
1599
- ]
1600
-
1601
- [[package]]
1602
- name = "toml_edit"
1603
- version = "0.22.22"
1604
- source = "registry+https://github.com/rust-lang/crates.io-index"
1605
- checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5"
1606
- dependencies = [
1607
- "indexmap",
1608
- "serde",
1609
- "serde_spanned",
1610
- "toml_datetime",
1611
- "winnow",
1612
- ]
1613
-
1614
- [[package]]
1615
- name = "tracing"
1616
- version = "0.1.41"
1617
- source = "registry+https://github.com/rust-lang/crates.io-index"
1618
- checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0"
1619
- dependencies = [
1620
- "pin-project-lite",
1621
- "tracing-attributes",
1622
- "tracing-core",
1623
- ]
1624
-
1625
- [[package]]
1626
- name = "tracing-appender"
1627
- version = "0.2.3"
1628
- source = "registry+https://github.com/rust-lang/crates.io-index"
1629
- checksum = "3566e8ce28cc0a3fe42519fc80e6b4c943cc4c8cef275620eb8dac2d3d4e06cf"
1630
- dependencies = [
1631
- "crossbeam-channel",
1632
- "thiserror",
1633
- "time",
1634
- "tracing-subscriber",
1635
- ]
1636
-
1637
- [[package]]
1638
- name = "tracing-attributes"
1639
- version = "0.1.28"
1640
- source = "registry+https://github.com/rust-lang/crates.io-index"
1641
- checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d"
1642
- dependencies = [
1643
- "proc-macro2",
1644
- "quote",
1645
- "syn 2.0.100",
1646
- ]
1647
-
1648
- [[package]]
1649
- name = "tracing-core"
1650
- version = "0.1.33"
1651
- source = "registry+https://github.com/rust-lang/crates.io-index"
1652
- checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c"
1653
- dependencies = [
1654
- "once_cell",
1655
- "valuable",
1656
- ]
1657
-
1658
- [[package]]
1659
- name = "tracing-log"
1660
- version = "0.2.0"
1661
- source = "registry+https://github.com/rust-lang/crates.io-index"
1662
- checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3"
1663
- dependencies = [
1664
- "log",
1665
- "once_cell",
1666
- "tracing-core",
1667
- ]
1668
-
1669
- [[package]]
1670
- name = "tracing-serde"
1671
- version = "0.2.0"
1672
- source = "registry+https://github.com/rust-lang/crates.io-index"
1673
- checksum = "704b1aeb7be0d0a84fc9828cae51dab5970fee5088f83d1dd7ee6f6246fc6ff1"
1674
- dependencies = [
1675
- "serde",
1676
- "tracing-core",
1677
- ]
1678
-
1679
- [[package]]
1680
- name = "tracing-subscriber"
1681
- version = "0.3.19"
1682
- source = "registry+https://github.com/rust-lang/crates.io-index"
1683
- checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008"
1684
- dependencies = [
1685
- "chrono",
1686
- "nu-ansi-term",
1687
- "serde",
1688
- "serde_json",
1689
- "sharded-slab",
1690
- "smallvec",
1691
- "thread_local",
1692
- "tracing-core",
1693
- "tracing-log",
1694
- "tracing-serde",
1695
- ]
1696
-
1697
- [[package]]
1698
- name = "trash_cleaner"
1699
- version = "0.1.0"
1700
- dependencies = [
1701
- "chrono",
1702
- "libc",
1703
- "nix 0.29.0",
1704
- "scopeguard 0.3.3",
1705
- "serde",
1706
- "serde_json",
1707
- "structopt",
1708
- "tempfile",
1709
- "tracing",
1710
- "tracing-appender",
1711
- "tracing-subscriber",
1712
- ]
1713
-
1714
- [[package]]
1715
- name = "unicode-ident"
1716
- version = "1.0.14"
1717
- source = "registry+https://github.com/rust-lang/crates.io-index"
1718
- checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83"
1719
-
1720
- [[package]]
1721
- name = "unicode-segmentation"
1722
- version = "1.12.0"
1723
- source = "registry+https://github.com/rust-lang/crates.io-index"
1724
- checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493"
1725
-
1726
- [[package]]
1727
- name = "unicode-width"
1728
- version = "0.1.14"
1729
- source = "registry+https://github.com/rust-lang/crates.io-index"
1730
- checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af"
1731
-
1732
- [[package]]
1733
- name = "utf8parse"
1734
- version = "0.2.2"
1735
- source = "registry+https://github.com/rust-lang/crates.io-index"
1736
- checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821"
1737
-
1738
- [[package]]
1739
- name = "uuid"
1740
- version = "1.15.1"
1741
- source = "registry+https://github.com/rust-lang/crates.io-index"
1742
- checksum = "e0f540e3240398cce6128b64ba83fdbdd86129c16a3aa1a3a252efd66eb3d587"
1743
- dependencies = [
1744
- "getrandom 0.3.1",
1745
- ]
1746
-
1747
- [[package]]
1748
- name = "valuable"
1749
- version = "0.1.0"
1750
- source = "registry+https://github.com/rust-lang/crates.io-index"
1751
- checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d"
1752
-
1753
- [[package]]
1754
- name = "vcpkg"
1755
- version = "0.2.15"
1756
- source = "registry+https://github.com/rust-lang/crates.io-index"
1757
- checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
1758
-
1759
- [[package]]
1760
- name = "vec_map"
1761
- version = "0.8.2"
1762
- source = "registry+https://github.com/rust-lang/crates.io-index"
1763
- checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191"
1764
-
1765
- [[package]]
1766
- name = "version_check"
1767
- version = "0.9.5"
1768
- source = "registry+https://github.com/rust-lang/crates.io-index"
1769
- checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
1770
-
1771
- [[package]]
1772
- name = "walkdir"
1773
- version = "2.5.0"
1774
- source = "registry+https://github.com/rust-lang/crates.io-index"
1775
- checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b"
1776
- dependencies = [
1777
- "same-file",
1778
- "winapi-util",
1779
- ]
1780
-
1781
- [[package]]
1782
- name = "wasi"
1783
- version = "0.11.0+wasi-snapshot-preview1"
1784
- source = "registry+https://github.com/rust-lang/crates.io-index"
1785
- checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
1786
-
1787
- [[package]]
1788
- name = "wasi"
1789
- version = "0.13.3+wasi-0.2.2"
1790
- source = "registry+https://github.com/rust-lang/crates.io-index"
1791
- checksum = "26816d2e1a4a36a2940b96c5296ce403917633dff8f3440e9b236ed6f6bacad2"
1792
- dependencies = [
1793
- "wit-bindgen-rt",
1794
- ]
1795
-
1796
- [[package]]
1797
- name = "wasm-bindgen"
1798
- version = "0.2.97"
1799
- source = "registry+https://github.com/rust-lang/crates.io-index"
1800
- checksum = "d15e63b4482863c109d70a7b8706c1e364eb6ea449b201a76c5b89cedcec2d5c"
1801
- dependencies = [
1802
- "cfg-if",
1803
- "once_cell",
1804
- "wasm-bindgen-macro",
1805
- ]
1806
-
1807
- [[package]]
1808
- name = "wasm-bindgen-backend"
1809
- version = "0.2.97"
1810
- source = "registry+https://github.com/rust-lang/crates.io-index"
1811
- checksum = "8d36ef12e3aaca16ddd3f67922bc63e48e953f126de60bd33ccc0101ef9998cd"
1812
- dependencies = [
1813
- "bumpalo",
1814
- "log",
1815
- "once_cell",
1816
- "proc-macro2",
1817
- "quote",
1818
- "syn 2.0.100",
1819
- "wasm-bindgen-shared",
1820
- ]
1821
-
1822
- [[package]]
1823
- name = "wasm-bindgen-macro"
1824
- version = "0.2.97"
1825
- source = "registry+https://github.com/rust-lang/crates.io-index"
1826
- checksum = "705440e08b42d3e4b36de7d66c944be628d579796b8090bfa3471478a2260051"
1827
- dependencies = [
1828
- "quote",
1829
- "wasm-bindgen-macro-support",
1830
- ]
1831
-
1832
- [[package]]
1833
- name = "wasm-bindgen-macro-support"
1834
- version = "0.2.97"
1835
- source = "registry+https://github.com/rust-lang/crates.io-index"
1836
- checksum = "98c9ae5a76e46f4deecd0f0255cc223cfa18dc9b261213b8aa0c7b36f61b3f1d"
1837
- dependencies = [
1838
- "proc-macro2",
1839
- "quote",
1840
- "syn 2.0.100",
1841
- "wasm-bindgen-backend",
1842
- "wasm-bindgen-shared",
1843
- ]
1844
-
1845
- [[package]]
1846
- name = "wasm-bindgen-shared"
1847
- version = "0.2.97"
1848
- source = "registry+https://github.com/rust-lang/crates.io-index"
1849
- checksum = "6ee99da9c5ba11bd675621338ef6fa52296b76b83305e9b6e5c77d4c286d6d49"
1850
-
1851
- [[package]]
1852
- name = "web-sys"
1853
- version = "0.3.74"
1854
- source = "registry+https://github.com/rust-lang/crates.io-index"
1855
- checksum = "a98bc3c33f0fe7e59ad7cd041b89034fa82a7c2d4365ca538dda6cdaf513863c"
1856
- dependencies = [
1857
- "js-sys",
1858
- "wasm-bindgen",
1859
- ]
1860
-
1861
- [[package]]
1862
- name = "win-sys"
1863
- version = "0.3.1"
1864
- source = "registry+https://github.com/rust-lang/crates.io-index"
1865
- checksum = "5b7b128a98c1cfa201b09eb49ba285887deb3cbe7466a98850eb1adabb452be5"
1866
- dependencies = [
1867
- "windows",
1868
- ]
1869
-
1870
- [[package]]
1871
- name = "winapi"
1872
- version = "0.3.9"
1873
- source = "registry+https://github.com/rust-lang/crates.io-index"
1874
- checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
1875
- dependencies = [
1876
- "winapi-i686-pc-windows-gnu",
1877
- "winapi-x86_64-pc-windows-gnu",
1878
- ]
1879
-
1880
- [[package]]
1881
- name = "winapi-i686-pc-windows-gnu"
1882
- version = "0.4.0"
1883
- source = "registry+https://github.com/rust-lang/crates.io-index"
1884
- checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
1885
-
1886
- [[package]]
1887
- name = "winapi-util"
1888
- version = "0.1.9"
1889
- source = "registry+https://github.com/rust-lang/crates.io-index"
1890
- checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb"
1891
- dependencies = [
1892
- "windows-sys 0.59.0",
1893
- ]
1894
-
1895
- [[package]]
1896
- name = "winapi-x86_64-pc-windows-gnu"
1897
- version = "0.4.0"
1898
- source = "registry+https://github.com/rust-lang/crates.io-index"
1899
- checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
1900
-
1901
- [[package]]
1902
- name = "windows"
1903
- version = "0.34.0"
1904
- source = "registry+https://github.com/rust-lang/crates.io-index"
1905
- checksum = "45296b64204227616fdbf2614cefa4c236b98ee64dfaaaa435207ed99fe7829f"
1906
- dependencies = [
1907
- "windows_aarch64_msvc 0.34.0",
1908
- "windows_i686_gnu 0.34.0",
1909
- "windows_i686_msvc 0.34.0",
1910
- "windows_x86_64_gnu 0.34.0",
1911
- "windows_x86_64_msvc 0.34.0",
1912
- ]
1913
-
1914
- [[package]]
1915
- name = "windows-core"
1916
- version = "0.52.0"
1917
- source = "registry+https://github.com/rust-lang/crates.io-index"
1918
- checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9"
1919
- dependencies = [
1920
- "windows-targets",
1921
- ]
1922
-
1923
- [[package]]
1924
- name = "windows-sys"
1925
- version = "0.42.0"
1926
- source = "registry+https://github.com/rust-lang/crates.io-index"
1927
- checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7"
1928
- dependencies = [
1929
- "windows_aarch64_gnullvm 0.42.2",
1930
- "windows_aarch64_msvc 0.42.2",
1931
- "windows_i686_gnu 0.42.2",
1932
- "windows_i686_msvc 0.42.2",
1933
- "windows_x86_64_gnu 0.42.2",
1934
- "windows_x86_64_gnullvm 0.42.2",
1935
- "windows_x86_64_msvc 0.42.2",
1936
- ]
1937
-
1938
- [[package]]
1939
- name = "windows-sys"
1940
- version = "0.52.0"
1941
- source = "registry+https://github.com/rust-lang/crates.io-index"
1942
- checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
1943
- dependencies = [
1944
- "windows-targets",
1945
- ]
1946
-
1947
- [[package]]
1948
- name = "windows-sys"
1949
- version = "0.59.0"
1950
- source = "registry+https://github.com/rust-lang/crates.io-index"
1951
- checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b"
1952
- dependencies = [
1953
- "windows-targets",
1954
- ]
1955
-
1956
- [[package]]
1957
- name = "windows-targets"
1958
- version = "0.52.6"
1959
- source = "registry+https://github.com/rust-lang/crates.io-index"
1960
- checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
1961
- dependencies = [
1962
- "windows_aarch64_gnullvm 0.52.6",
1963
- "windows_aarch64_msvc 0.52.6",
1964
- "windows_i686_gnu 0.52.6",
1965
- "windows_i686_gnullvm",
1966
- "windows_i686_msvc 0.52.6",
1967
- "windows_x86_64_gnu 0.52.6",
1968
- "windows_x86_64_gnullvm 0.52.6",
1969
- "windows_x86_64_msvc 0.52.6",
1970
- ]
1971
-
1972
- [[package]]
1973
- name = "windows_aarch64_gnullvm"
1974
- version = "0.42.2"
1975
- source = "registry+https://github.com/rust-lang/crates.io-index"
1976
- checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8"
1977
-
1978
- [[package]]
1979
- name = "windows_aarch64_gnullvm"
1980
- version = "0.52.6"
1981
- source = "registry+https://github.com/rust-lang/crates.io-index"
1982
- checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
1983
-
1984
- [[package]]
1985
- name = "windows_aarch64_msvc"
1986
- version = "0.34.0"
1987
- source = "registry+https://github.com/rust-lang/crates.io-index"
1988
- checksum = "17cffbe740121affb56fad0fc0e421804adf0ae00891205213b5cecd30db881d"
1989
-
1990
- [[package]]
1991
- name = "windows_aarch64_msvc"
1992
- version = "0.42.2"
1993
- source = "registry+https://github.com/rust-lang/crates.io-index"
1994
- checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43"
1995
-
1996
- [[package]]
1997
- name = "windows_aarch64_msvc"
1998
- version = "0.52.6"
1999
- source = "registry+https://github.com/rust-lang/crates.io-index"
2000
- checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
2001
-
2002
- [[package]]
2003
- name = "windows_i686_gnu"
2004
- version = "0.34.0"
2005
- source = "registry+https://github.com/rust-lang/crates.io-index"
2006
- checksum = "2564fde759adb79129d9b4f54be42b32c89970c18ebf93124ca8870a498688ed"
2007
-
2008
- [[package]]
2009
- name = "windows_i686_gnu"
2010
- version = "0.42.2"
2011
- source = "registry+https://github.com/rust-lang/crates.io-index"
2012
- checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f"
2013
-
2014
- [[package]]
2015
- name = "windows_i686_gnu"
2016
- version = "0.52.6"
2017
- source = "registry+https://github.com/rust-lang/crates.io-index"
2018
- checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
2019
-
2020
- [[package]]
2021
- name = "windows_i686_gnullvm"
2022
- version = "0.52.6"
2023
- source = "registry+https://github.com/rust-lang/crates.io-index"
2024
- checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
2025
-
2026
- [[package]]
2027
- name = "windows_i686_msvc"
2028
- version = "0.34.0"
2029
- source = "registry+https://github.com/rust-lang/crates.io-index"
2030
- checksum = "9cd9d32ba70453522332c14d38814bceeb747d80b3958676007acadd7e166956"
2031
-
2032
- [[package]]
2033
- name = "windows_i686_msvc"
2034
- version = "0.42.2"
2035
- source = "registry+https://github.com/rust-lang/crates.io-index"
2036
- checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060"
2037
-
2038
- [[package]]
2039
- name = "windows_i686_msvc"
2040
- version = "0.52.6"
2041
- source = "registry+https://github.com/rust-lang/crates.io-index"
2042
- checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
2043
-
2044
- [[package]]
2045
- name = "windows_x86_64_gnu"
2046
- version = "0.34.0"
2047
- source = "registry+https://github.com/rust-lang/crates.io-index"
2048
- checksum = "cfce6deae227ee8d356d19effc141a509cc503dfd1f850622ec4b0f84428e1f4"
2049
-
2050
- [[package]]
2051
- name = "windows_x86_64_gnu"
2052
- version = "0.42.2"
2053
- source = "registry+https://github.com/rust-lang/crates.io-index"
2054
- checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36"
2055
-
2056
- [[package]]
2057
- name = "windows_x86_64_gnu"
2058
- version = "0.52.6"
2059
- source = "registry+https://github.com/rust-lang/crates.io-index"
2060
- checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
2061
-
2062
- [[package]]
2063
- name = "windows_x86_64_gnullvm"
2064
- version = "0.42.2"
2065
- source = "registry+https://github.com/rust-lang/crates.io-index"
2066
- checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3"
2067
-
2068
- [[package]]
2069
- name = "windows_x86_64_gnullvm"
2070
- version = "0.52.6"
2071
- source = "registry+https://github.com/rust-lang/crates.io-index"
2072
- checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
2073
-
2074
- [[package]]
2075
- name = "windows_x86_64_msvc"
2076
- version = "0.34.0"
2077
- source = "registry+https://github.com/rust-lang/crates.io-index"
2078
- checksum = "d19538ccc21819d01deaf88d6a17eae6596a12e9aafdbb97916fb49896d89de9"
2079
-
2080
- [[package]]
2081
- name = "windows_x86_64_msvc"
2082
- version = "0.42.2"
2083
- source = "registry+https://github.com/rust-lang/crates.io-index"
2084
- checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0"
2085
-
2086
- [[package]]
2087
- name = "windows_x86_64_msvc"
2088
- version = "0.52.6"
2089
- source = "registry+https://github.com/rust-lang/crates.io-index"
2090
- checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
2091
-
2092
- [[package]]
2093
- name = "winnow"
2094
- version = "0.6.20"
2095
- source = "registry+https://github.com/rust-lang/crates.io-index"
2096
- checksum = "36c1fec1a2bb5866f07c25f68c26e565c4c200aebb96d7e55710c19d3e8ac49b"
2097
- dependencies = [
2098
- "memchr",
2099
- ]
2100
-
2101
- [[package]]
2102
- name = "wit-bindgen-rt"
2103
- version = "0.33.0"
2104
- source = "registry+https://github.com/rust-lang/crates.io-index"
2105
- checksum = "3268f3d866458b787f390cf61f4bbb563b922d091359f9608842999eaee3943c"
2106
- dependencies = [
2107
- "bitflags 2.6.0",
2108
- ]
2109
-
2110
- [[package]]
2111
- name = "zerocopy"
2112
- version = "0.7.35"
2113
- source = "registry+https://github.com/rust-lang/crates.io-index"
2114
- checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0"
2115
- dependencies = [
2116
- "byteorder",
2117
- "zerocopy-derive",
2118
- ]
2119
-
2120
- [[package]]
2121
- name = "zerocopy-derive"
2122
- version = "0.7.35"
2123
- source = "registry+https://github.com/rust-lang/crates.io-index"
2124
- checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e"
2125
- dependencies = [
2126
- "proc-macro2",
2127
- "quote",
2128
- "syn 2.0.100",
2129
- ]
2130
-
2131
- [[package]]
2132
- name = "zstd-sys"
2133
- version = "2.0.13+zstd.1.5.6"
2134
- source = "registry+https://github.com/rust-lang/crates.io-index"
2135
- checksum = "38ff0f21cfee8f97d94cef41359e0c89aa6113028ab0291aa8ca0038995a95aa"
2136
- dependencies = [
2137
- "cc",
2138
- "pkg-config",
2139
- ]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
asian_ai/chinese/3FS/Cargo.toml DELETED
@@ -1,22 +0,0 @@
1
- [workspace]
2
- members = [
3
- "src/client/trash_cleaner",
4
- "src/storage/chunk_engine",
5
- "src/lib/rs/hf3fs-usrbio-sys"
6
- ]
7
- default-members = [
8
- "src/client/trash_cleaner",
9
- "src/storage/chunk_engine",
10
- ]
11
- resolver = "2"
12
-
13
- [workspace.package]
14
- authors = ["dev <noreply@deepseek.com>"]
15
- edition = "2021"
16
- license = "MIT"
17
- rust-version = "1.85.0" # MSRV
18
-
19
- [profile.release-cmake]
20
- debug = true
21
- inherits = "release"
22
- lto = true
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
asian_ai/chinese/3FS/LICENSE DELETED
@@ -1,21 +0,0 @@
1
- MIT License
2
-
3
- Copyright (c) 2025 DeepSeek
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
asian_ai/chinese/3FS/README.md DELETED
@@ -1,129 +0,0 @@
1
- # Fire-Flyer File System
2
-
3
- [![Build](https://github.com/deepseek-ai/3fs/actions/workflows/build.yml/badge.svg)](https://github.com/deepseek-ai/3fs/actions/workflows/build.yml)
4
- [![License](https://img.shields.io/badge/LICENSE-MIT-blue.svg)](LICENSE)
5
-
6
- The Fire-Flyer File System (3FS) is a high-performance distributed file system designed to address the challenges of AI training and inference workloads. It leverages modern SSDs and RDMA networks to provide a shared storage layer that simplifies development of distributed applications. Key features and benefits of 3FS include:
7
-
8
- - Performance and Usability
9
- - **Disaggregated Architecture** Combines the throughput of thousands of SSDs and the network bandwidth of hundreds of storage nodes, enabling applications to access storage resource in a locality-oblivious manner.
10
- - **Strong Consistency** Implements Chain Replication with Apportioned Queries (CRAQ) for strong consistency, making application code simple and easy to reason about.
11
- - **File Interfaces** Develops stateless metadata services backed by a transactional key-value store (e.g., FoundationDB). The file interface is well known and used everywhere. There is no need to learn a new storage API.
12
-
13
- - Diverse Workloads
14
- - **Data Preparation** Organizes outputs of data analytics pipelines into hierarchical directory structures and manages a large volume of intermediate outputs efficiently.
15
- - **Dataloaders** Eliminates the need for prefetching or shuffling datasets by enabling random access to training samples across compute nodes.
16
- - **Checkpointing** Supports high-throughput parallel checkpointing for large-scale training.
17
- - **KVCache for Inference** Provides a cost-effective alternative to DRAM-based caching, offering high throughput and significantly larger capacity.
18
-
19
- ## Documentation
20
-
21
- * [Design Notes](docs/design_notes.md)
22
- * [Setup Guide](deploy/README.md)
23
- * [USRBIO API Reference](src/lib/api/UsrbIo.md)
24
- * [P Specifications](./specs/README.md)
25
-
26
- ## Performance
27
-
28
- ### 1. Peak throughput
29
-
30
- The following figure demonstrates the throughput of read stress test on a large 3FS cluster. This cluster consists of 180 storage nodes, each equipped with 2×200Gbps InfiniBand NICs and sixteen 14TiB NVMe SSDs. Approximately 500+ client nodes were used for the read stress test, with each client node configured with 1x200Gbps InfiniBand NIC. The final aggregate read throughput reached approximately 6.6 TiB/s with background traffic from training jobs.
31
-
32
- ![Large block read throughput under stress test on a 180-node cluster](docs/images/peak_throughput.jpg)
33
-
34
- To benchmark 3FS, please use our [fio engine for USRBIO](benchmarks/fio_usrbio/README.md).
35
-
36
- ### 2. GraySort
37
-
38
- We evaluated [smallpond](https://github.com/deepseek-ai/smallpond) using the GraySort benchmark, which measures sort performance on large-scale datasets. Our implementation adopts a two-phase approach: (1) partitioning data via shuffle using the prefix bits of keys, and (2) in-partition sorting. Both phases read/write data from/to 3FS.
39
-
40
- The test cluster comprised 25 storage nodes (2 NUMA domains/node, 1 storage service/NUMA, 2×400Gbps NICs/node) and 50 compute nodes (2 NUMA domains, 192 physical cores, 2.2 TiB RAM, and 1×200 Gbps NIC/node). Sorting 110.5 TiB of data across 8,192 partitions completed in 30 minutes and 14 seconds, achieving an average throughput of *3.66 TiB/min*.
41
-
42
- ![](docs/images/gray_sort_server.png)
43
- ![](docs/images/gray_sort_client.png)
44
-
45
- ### 3. KVCache
46
-
47
- KVCache is a technique used to optimize the LLM inference process. It avoids redundant computations by caching the key and value vectors of previous tokens in the decoder layers.
48
- The top figure demonstrates the read throughput of all KVCache clients (1×400Gbps NIC/node), highlighting both peak and average values, with peak throughput reaching up to 40 GiB/s. The bottom figure presents the IOPS of removing ops from garbage collection (GC) during the same time period.
49
-
50
- ![KVCache Read Throughput](./docs/images/kvcache_read_throughput.png)
51
- ![KVCache GC IOPS](./docs/images/kvcache_gc_iops.png)
52
-
53
- ## Check out source code
54
-
55
- Clone 3FS repository from GitHub:
56
-
57
- git clone https://github.com/deepseek-ai/3fs
58
-
59
- When `deepseek-ai/3fs` has been cloned to a local file system, run the
60
- following commands to check out the submodules:
61
-
62
- ```bash
63
- cd 3fs
64
- git submodule update --init --recursive
65
- ./patches/apply.sh
66
- ```
67
-
68
- ## Install dependencies
69
-
70
- Install dependencies:
71
-
72
- ```bash
73
- # for Ubuntu 20.04.
74
- apt install cmake libuv1-dev liblz4-dev liblzma-dev libdouble-conversion-dev libdwarf-dev libunwind-dev \
75
- libaio-dev libgflags-dev libgoogle-glog-dev libgtest-dev libgmock-dev clang-format-14 clang-14 clang-tidy-14 lld-14 \
76
- libgoogle-perftools-dev google-perftools libssl-dev libclang-rt-14-dev gcc-10 g++-10 libboost1.71-all-dev build-essential
77
-
78
- # for Ubuntu 22.04.
79
- apt install cmake libuv1-dev liblz4-dev liblzma-dev libdouble-conversion-dev libdwarf-dev libunwind-dev \
80
- libaio-dev libgflags-dev libgoogle-glog-dev libgtest-dev libgmock-dev clang-format-14 clang-14 clang-tidy-14 lld-14 \
81
- libgoogle-perftools-dev google-perftools libssl-dev gcc-12 g++-12 libboost-all-dev build-essential
82
-
83
- # for openEuler 2403sp1
84
- yum install cmake libuv-devel lz4-devel xz-devel double-conversion-devel libdwarf-devel libunwind-devel \
85
- libaio-devel gflags-devel glog-devel gtest-devel gmock-devel clang-tools-extra clang lld \
86
- gperftools-devel gperftools openssl-devel gcc gcc-c++ boost-devel
87
-
88
- # for OpenCloudOS 9 and TencentOS 4
89
- dnf install epol-release wget git meson cmake perl lld gcc gcc-c++ autoconf lz4 lz4-devel xz xz-devel \
90
- double-conversion-devel libdwarf-devel libunwind-devel libaio-devel gflags-devel glog-devel \
91
- libuv-devel gmock-devel gperftools gperftools-devel openssl-devel boost-static boost-devel mono-devel \
92
- libevent-devel libibverbs-devel numactl-devel python3-devel
93
- ```
94
-
95
- Install other build prerequisites:
96
-
97
- - [`libfuse`](https://github.com/libfuse/libfuse/releases/tag/fuse-3.16.1) 3.16.1 or newer version
98
- - [FoundationDB](https://apple.github.io/foundationdb/getting-started-linux.html) 7.1 or newer version
99
- - [Rust](https://www.rust-lang.org/tools/install) toolchain: minimal 1.75.0, recommended 1.85.0 or newer version (latest stable version)
100
-
101
- ## Build 3FS
102
-
103
- Build 3FS in `build` folder:
104
-
105
- ```bash
106
- # Replace <method> with 'g++10' or 'g++11' based on your environment
107
- cmake -S . -B build \
108
- -DCMAKE_CXX_COMPILER=clang++-14 -DCMAKE_C_COMPILER=clang-14 \
109
- -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
110
- -DSHUFFLE_METHOD=<method>
111
- cmake --build build -j 32
112
- ```
113
-
114
- Due to the historical use of `std::shuffle`, binaries compiled with different compiler versions (e.g., `g++10` vs. `g++11 +`) may be incompatible ([issue](https://github.com/deepseek-ai/3FS/issues/368)). To resolve this, you must explicitly specify `-DSHUFFLE_METHOD` during compilation to lock in a consistent shuffle algorithm:
115
-
116
- - Existing Clusters: Use the method corresponding to the compiler version previously used to deploy the cluster (`g++10` or `g++11`).
117
- - New Clusters: You can choose either `g++10` or `g++11`. However, once the cluster is deployed, you must stay with the same configuration for all future builds to maintain compatibility.
118
-
119
- ### Build 3FS use Docker
120
- - For TencentOS-4: `docker pull docker.io/tencentos/tencentos4-deepseek3fs-build:latest`
121
- - For OpenCloudOS-9: `docker pull docker.io/opencloudos/opencloudos9-deepseek3fs-build:latest`
122
-
123
- ## Run a test cluster
124
-
125
- Follow instructions in [setup guide](deploy/README.md) to run a test cluster.
126
-
127
- ## Report Issues
128
-
129
- Please visit https://github.com/deepseek-ai/3fs/issues to report issues.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
asian_ai/chinese/3FS/benchmarks/CMakeLists.txt DELETED
@@ -1 +0,0 @@
1
- add_subdirectory(storage_bench)
 
 
asian_ai/chinese/3FS/benchmarks/fio_usrbio/Makefile DELETED
@@ -1,23 +0,0 @@
1
- HF3FS_INCLUDE_DIR ?= /usr/include
2
- HF3FS_LIB_DIR ?= /usr/lib
3
- FIO_SRC_DIR ?= /usr/include
4
-
5
- PLUGIN_NAME = hf3fs_usrbio
6
- SO_NAME = ${PLUGIN_NAME}.so
7
- SRC = ${PLUGIN_NAME}.cpp
8
- OBJ = ${PLUGIN_NAME}.o
9
-
10
- CXX = g++
11
- CXXFLAGS = -fPIC -fpermissive -O3 -D_GNU_SOURCE -shared -rdynamic -I${HF3FS_INCLUDE_DIR} -I${FIO_SRC_DIR} -include config-host.h
12
- LDFLAGS = -L${HF3FS_LIB_DIR} -lhf3fs_api_shared -Wl,-rpath=${HF3FS_LIB_DIR}
13
-
14
- .PHONY: all clean
15
-
16
- all: ${SO_NAME}
17
-
18
- ${SO_NAME}: ${SRC}
19
- ${CXX} ${CXXFLAGS} $^ -o $@ ${LDFLAGS}
20
-
21
- clean:
22
- rm -rf ${OBJ} ${SO_NAME}
23
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
asian_ai/chinese/3FS/benchmarks/fio_usrbio/README.md DELETED
@@ -1,40 +0,0 @@
1
- # FIO engine for 3FS USRBIO
2
-
3
- This repository contains the [fio] external plugin used for benchmarking [3FS] USRBIO.
4
-
5
- ## Build
6
-
7
- First, build 3FS and fio.
8
-
9
- Configure the following variables:
10
- - `HF3FS_LIB_DIR`: directory contains `libhf3fs_api_shared.so`, the default path in 3FS repo is `3FS/build/src/lib/api`.
11
- - `HF3FS_INCLUDE_DIR`: directory contains `hf3fs_usrbio.h`, the default path in 3FS repo is `3FS/src/lib/api`.
12
- - `FIO_SRC_DIR`: directory contains `config-host.h`. After building fio, this header will be in the root of the fio repo.
13
-
14
- Then run:
15
- ```
16
- make HF3FS_LIB_DIR=${HF3FS_LIB_DIR} HF3FS_INCLUDE_DIR=${HF3FS_INCLUDE_DIR} FIO_SRC_DIR=${FIO_SRC_DIR}
17
- ```
18
-
19
- You will get the external plugin as `hf3fs_usrbio.so`.
20
-
21
- ## Usage
22
-
23
- To use this plugin, set the `ioengine` args in fio as `external:hf3fs_usrbio.so`. Please refer to [fio documentation] for further explanation.
24
-
25
- Since multiple 3FS instances might be mounted, you need to specify the 3FS instance during benchmarking. This can be done by adding the `mountpoint` arguments (in the `.fio`):
26
- ```
27
- mountpoint=/hf3fs/mount/point
28
- ```
29
-
30
- To benchmark batched small I/Os, please set these four parameters to `batch_size` simultaneously:
31
- ```
32
- iodepth=1024
33
- iodepth_batch_submit=1024
34
- iodepth_batch_complete_min=1024
35
- iodepth_batch_complete_max=1024
36
- ```
37
-
38
- [fio]: https://github.com/axboe/fio
39
- [3FS]: https://github.com/deepseek-ai/3FS
40
- [fio documentation]: https://fio.readthedocs.io/en/latest/fio_doc.html
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
asian_ai/chinese/3FS/benchmarks/fio_usrbio/hf3fs_usrbio.cpp DELETED
@@ -1,286 +0,0 @@
1
- #include <cstdio>
2
- #include <cstdlib>
3
- #include <iostream>
4
- #include <fstream>
5
- #include <unistd.h>
6
- #include <chrono>
7
- #include <iomanip>
8
- #include <ctime>
9
- #include "hf3fs_usrbio.h"
10
- #include <atomic>
11
- #include <errno.h>
12
- #include <vector>
13
- #include <sys/stat.h>
14
-
15
- extern "C" {
16
- #include "fio.h"
17
- #include "optgroup.h"
18
- }
19
-
20
- struct hf3fs_usrbio_options {
21
- int dummy;
22
- char *mountpoint;
23
- int ior_depth;
24
- int ior_timeout;
25
- };
26
-
27
- static struct fio_option options[] = {
28
- {
29
- .name = "mountpoint",
30
- .lname = "hf3fs mount point",
31
- .type = FIO_OPT_STR_STORE,
32
- .off1 = offsetof(struct hf3fs_usrbio_options, mountpoint),
33
- .help = "Mount point (e.g. /hf3fs/mount/point)",
34
- .def = "",
35
- .category = FIO_OPT_C_ENGINE,
36
- .group = FIO_OPT_G_NETIO,
37
- },
38
- {
39
- .name = "ior_depth",
40
- .lname = "hf3fs ior depth",
41
- .type = FIO_OPT_INT,
42
- .off1 = offsetof(struct hf3fs_usrbio_options, ior_depth),
43
- .help = "Ior depth",
44
- .def = "0",
45
- .category = FIO_OPT_C_ENGINE,
46
- .group = FIO_OPT_G_NETIO,
47
- },
48
- {
49
- .name = "ior_timeout",
50
- .lname = "hf3fs ior timeout (in ms)",
51
- .type = FIO_OPT_INT,
52
- .off1 = offsetof(struct hf3fs_usrbio_options, ior_timeout),
53
- .help = "Ior timeout",
54
- .def = "1",
55
- .category = FIO_OPT_C_ENGINE,
56
- .group = FIO_OPT_G_NETIO,
57
- },
58
- {
59
- .name = NULL,
60
- },
61
- };
62
-
63
- #define LAST_POS(f) ((f)->engine_pos)
64
-
65
- struct hf3fs_usrbio_data {
66
- struct hf3fs_iov iov;
67
- struct hf3fs_ior ior_r;
68
- struct hf3fs_ior ior_w;
69
- std::vector<struct io_u *> io_us;
70
- int queued;
71
- int events;
72
- enum fio_ddir last_ddir;
73
- };
74
-
75
- static int hf3fs_usrbio_init(struct thread_data *td) {
76
- td->io_ops_data = static_cast<void *>(new hf3fs_usrbio_data);
77
- struct hf3fs_usrbio_options *options = td->eo;
78
-
79
- auto &ior_r = static_cast<hf3fs_usrbio_data *>(td->io_ops_data)->ior_r;
80
- auto res = hf3fs_iorcreate3(&ior_r, options->mountpoint, td->o.iodepth, true, options->ior_depth, 0, options->ior_timeout, -1);
81
- if (res < 0) {
82
- return res;
83
- }
84
-
85
- auto &ior_w = static_cast<hf3fs_usrbio_data *>(td->io_ops_data)->ior_w;
86
- res = hf3fs_iorcreate(&ior_w, options->mountpoint, td->o.iodepth, false, options->ior_depth, -1);
87
- if (res < 0) {
88
- return res;
89
- }
90
-
91
- auto *data = static_cast<hf3fs_usrbio_data *>(td->io_ops_data);
92
- data->io_us.resize(td->o.iodepth);
93
- data->queued = 0;
94
- data->events = 0;
95
-
96
- return 0;
97
- }
98
-
99
- static int fio_io_end(struct thread_data *td, struct io_u *io_u, int ret) {
100
- if (io_u->file && ret >= 0 && ddir_rw(io_u->ddir)) {
101
- LAST_POS(io_u->file) = io_u->offset + ret;
102
- }
103
-
104
- if (ret != (int) io_u->xfer_buflen) {
105
- if (ret >= 0) {
106
- io_u->resid = io_u->xfer_buflen - ret;
107
- io_u->error = 0;
108
- return FIO_Q_COMPLETED;
109
- } else {
110
- io_u->error = errno;
111
- }
112
- }
113
-
114
- if (io_u->error) {
115
- io_u_log_error(td, io_u);
116
- td_verror(td, io_u->error, "xfer");
117
- }
118
-
119
- return FIO_Q_COMPLETED;
120
- }
121
-
122
- static enum fio_q_status hf3fs_usrbio_queue(struct thread_data *td, struct io_u *io_u) {
123
- auto &vec = static_cast<hf3fs_usrbio_data *>(td->io_ops_data)->io_us;
124
- auto *sd = static_cast<hf3fs_usrbio_data *>(td->io_ops_data);
125
-
126
- if (io_u->ddir != sd->last_ddir) {
127
- if (sd->queued != 0) {
128
- return FIO_Q_BUSY;
129
- } else {
130
- vec[sd->queued++] = io_u;
131
- sd->last_ddir = io_u->ddir;
132
- return FIO_Q_QUEUED;
133
- }
134
- } else {
135
- if (sd->queued == td->o.iodepth) {
136
- return FIO_Q_BUSY;
137
- }
138
- vec[sd->queued++] = io_u;
139
- return FIO_Q_QUEUED;
140
- }
141
- }
142
-
143
- static int hf3fs_usrbio_commit(struct thread_data *td) {
144
- auto &vec = static_cast<hf3fs_usrbio_data *>(td->io_ops_data)->io_us;
145
- auto *sd = static_cast<hf3fs_usrbio_data *>(td->io_ops_data);
146
- auto &ior_r = static_cast<hf3fs_usrbio_data *>(td->io_ops_data)->ior_r;
147
- auto &ior_w = static_cast<hf3fs_usrbio_data *>(td->io_ops_data)->ior_w;
148
- auto &iov = static_cast<hf3fs_usrbio_data *>(td->io_ops_data)->iov;
149
-
150
- if (sd->queued == 0) {
151
- return 0;
152
- }
153
-
154
- io_u_mark_submit(td, sd->queued);
155
-
156
- int res = 0;
157
- bool read = (sd->last_ddir == DDIR_READ);
158
- auto &ior = read ? ior_r : ior_w;
159
- for (int i = 0; i < sd->queued; i++) {
160
- res = hf3fs_prep_io(&ior, &iov, read, vec[i]->xfer_buf, vec[i]->file->fd, vec[i]->offset, vec[i]->xfer_buflen, nullptr);
161
- if (res < 0) {
162
- std::cout << "prep " << res << " " << vec[i]->file->fd << std::endl;
163
- return res;
164
- }
165
- }
166
- res = hf3fs_submit_ios(&ior);
167
- if (res < 0) {
168
- std::cout << "submit " << res << std::endl;
169
- return res;
170
- }
171
-
172
- std::vector<struct hf3fs_cqe> cqe(sd->queued);
173
- res = hf3fs_wait_for_ios(&ior, cqe.data(), sd->queued, sd->queued, nullptr);
174
- if (res < 0) {
175
- std::cout << "wait " << res << std::endl;
176
- return res;
177
- }
178
-
179
- for (int i = 0; i < sd->queued; i++) {
180
- if (cqe[i].result < 0) {
181
- std::cout << "cqe error " << res << std::endl;
182
- return res;
183
- }
184
- }
185
-
186
- sd->events = sd->queued;
187
- sd->queued = 0;
188
-
189
- return 0;
190
- }
191
-
192
- static int hf3fs_usrbio_getevents(struct thread_data *td, unsigned int min, unsigned int max, const struct timespec fio_unused *t) {
193
- auto &vec = static_cast<hf3fs_usrbio_data *>(td->io_ops_data)->io_us;
194
- auto *sd = static_cast<hf3fs_usrbio_data *>(td->io_ops_data);
195
- int ret = 0;
196
- if (min) {
197
- ret = sd->events;
198
- sd->events = 0;
199
- }
200
- return ret;
201
- }
202
-
203
- static struct io_u *hf3fs_usrbio_event(struct thread_data *td, int event) {
204
- auto &vec = static_cast<hf3fs_usrbio_data *>(td->io_ops_data)->io_us;
205
- return vec[event];
206
- }
207
-
208
- static void hf3fs_usrbio_cleanup(struct thread_data *td) {
209
- delete static_cast<hf3fs_usrbio_data *>(td->io_ops_data);
210
- }
211
-
212
- static int hf3fs_usrbio_open(struct thread_data *td, struct fio_file *f) {
213
- int flags = 0;
214
- if (td_write(td)) {
215
- if (!read_only) {
216
- flags = O_RDWR;
217
- }
218
- } else if (td_read(td)) {
219
- if (!read_only) {
220
- flags = O_RDWR;
221
- } else {
222
- flags = O_RDONLY;
223
- }
224
- }
225
-
226
- f->fd = open(f->file_name, flags);
227
- hf3fs_reg_fd(f->fd, 0);
228
- td->o.open_files++;
229
- return 0;
230
- }
231
-
232
- static int hf3fs_usrbio_close(struct thread_data *td, struct fio_file *f) {
233
- hf3fs_dereg_fd(f->fd);
234
- close(f->fd);
235
- f->fd = -1;
236
- return 0;
237
- }
238
-
239
- static int hf3fs_usrbio_alloc(struct thread_data *td, size_t total_mem) {
240
- struct hf3fs_usrbio_options *options = td->eo;
241
-
242
- auto &iov = static_cast<hf3fs_usrbio_data *>(td->io_ops_data)->iov;
243
- auto res = hf3fs_iovcreate(&iov, options->mountpoint, total_mem, 0, -1);
244
- if (res < 0) {
245
- return res;
246
- }
247
-
248
- td->orig_buffer = iov.base;
249
- return 0;
250
- }
251
-
252
- static void hf3fs_usrbio_free(struct thread_data *td) {
253
- auto &iov = static_cast<hf3fs_usrbio_data *>(td->io_ops_data)->iov;
254
- hf3fs_iovdestroy(&iov);
255
- }
256
-
257
- static int hf3fs_invalidate(struct thread_data *td, struct fio_file *f) {
258
- return 0;
259
- }
260
-
261
- extern "C" {
262
-
263
- static struct ioengine_ops ioengine;
264
- void get_ioengine(struct ioengine_ops **ioengine_ptr) {
265
- *ioengine_ptr = &ioengine;
266
-
267
- ioengine.name = "hf3fs_usrbio",
268
- ioengine.version = FIO_IOOPS_VERSION;
269
- ioengine.flags = FIO_NODISKUTIL;
270
- ioengine.init = hf3fs_usrbio_init;
271
- ioengine.queue = hf3fs_usrbio_queue;
272
- ioengine.commit = hf3fs_usrbio_commit;
273
- ioengine.getevents = hf3fs_usrbio_getevents;
274
- ioengine.event = hf3fs_usrbio_event;
275
- ioengine.cleanup = hf3fs_usrbio_cleanup;
276
- ioengine.open_file = hf3fs_usrbio_open;
277
- ioengine.close_file = hf3fs_usrbio_close;
278
- ioengine.invalidate = hf3fs_invalidate;
279
- ioengine.get_file_size = generic_get_file_size;
280
- ioengine.iomem_alloc = hf3fs_usrbio_alloc;
281
- ioengine.iomem_free = hf3fs_usrbio_free;
282
- ioengine.option_struct_size = sizeof(struct hf3fs_usrbio_options);
283
- ioengine.options = options;
284
- }
285
-
286
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
asian_ai/chinese/3FS/benchmarks/storage_bench/CMakeLists.txt DELETED
@@ -1 +0,0 @@
1
- target_add_bin(storage_bench "StorageBench.cc" test-fabric-lib storage-client storage memory-common follybenchmark gmock fdb mgmtd)
 
 
asian_ai/chinese/3FS/benchmarks/storage_bench/StorageBench.cc DELETED
@@ -1,291 +0,0 @@
1
- #include "StorageBench.h"
2
-
3
- #include <folly/init/Init.h>
4
-
5
- #include "common/monitor/Monitor.h"
6
- #include "memory/common/OverrideCppNewDelete.h"
7
-
8
- DEFINE_bool(benchmarkNetwork, false, "Run in network benchmark mode");
9
- DEFINE_bool(benchmarkStorage, false, "Run in storage benchmark mode");
10
- DEFINE_bool(ignoreIOError, false, "Ignore all IO errors");
11
- DEFINE_bool(injectRandomServerError, false, "Inject random server errors");
12
- DEFINE_bool(injectRandomClientError, false, "Inject random client errors");
13
- DEFINE_bool(retryPermanentError, false, "Retry requests with permanent errors");
14
- DEFINE_bool(verifyReadData, false, "Check if the read data are correct");
15
- DEFINE_bool(verifyReadChecksum, false, "Verify the checksum of read IOs");
16
- DEFINE_bool(verifyWriteChecksum, true, "Verify the checksum of write IOs");
17
- DEFINE_bool(randomShuffleChunkIds, false, "Random shuffle generated chunk IDs");
18
- DEFINE_bool(generateTestData, true, "Generate test data for read test");
19
- DEFINE_bool(sparseChunkIds, false, "Generate sparse chunk IDs");
20
- DEFINE_bool(truncateChunks, false, "Truncate chunks");
21
- DEFINE_bool(cleanupChunks, false, "Clean up (remove) chunks after benchmark");
22
- DEFINE_bool(cleanupChunksBeforeBench, false, "Clean up (remove) chunks before benchmark");
23
- DEFINE_bool(serverMode, false, "Run in server mode");
24
- DEFINE_bool(clientMode, false, "Run in client mode");
25
- DEFINE_bool(clusterMode, false, "Run in cluster mode (get routing info from mgmtd)");
26
- DEFINE_bool(printMetrics, false, "Enable printing metrics in logs");
27
- DEFINE_bool(reportMetrics, false, "Enable reporting metrics to ClickHouse");
28
- DEFINE_uint32(metaStoreType, 0, "Metadata store type (0=LevelDB, 1=RocksDB, 2=MemDB)");
29
- DEFINE_uint32(chunkSizeKB, 512, "Chunk size (KB)");
30
- DEFINE_uint32(chainTableId, 0, "Chain table id");
31
- DEFINE_uint32(chainTableVersion, 0, "Chain table version");
32
- DEFINE_string(chainIds, "", "List of chain ids");
33
- DEFINE_string(storageNodeIds, "", "List of storage node ids");
34
- DEFINE_uint32(numChains, 1, "Number of chains");
35
- DEFINE_uint32(numReplicas, 1, "Number of replicas");
36
- DEFINE_uint32(numStorageNodes, 1, "Number of storage nodes");
37
- DEFINE_uint32(numChunks, 1, "Number of chunks");
38
- DEFINE_uint32(readSize, 4096, "Read IO size");
39
- DEFINE_uint32(writeSize, 131072, "Write IO size");
40
- DEFINE_uint32(memoryAlignment, 1, "Alignment size of each IO buffer");
41
- DEFINE_uint32(readOffAlignment, 0, "Alignment size of each read IO offset");
42
- DEFINE_uint32(batchSize, 1, "Read/write batch size");
43
- DEFINE_uint32(readBatchSize, 0, "Read batch size");
44
- DEFINE_uint32(writeBatchSize, 0, "Write batch size");
45
- DEFINE_uint32(removeBatchSize, 0, "Remove batch size");
46
- DEFINE_uint32(numReadSecs, 0, "Read test duration");
47
- DEFINE_uint32(numWriteSecs, 0, "Write test duration");
48
- DEFINE_uint32(numCoroutines, 1, "Number of coroutines");
49
- DEFINE_uint32(numTestThreads, 1, "Number of test threads");
50
- DEFINE_uint32(randSeed, 0, "Random seed for chunk id generation");
51
- DEFINE_uint32(chunkIdPrefix, 0xFFFF, "The most significant 2 bytes of chunk ids");
52
- DEFINE_uint32(serviceLevel, 0, "Service level");
53
- DEFINE_uint32(listenPort, 0, "Listen port");
54
- DEFINE_uint32(clientTimeoutMS, 30000, "Client timeout (milliseconds)");
55
- DEFINE_string(dataPaths, folly::fs::temp_directory_path().string(), "Comma or space separated list of paths");
56
- DEFINE_string(clientConfig, "", "Path of client config");
57
- DEFINE_string(serverConfig, "", "Path of server config");
58
- DEFINE_string(statsFilePath, "./perfstats.csv", "Path of performance stats file");
59
- DEFINE_string(ibvDevices, "mlx5_0,mlx5_1", "Comma or space separated list of ibv devices");
60
- DEFINE_string(ibnetZones, "", "Comma or space separated list of IB network zones");
61
- DEFINE_string(clusterId, "stage", "Cluster id used to connect to mgmtd");
62
- DEFINE_string(mgmtdEndpoints,
63
- "",
64
- "Comma or space separated list of mgmtd endpoints, "
65
- "e.g. 'RDMA://10.1.1.1:1234,RDMA://10.1.1.2:1234'");
66
- DEFINE_string(storageEndpoints,
67
- "",
68
- "Comma or space separated list of storage ids and endpoints, "
69
- "e.g. '1@RDMA://10.1.1.1:1234,2@RDMA://10.1.1.2:1234'");
70
- DEFINE_string(monitorEndpoint, "", "Monitor endpoint");
71
- DEFINE_uint32(defaultPKeyIndex, 1, "IB default pkey index");
72
-
73
- namespace hf3fs::storage::benchmark {
74
-
75
- using namespace hf3fs::storage::client;
76
-
77
- std::vector<uint32_t> stringToIntVec(const std::string &str) {
78
- std::vector<uint32_t> vec;
79
- std::vector<std::string> substrs;
80
- boost::split(substrs, str, boost::is_any_of(", "));
81
-
82
- for (auto s : substrs) {
83
- boost::trim(s);
84
- if (s.empty()) continue;
85
-
86
- uint32_t n = std::stoul(s);
87
- vec.push_back(n);
88
- }
89
-
90
- return vec;
91
- }
92
-
93
- bool runBenchmarks() {
94
- std::vector<std::string> dataPathStrs;
95
- boost::split(dataPathStrs, FLAGS_dataPaths, boost::is_any_of(", "));
96
-
97
- std::vector<hf3fs::Path> dataPaths;
98
- dataPaths.reserve(dataPathStrs.size());
99
-
100
- for (auto str : dataPathStrs) {
101
- boost::trim(str);
102
- if (str.empty()) continue;
103
-
104
- dataPaths.emplace_back(str);
105
- }
106
-
107
- std::vector<std::string> endpointRawStrs;
108
- boost::split(endpointRawStrs, FLAGS_storageEndpoints, boost::is_any_of(", "));
109
-
110
- std::map<NodeId, net::Address> storageEndpoints;
111
-
112
- for (auto str : endpointRawStrs) {
113
- boost::trim(str);
114
- if (str.empty()) continue;
115
-
116
- std::vector<std::string> nodeEndpointStrs;
117
- boost::split(nodeEndpointStrs, str, boost::is_any_of("@"));
118
-
119
- if (nodeEndpointStrs.size() != 2) {
120
- XLOGF(ERR, "Wrong node endpoint string: {}", str);
121
- return false;
122
- }
123
-
124
- auto nodeIdStr = nodeEndpointStrs[0];
125
- auto endpointStr = nodeEndpointStrs[1];
126
-
127
- auto nodeId = (NodeId)std::stoul(nodeIdStr);
128
- auto endpoint = net::Address::fromString(endpointStr);
129
- storageEndpoints[nodeId] = endpoint;
130
- XLOGF(WARN, "Add storage endpoint: {} @ {}", nodeId, endpoint);
131
- }
132
-
133
- if (FLAGS_clientMode && storageEndpoints.empty()) {
134
- XLOGF(ERR, "No storage endpoint specified for client mode");
135
- return false;
136
- }
137
-
138
- if (FLAGS_readSize > FLAGS_chunkSizeKB * 1024) {
139
- XLOGF(ERR, "Read size {} is greater than chunk size {}", FLAGS_readSize, FLAGS_chunkSizeKB * 1024);
140
- return false;
141
- }
142
-
143
- auto metaStoreType = static_cast<kv::KVStore::Type>(FLAGS_metaStoreType);
144
-
145
- test::SystemSetupConfig setupConfig = {
146
- FLAGS_chunkSizeKB * 1024 /*chunkSize*/,
147
- FLAGS_numChains /*numChains*/,
148
- FLAGS_numReplicas /*numReplicas*/,
149
- FLAGS_numStorageNodes /*numStorageNodes*/,
150
- dataPaths /*dataPaths*/,
151
- FLAGS_clientConfig,
152
- FLAGS_serverConfig,
153
- storageEndpoints,
154
- FLAGS_serviceLevel,
155
- FLAGS_listenPort,
156
- StorageClient::ImplementationType::RPC /*clientImplType*/,
157
- metaStoreType,
158
- true /*useFakeMgmtdClient*/,
159
- !FLAGS_clientMode /*startStorageServer*/,
160
- false,
161
- };
162
-
163
- std::vector<std::string> ibvDevices;
164
- boost::split(ibvDevices, FLAGS_ibvDevices, boost::is_any_of(", "));
165
-
166
- std::vector<std::string> ibnetZones;
167
- boost::split(ibnetZones, FLAGS_ibnetZones, boost::is_any_of(", "));
168
-
169
- endpointRawStrs.clear();
170
- boost::split(endpointRawStrs, FLAGS_mgmtdEndpoints, boost::is_any_of(", "));
171
-
172
- std::vector<net::Address> mgmtdEndpoints;
173
-
174
- for (auto str : endpointRawStrs) {
175
- boost::trim(str);
176
- if (str.empty()) continue;
177
-
178
- auto endpoint = net::Address::fromString(str);
179
- mgmtdEndpoints.push_back(endpoint);
180
- XLOGF(WARN, "Add mgmtd endpoint: {}", endpoint);
181
- }
182
-
183
- StorageBench::Options benchOptions{FLAGS_numChunks,
184
- FLAGS_readSize,
185
- FLAGS_writeSize,
186
- FLAGS_batchSize,
187
- FLAGS_numReadSecs,
188
- FLAGS_numWriteSecs,
189
- FLAGS_clientTimeoutMS,
190
- FLAGS_numCoroutines,
191
- FLAGS_numTestThreads,
192
- FLAGS_randSeed,
193
- (uint16_t)FLAGS_chunkIdPrefix,
194
- FLAGS_benchmarkNetwork,
195
- FLAGS_benchmarkStorage,
196
- FLAGS_ignoreIOError,
197
- FLAGS_injectRandomServerError,
198
- FLAGS_injectRandomClientError,
199
- FLAGS_retryPermanentError,
200
- FLAGS_verifyReadData,
201
- FLAGS_verifyReadChecksum,
202
- FLAGS_verifyWriteChecksum,
203
- FLAGS_randomShuffleChunkIds,
204
- FLAGS_generateTestData,
205
- FLAGS_sparseChunkIds,
206
- FLAGS_statsFilePath,
207
- ibvDevices,
208
- ibnetZones,
209
- mgmtdEndpoints,
210
- FLAGS_clusterId,
211
- FLAGS_chainTableId,
212
- FLAGS_chainTableVersion,
213
- stringToIntVec(FLAGS_chainIds),
214
- stringToIntVec(FLAGS_storageNodeIds),
215
- FLAGS_memoryAlignment,
216
- FLAGS_readOffAlignment,
217
- FLAGS_defaultPKeyIndex,
218
- FLAGS_readBatchSize,
219
- FLAGS_writeBatchSize,
220
- FLAGS_removeBatchSize};
221
-
222
- StorageBench bench(setupConfig, benchOptions);
223
-
224
- if (FLAGS_clusterMode) {
225
- if (!bench.connect()) {
226
- XLOGF(WARN, "Failed to connect to cluster");
227
- return false;
228
- }
229
- } else {
230
- if (!bench.setup()) {
231
- XLOGF(WARN, "Failed to set up benchmark");
232
- return false;
233
- }
234
- }
235
-
236
- bench.generateChunkIds();
237
-
238
- if (FLAGS_cleanupChunksBeforeBench) {
239
- bench.cleanup();
240
- }
241
-
242
- bool runOK = true;
243
-
244
- if (FLAGS_serverMode) {
245
- XLOGF(WARN, "Waiting...");
246
- while (true) {
247
- ::sleep(1);
248
- }
249
- } else {
250
- runOK = bench.run();
251
- }
252
-
253
- if (FLAGS_truncateChunks) {
254
- bench.truncate();
255
- }
256
-
257
- if (FLAGS_cleanupChunks) {
258
- bench.cleanup();
259
- }
260
-
261
- bench.teardown();
262
-
263
- return runOK;
264
- }
265
-
266
- } // namespace hf3fs::storage::benchmark
267
-
268
- int main(int argc, char **argv) {
269
- folly::init(&argc, &argv, true);
270
- hf3fs::monitor::Monitor::Config monitorConfig;
271
-
272
- if (FLAGS_printMetrics || FLAGS_reportMetrics) {
273
- if (FLAGS_printMetrics) {
274
- monitorConfig.reporters(0).set_type("log");
275
- } else if (FLAGS_reportMetrics) {
276
- monitorConfig.reporters(0).set_type("monitor_collector");
277
- monitorConfig.reporters(0).monitor_collector().set_remote_ip(FLAGS_monitorEndpoint);
278
- monitorConfig.set_reporters_length(1);
279
- }
280
-
281
- auto monitorResult = hf3fs::monitor::Monitor::start(monitorConfig);
282
- XLOGF_IF(FATAL, !monitorResult, "Failed to start monitor: {}", monitorResult.error());
283
- }
284
-
285
- bool ok = hf3fs::storage::benchmark::runBenchmarks();
286
-
287
- hf3fs::monitor::Monitor::stop();
288
- hf3fs::memory::shutdown();
289
-
290
- return ok ? EXIT_SUCCESS : EXIT_FAILURE;
291
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
asian_ai/chinese/3FS/benchmarks/storage_bench/StorageBench.h DELETED
@@ -1,906 +0,0 @@
1
- #pragma once
2
-
3
- #include <boost/algorithm/string.hpp>
4
- #include <boost/core/ignore_unused.hpp>
5
- #include <boost/filesystem/string_file.hpp>
6
- #include <common/utils/UtcTime.h>
7
- #include <folly/experimental/coro/Collect.h>
8
- #include <folly/futures/Barrier.h>
9
- #include <folly/stats/TDigest.h>
10
- #include <numeric>
11
- #include <optional>
12
- #include <random>
13
- #include <vector>
14
- #include <fstream>
15
-
16
- #include "common/logging/LogInit.h"
17
- #include "common/net/ib/IBDevice.h"
18
- #include "common/utils/Duration.h"
19
- #include "common/utils/SysResource.h"
20
- #include "tests/lib/UnitTestFabric.h"
21
-
22
- namespace hf3fs::storage::benchmark {
23
-
24
- using namespace hf3fs::storage::client;
25
-
26
- class StorageBench : public test::UnitTestFabric {
27
- public:
28
- struct Options {
29
- const size_t numChunks;
30
- const size_t readSize;
31
- const size_t writeSize;
32
- const size_t batchSize;
33
- const uint64_t numReadSecs;
34
- const uint64_t numWriteSecs;
35
- const uint64_t clientTimeoutMS;
36
- const size_t numCoroutines;
37
- const size_t numTestThreads;
38
- const uint32_t randSeed = 0;
39
- const uint16_t chunkIdPrefix = 0xFFFF;
40
- const bool benchmarkNetwork = false;
41
- const bool benchmarkStorage = false;
42
- const bool ignoreIOError = false;
43
- const bool injectRandomServerError = false;
44
- const bool injectRandomClientError = false;
45
- const bool retryPermanentError = false;
46
- const bool verifyReadData = false;
47
- const bool verifyReadChecksum = false;
48
- const bool verifyWriteChecksum = true;
49
- const bool randomShuffleChunkIds = true;
50
- const bool generateTestData = true;
51
- const bool sparseChunkIds = true;
52
- const std::string statsFilePath = "./perfstats.csv";
53
- const std::vector<std::string> ibvDevices = {};
54
- const std::vector<std::string> ibnetZones = {};
55
- const std::vector<net::Address> mgmtdEndpoints = {};
56
- const std::string clusterId = kClusterId;
57
- const uint32_t chainTableId = 0;
58
- const uint32_t chainTableVersion = 0;
59
- const std::vector<uint32_t> chainIds = {};
60
- const std::vector<uint32_t> storageNodeIds = {};
61
- const size_t memoryAlignment = 1;
62
- const size_t readOffAlignment = 0;
63
- const size_t defaultPKeyIndex = 1;
64
- size_t readBatchSize = 0;
65
- size_t writeBatchSize = 0;
66
- size_t removeBatchSize = 0;
67
- };
68
-
69
- private:
70
- static constexpr uint32_t kTDigestMaxSize = 1000;
71
-
72
- struct ChunkInfo {
73
- ChainId chainId;
74
- ChunkId chunkId;
75
- size_t size;
76
- };
77
-
78
- Options benchOptions_;
79
- std::vector<folly::TDigest> writeLatencyDigests_;
80
- std::vector<folly::TDigest> readLatencyDigests_;
81
- folly::CPUThreadPoolExecutor testExecutor_;
82
- std::atomic_uint64_t numWriteBytes_;
83
- std::atomic_uint64_t numReadBytes_;
84
- folly::Random::DefaultGenerator randGen_;
85
- std::vector<std::vector<ChunkInfo>> chunkInfos_;
86
- std::vector<size_t> numCreatedChunks_;
87
- size_t totalNumChunks_;
88
- double totalChunkGiB_;
89
-
90
- public:
91
- StorageBench(const test::SystemSetupConfig &setupConfig, const Options &options)
92
- : UnitTestFabric(setupConfig),
93
- benchOptions_(options),
94
- writeLatencyDigests_(benchOptions_.numCoroutines, folly::TDigest(kTDigestMaxSize)),
95
- readLatencyDigests_(benchOptions_.numCoroutines, folly::TDigest(kTDigestMaxSize)),
96
- testExecutor_(benchOptions_.numTestThreads),
97
- numWriteBytes_(0),
98
- numReadBytes_(0),
99
- randGen_(folly::Random::create()),
100
- chunkInfos_(benchOptions_.numCoroutines),
101
- numCreatedChunks_(benchOptions_.numCoroutines) {
102
- if (benchOptions_.readBatchSize == 0) benchOptions_.readBatchSize = benchOptions_.batchSize;
103
- if (benchOptions_.writeBatchSize == 0) benchOptions_.writeBatchSize = benchOptions_.batchSize;
104
- if (benchOptions_.removeBatchSize == 0) benchOptions_.removeBatchSize = benchOptions_.batchSize;
105
- }
106
-
107
- void generateChunkIds() {
108
- static_assert(sizeof(benchOptions_.chunkIdPrefix) == 2);
109
- uint64_t chunkIdPrefix64 = ((uint64_t)benchOptions_.chunkIdPrefix) << (UINT64_WIDTH - UINT16_WIDTH);
110
- std::sort(chainIds_.begin(), chainIds_.end());
111
- static thread_local std::mt19937 generator;
112
- randGen_.seed(benchOptions_.randSeed);
113
-
114
- XLOGF(WARN,
115
- "Generating {} chunk ids with prefix {:08X} and random seed {}...",
116
- totalNumChunks_,
117
- chunkIdPrefix64,
118
- benchOptions_.randSeed);
119
-
120
- for (auto &chunkInfos : chunkInfos_) {
121
- uint64_t instancePrefix = chunkIdPrefix64 | folly::Random::rand64(randGen_);
122
- XLOGF(DBG3, "Random chunk id prefix {:08X}", instancePrefix);
123
-
124
- chunkInfos.reserve(chainIds_.size() * benchOptions_.numChunks);
125
-
126
- for (auto chainId : chainIds_) {
127
- for (size_t chunkIndex = 0; chunkIndex < benchOptions_.numChunks; chunkIndex++) {
128
- if (benchOptions_.sparseChunkIds) {
129
- uint64_t chunkIdHigh = chunkIdPrefix64 | (folly::Random::rand64(randGen_) & 0x000000FFFFFFFFFF);
130
- uint64_t chunkIdLow = (folly::Random::rand64(randGen_) << UINT32_WIDTH) + chunkIndex;
131
- chunkInfos.push_back({chainId, ChunkId(chunkIdHigh, chunkIdLow), 0});
132
- } else {
133
- chunkInfos.push_back({chainId, ChunkId(instancePrefix, chunkIndex), 0});
134
- }
135
- }
136
- }
137
-
138
- if (benchOptions_.randomShuffleChunkIds) std::shuffle(chunkInfos.begin(), chunkInfos.end(), generator);
139
- }
140
- }
141
-
142
- bool connect() {
143
- XLOGF(INFO, "Start to connect...");
144
-
145
- if (!setupIBSock()) {
146
- return false;
147
- }
148
-
149
- mgmtdClientConfig_.set_mgmtd_server_addresses(benchOptions_.mgmtdEndpoints);
150
- mgmtdClientConfig_.set_enable_auto_refresh(true);
151
- mgmtdClientConfig_.set_enable_auto_heartbeat(false);
152
- mgmtdClientConfig_.set_enable_auto_extend_client_session(true);
153
- mgmtdClientConfig_.set_auto_refresh_interval(3_s);
154
- mgmtdClientConfig_.set_auto_heartbeat_interval(3_s);
155
- mgmtdClientConfig_.set_auto_extend_client_session_interval(3_s);
156
- mgmtdClientConfig_.set_accept_incomplete_routing_info_during_mgmtd_bootstrapping(false);
157
-
158
- if (!client_.start()) {
159
- XLOGF(ERR, "Failed to start net client for mgmtd client");
160
- return false;
161
- }
162
-
163
- XLOGF(INFO, "Creating mgmtd client...");
164
-
165
- auto stubFactory = std::make_unique<hf3fs::stubs::RealStubFactory<hf3fs::mgmtd::MgmtdServiceStub>>(
166
- stubs::ClientContextCreator{[this](net::Address addr) { return client_.serdeCtx(addr); }});
167
- auto mgmtdClient = std::make_unique<hf3fs::client::MgmtdClientForClient>(benchOptions_.clusterId,
168
- std::move(stubFactory),
169
- mgmtdClientConfig_);
170
-
171
- auto physicalHostnameRes = SysResource::hostname(/*physicalMachineName=*/true);
172
- if (!physicalHostnameRes) {
173
- XLOGF(ERR, "getHostname(true) failed: {}", physicalHostnameRes.error());
174
- return false;
175
- }
176
-
177
- auto containerHostnameRes = SysResource::hostname(/*physicalMachineName=*/false);
178
- if (!containerHostnameRes) {
179
- XLOGF(ERR, "getHostname(false) failed: {}", containerHostnameRes.error());
180
- return false;
181
- }
182
-
183
- mgmtdClient->setClientSessionPayload({clientId_.uuid.toHexString(),
184
- flat::NodeType::CLIENT,
185
- flat::ClientSessionData::create(
186
- /*universalId=*/*physicalHostnameRes,
187
- /*description=*/fmt::format("StorageBench: {}", *containerHostnameRes),
188
- /*serviceGroups=*/std::vector<flat::ServiceGroupInfo>{},
189
- flat::ReleaseVersion::fromVersionInfo()),
190
- flat::UserInfo{}});
191
- folly::coro::blockingWait(mgmtdClient->start(&client_.tpg().bgThreadPool().randomPick()));
192
- mgmtdForClient_ = std::move(mgmtdClient);
193
-
194
- // get routing info
195
-
196
- for (size_t retry = 0; retry < 15; retry++) {
197
- auto routingInfo = mgmtdForClient_->getRoutingInfo();
198
-
199
- if (routingInfo == nullptr || routingInfo->raw()->chains.empty()) {
200
- XLOGF(WARN, "Empty routing info, #{} retry...", retry + 1);
201
- std::this_thread::sleep_for(std::chrono::milliseconds(1000));
202
- } else {
203
- for (const auto &[tableId, tableVersions] : routingInfo->raw()->chainTables) {
204
- if (tableId == benchOptions_.chainTableId) {
205
- if (tableVersions.empty()) {
206
- XLOGF(WARN, "No version found for chain table with id {}", tableId);
207
- return false;
208
- }
209
-
210
- XLOGF(INFO, "Found {} version(s) of chain table {}", tableVersions.size(), benchOptions_.chainTableId);
211
-
212
- flat::ChainTable chainTable;
213
-
214
- if (benchOptions_.chainTableVersion > 0) {
215
- flat::ChainTableVersion tableVersion(benchOptions_.chainTableVersion);
216
- auto tableIter = tableVersions.find(tableVersion);
217
-
218
- if (tableIter == tableVersions.end()) {
219
- XLOGF(WARN, "Version {} not found in chain table with id {}", tableVersion, tableId);
220
- return false;
221
- }
222
-
223
- chainTable = tableIter->second;
224
- XLOGF(INFO,
225
- "Found version {} of chain table {}: {}",
226
- benchOptions_.chainTableVersion,
227
- benchOptions_.chainTableId,
228
- chainTable.chainTableVersion);
229
- } else {
230
- const auto iter = --tableVersions.cend();
231
- const auto &latestTable = iter->second;
232
- chainTable = latestTable;
233
- XLOGF(INFO,
234
- "Found latest version of chain table {}: {}",
235
- benchOptions_.chainTableId,
236
- chainTable.chainTableVersion);
237
- }
238
-
239
- XLOGF(WARN,
240
- "Selected chain table: {}@{} [{}] {} chains",
241
- chainTable.chainTableId,
242
- chainTable.chainTableVersion,
243
- chainTable.desc,
244
- chainTable.chains.size());
245
-
246
- if (!benchOptions_.storageNodeIds.empty()) {
247
- for (const auto &chainId : chainTable.chains) {
248
- const auto chainInfo = routingInfo->raw()->getChain(chainId);
249
- for (const auto &target : chainInfo->targets) {
250
- const auto targetInfo = routingInfo->raw()->getTarget(target.targetId);
251
- auto nodeIter = std::find(benchOptions_.storageNodeIds.begin(),
252
- benchOptions_.storageNodeIds.end(),
253
- *targetInfo->nodeId);
254
- if (nodeIter != benchOptions_.storageNodeIds.end()) {
255
- chainIds_.push_back(chainId);
256
- break;
257
- }
258
- }
259
- }
260
- } else if (!benchOptions_.chainIds.empty()) {
261
- for (const auto &chainId : chainTable.chains) {
262
- auto chainIter = std::find(benchOptions_.chainIds.begin(), benchOptions_.chainIds.end(), chainId);
263
- if (chainIter != benchOptions_.chainIds.end()) {
264
- chainIds_.push_back(chainId);
265
- }
266
- }
267
- } else {
268
- chainIds_ = chainTable.chains;
269
- }
270
-
271
- break;
272
- }
273
- }
274
-
275
- if (!chainIds_.empty()) break;
276
- }
277
- }
278
-
279
- if (chainIds_.empty()) {
280
- XLOGF(ERR, "Failed to get chain table with id {}", benchOptions_.chainTableId);
281
- return false;
282
- } else {
283
- XLOGF(WARN, "Selected {} replication chains for benchmark", chainIds_.size());
284
- }
285
-
286
- // create storage client
287
-
288
- if (setupConfig_.client_config().empty()) {
289
- XLOGF(ERR, "Storage client config not specified");
290
- return false;
291
- }
292
-
293
- auto configRes = clientConfig_.atomicallyUpdate(setupConfig_.client_config(), false /*isHotUpdate*/);
294
- if (!configRes) {
295
- XLOGF(ERR, "Cannot load client config from {}, error: {}", setupConfig_.client_config(), configRes.error());
296
- return false;
297
- }
298
-
299
- totalNumChunks_ = chainIds_.size() * benchOptions_.numCoroutines * benchOptions_.numChunks;
300
- totalChunkGiB_ = (double)totalNumChunks_ * setupConfig_.chunk_size() / 1_GB;
301
- clientConfig_.retry().set_max_retry_time(Duration(std::chrono::milliseconds(benchOptions_.clientTimeoutMS)));
302
- clientConfig_.net_client().io_worker().ibsocket().set_sl(setupConfig_.service_level());
303
-
304
- XLOGF(INFO, "Creating storage client...");
305
- storageClient_ = client::StorageClient::create(clientId_, clientConfig_, *mgmtdForClient_);
306
-
307
- return true;
308
- }
309
-
310
- bool setupIBSock() {
311
- XLOGF(WARN, "Setting up IB socket...");
312
-
313
- std::vector<net::IBConfig::Subnet> subnets;
314
-
315
- for (const auto &ibnetZoneStr : benchOptions_.ibnetZones) {
316
- std::vector<std::string> ibnetZoneSubnet;
317
- boost::split(ibnetZoneSubnet, ibnetZoneStr, boost::is_any_of(":"));
318
-
319
- if (ibnetZoneSubnet.size() != 2) {
320
- XLOGF(CRITICAL, "Invalid IB zone subnet: {}", ibnetZoneStr);
321
- return false;
322
- }
323
-
324
- auto zone = boost::trim_copy(ibnetZoneSubnet[0]);
325
- auto subnet = boost::trim_copy(ibnetZoneSubnet[1]);
326
-
327
- if (zone.empty() || subnet.empty()) {
328
- XLOGF(CRITICAL, "Invalid IB zone subnet: {}", ibnetZoneStr);
329
- return false;
330
- }
331
-
332
- subnets.emplace_back();
333
- subnets.back().set_network_zones({zone});
334
- subnets.back().set_subnet(*net::IBConfig::Network::from(subnet));
335
- XLOGF(WARN, "Add IB network zone: {} -- {}", zone, subnet);
336
- }
337
-
338
- net::IBConfig ibConfig;
339
- ibConfig.set_subnets(subnets);
340
- ibConfig.set_allow_unknown_zone(false);
341
- ibConfig.set_default_network_zone("$HF3FS_NETWORK_ZONE");
342
- ibConfig.set_device_filter(benchOptions_.ibvDevices);
343
- ibConfig.set_default_pkey_index(benchOptions_.defaultPKeyIndex);
344
-
345
- auto ibResult = net::IBManager::start(ibConfig);
346
- if (ibResult.hasError()) {
347
- XLOGF(CRITICAL, "Cannot initialize IB device: {}", ibResult.error());
348
- return false;
349
- }
350
-
351
- return true;
352
- }
353
-
354
- bool setup() {
355
- XLOGF(WARN, "Setting up benchmark...");
356
-
357
- if (!setupIBSock()) {
358
- return false;
359
- }
360
-
361
- bool ok = setUpStorageSystem();
362
-
363
- totalNumChunks_ = chainIds_.size() * benchOptions_.numCoroutines * benchOptions_.numChunks;
364
- totalChunkGiB_ = (double)totalNumChunks_ * setupConfig_.chunk_size() / 1_GB;
365
- clientConfig_.retry().set_max_retry_time(Duration(std::chrono::milliseconds(benchOptions_.clientTimeoutMS)));
366
-
367
- return ok;
368
- }
369
-
370
- void teardown() {
371
- tearDownStorageSystem();
372
- net::IBManager::stop();
373
- }
374
-
375
- void printThroughput(hf3fs::SteadyClock::duration elapsedMicro, double totalGiB) {
376
- auto elapsedMilli = std::chrono::duration_cast<std::chrono::milliseconds>(elapsedMicro);
377
- double throughput = totalGiB / (elapsedMilli.count() / 1000.0);
378
- XLOGF(WARN, "Average throughput: {:.3f}GiB/s, total {:.3f} GiB", throughput, totalGiB);
379
- }
380
-
381
- void printLatencyDigest(const folly::TDigest &digest) {
382
- XLOGF(WARN, "latency summary ({} samples)", digest.count());
383
- XLOGF(WARN, "min: {:10.1f}us", digest.min());
384
- XLOGF(WARN, "max: {:10.1f}us", digest.max());
385
- XLOGF(WARN, "avg: {:10.1f}us", digest.mean());
386
- for (double p : {0.1, 0.2, 0.5, 0.9, 0.95, 0.99}) {
387
- XLOGF(WARN, "{}%: {:10.1f}us", p * 100.0, digest.estimateQuantile(p));
388
- }
389
- }
390
-
391
- void dumpPerfStats(const std::string &testName,
392
- const folly::TDigest &digest,
393
- hf3fs::SteadyClock::duration elapsedTime,
394
- double totalGiB,
395
- bool readIO) {
396
- if (benchOptions_.statsFilePath.empty()) return;
397
-
398
- boost::filesystem::path outFilePath(benchOptions_.statsFilePath);
399
-
400
- if (!boost::filesystem::exists(outFilePath) || boost::filesystem::is_empty(outFilePath)) {
401
- XLOGF(INFO, "Create a file for perfermance stats at {}", outFilePath);
402
- std::ofstream outFile(outFilePath);
403
- if (!outFile) {
404
- throw std::runtime_error("Failed to open file: " + outFilePath.string());
405
- }
406
-
407
- outFile << "test name,#storages,#chains,#replicas,concurrency,batch size,"
408
- "io size (bytes),effective batch size (batch size / #replicas),elapsed time (us),"
409
- "QPS,IOPS,bandwidth (MB/s),latency samples,min latency (us),max latency (us),avg latency (us),"
410
- "latency P50 (us),latency P75 (us),latency P90 (us),latency P95 (us),latency P99 (us)\n";
411
-
412
- if (!outFile) {
413
- throw std::runtime_error("Failed to write to file: " + outFilePath.string());
414
- }
415
-
416
- outFile.close();
417
- }
418
-
419
- auto elapsedMicro = std::chrono::duration_cast<std::chrono::microseconds>(elapsedTime);
420
- double bandwidthMBps = totalGiB * 1024.0 / (elapsedMicro.count() / 1'000'000.0);
421
- size_t ioSize = readIO ? benchOptions_.readSize : benchOptions_.writeSize;
422
- size_t batchSize = readIO ? benchOptions_.readBatchSize : benchOptions_.writeBatchSize;
423
- double iops = bandwidthMBps * 1024.0 * 1024.0 / ioSize;
424
- double qps = bandwidthMBps * 1024.0 * 1024.0 / (batchSize * ioSize);
425
-
426
- boost::filesystem::ofstream fout(outFilePath, std::ios_base::app);
427
-
428
- fout << fmt::format("{},{},{},{},{},{},{},{:.1f},{},{:.1f},{:.1f},{:.3f},{},{:.1f},{:.1f},{:.1f}",
429
- testName,
430
- setupConfig_.num_storage_nodes(),
431
- setupConfig_.num_chains(),
432
- setupConfig_.num_replicas(),
433
- benchOptions_.numCoroutines,
434
- batchSize,
435
- ioSize,
436
- double(batchSize) / setupConfig_.num_storage_nodes(),
437
- elapsedMicro.count(),
438
- qps,
439
- iops,
440
- bandwidthMBps,
441
- digest.count(),
442
- digest.min(),
443
- digest.max(),
444
- digest.mean());
445
-
446
- for (double p : {0.5, 0.75, 0.9, 0.95, 0.99}) {
447
- fout << fmt::format(",{:.1f}", digest.estimateQuantile(p));
448
- }
449
-
450
- fout << "\n";
451
- fout.close();
452
- }
453
-
454
- CoTask<uint32_t> batchWrite(uint32_t instanceId, size_t writeBatchSize, size_t writeSize, uint32_t numWriteSecs) {
455
- // create an aligned memory block
456
- size_t memoryBlockSize = ALIGN_UPPER(setupConfig_.chunk_size(), benchOptions_.memoryAlignment);
457
- auto memoryBlock = (uint8_t *)folly::aligned_malloc(memoryBlockSize, sysconf(_SC_PAGESIZE));
458
- auto deleter = [](uint8_t *ptr) { folly::aligned_free(ptr); };
459
- std::unique_ptr<uint8_t, decltype(deleter)> memoryBlockPtr(memoryBlock, deleter);
460
- std::memset(memoryBlock, 0xFF, memoryBlockSize);
461
-
462
- if (benchOptions_.verifyReadData) {
463
- for (size_t byteIndex = 0; byteIndex < memoryBlockSize; byteIndex++) {
464
- memoryBlock[byteIndex] = byteIndex;
465
- }
466
- }
467
-
468
- // register a block of memory
469
- auto regRes = storageClient_->registerIOBuffer(memoryBlock, memoryBlockSize);
470
-
471
- if (regRes.hasError()) {
472
- co_return regRes.error().code();
473
- }
474
-
475
- // create write IOs
476
-
477
- auto ioBuffer = std::move(*regRes);
478
-
479
- WriteOptions options;
480
- options.set_enableChecksum(benchOptions_.verifyWriteChecksum);
481
- options.debug().set_bypass_disk_io(benchOptions_.benchmarkNetwork);
482
- options.debug().set_bypass_rdma_xmit(benchOptions_.benchmarkStorage);
483
- options.debug().set_inject_random_server_error(benchOptions_.injectRandomServerError);
484
- options.debug().set_inject_random_client_error(benchOptions_.injectRandomClientError);
485
- options.retry().set_retry_permanent_error(benchOptions_.retryPermanentError);
486
-
487
- std::vector<double> elapsedMicroSecs;
488
- uint64_t numWriteBytes = 0;
489
-
490
- std::vector<WriteIO> writeIOs;
491
- writeIOs.reserve(writeBatchSize);
492
-
493
- auto benchStart = hf3fs::SteadyClock::now();
494
- std::vector<ChunkInfo> &chunkInfos = chunkInfos_[instanceId];
495
- size_t &numCreatedChunks = numCreatedChunks_[instanceId];
496
- size_t seqChunkIndex = 0;
497
-
498
- while (true) {
499
- if (numWriteSecs) {
500
- auto accumElapsedSecs =
501
- std::chrono::duration_cast<std::chrono::seconds>(hf3fs::SteadyClock::now() - benchStart);
502
- if (accumElapsedSecs >= std::chrono::seconds(numWriteSecs)) break;
503
- } else {
504
- if (numCreatedChunks >= chunkInfos.size()) break;
505
- }
506
-
507
- writeIOs.clear();
508
-
509
- for (size_t writeIndex = 0; writeIndex < writeBatchSize; writeIndex++) {
510
- auto &[chainId, chunkId, chunkSize] = chunkInfos[seqChunkIndex++ % chunkInfos.size()];
511
- size_t writeOffset = 0;
512
- size_t writeLength = 0;
513
-
514
- if (chunkSize < setupConfig_.chunk_size()) {
515
- writeOffset = chunkSize;
516
- writeLength = std::min(writeSize, setupConfig_.chunk_size() - writeOffset);
517
- chunkSize += writeLength;
518
- numCreatedChunks += chunkSize == setupConfig_.chunk_size();
519
- } else {
520
- writeOffset = folly::Random::rand32(0, setupConfig_.chunk_size() - writeSize);
521
- writeLength = writeSize;
522
- }
523
-
524
- auto writeIO = storageClient_->createWriteIO(chainId,
525
- chunkId,
526
- writeOffset,
527
- writeLength,
528
- setupConfig_.chunk_size(),
529
- &memoryBlock[writeOffset],
530
- &ioBuffer);
531
- writeIOs.push_back(std::move(writeIO));
532
- numWriteBytes += writeLength;
533
- }
534
-
535
- auto rpcStart = hf3fs::SteadyClock::now();
536
-
537
- co_await storageClient_->batchWrite(writeIOs, flat::UserInfo(), options);
538
-
539
- auto elapsedMicro = std::chrono::duration_cast<std::chrono::microseconds>(hf3fs::SteadyClock::now() - rpcStart);
540
- elapsedMicroSecs.push_back(elapsedMicro.count());
541
-
542
- if (!benchOptions_.ignoreIOError) {
543
- for (const auto &writeIO : writeIOs) {
544
- if (writeIO.result.lengthInfo.hasError()) {
545
- XLOGF(ERR, "Error in write result: {}", writeIO.result);
546
- co_return writeIO.result.lengthInfo.error().code();
547
- }
548
- if (writeIO.length != *writeIO.result.lengthInfo) {
549
- XLOGF(ERR, "Unexpected write length: {} != {}", *writeIO.result.lengthInfo, writeIO.length);
550
- co_return StorageClientCode::kRemoteIOError;
551
- }
552
- }
553
- }
554
- }
555
-
556
- folly::TDigest digest;
557
- writeLatencyDigests_[instanceId] = digest.merge(elapsedMicroSecs);
558
- numWriteBytes_ += numWriteBytes;
559
-
560
- co_return StatusCode::kOK;
561
- }
562
-
563
- CoTask<uint32_t> batchRead(uint32_t instanceId) {
564
- // create an aligned memory block
565
- size_t alignedBufSize = ALIGN_UPPER(std::max(size_t(1), benchOptions_.readSize), benchOptions_.memoryAlignment);
566
- size_t memoryBlockSize = alignedBufSize * benchOptions_.readBatchSize;
567
- auto memoryBlock = (uint8_t *)folly::aligned_malloc(memoryBlockSize, sysconf(_SC_PAGESIZE));
568
- auto deleter = [](uint8_t *ptr) { folly::aligned_free(ptr); };
569
- std::unique_ptr<uint8_t, decltype(deleter)> memoryBlockPtr(memoryBlock, deleter);
570
- std::memset(memoryBlock, 0, memoryBlockSize);
571
-
572
- // register a block of memory
573
- auto regRes = storageClient_->registerIOBuffer(memoryBlock, memoryBlockSize);
574
-
575
- if (regRes.hasError()) {
576
- co_return regRes.error().code();
577
- }
578
-
579
- std::vector<uint8_t> expectedChunkData(setupConfig_.chunk_size());
580
-
581
- if (benchOptions_.verifyReadData) {
582
- for (size_t byteIndex = 0; byteIndex < expectedChunkData.size(); byteIndex++) {
583
- expectedChunkData[byteIndex] = byteIndex;
584
- }
585
- }
586
-
587
- // create read IOs
588
-
589
- auto ioBuffer = std::move(*regRes);
590
-
591
- ReadOptions options;
592
- options.set_enableChecksum(benchOptions_.verifyReadChecksum);
593
- options.debug().set_bypass_disk_io(benchOptions_.benchmarkNetwork);
594
- options.debug().set_bypass_rdma_xmit(benchOptions_.benchmarkStorage);
595
- options.debug().set_inject_random_server_error(benchOptions_.injectRandomServerError);
596
- options.debug().set_inject_random_client_error(benchOptions_.injectRandomClientError);
597
- options.retry().set_retry_permanent_error(benchOptions_.retryPermanentError);
598
-
599
- std::vector<double> elapsedMicroSecs;
600
- uint64_t numReadBytes = 0;
601
- size_t offsetAlignment =
602
- benchOptions_.readOffAlignment ? benchOptions_.readOffAlignment : std::max(size_t(1), benchOptions_.readSize);
603
-
604
- std::vector<client::ReadIO> readIOs;
605
- readIOs.reserve(benchOptions_.readBatchSize);
606
-
607
- auto benchStart = hf3fs::SteadyClock::now();
608
- std::vector<ChunkInfo> &chunkInfos = chunkInfos_[instanceId];
609
-
610
- while (true) {
611
- auto accumElapsedSecs = std::chrono::duration_cast<std::chrono::seconds>(hf3fs::SteadyClock::now() - benchStart);
612
- if (accumElapsedSecs >= std::chrono::seconds(benchOptions_.numReadSecs)) break;
613
-
614
- readIOs.clear();
615
-
616
- for (size_t readIndex = 0; readIndex < benchOptions_.readBatchSize; readIndex++) {
617
- uint64_t randChunkIndex = folly::Random::rand64(0, chunkInfos.size());
618
- const auto &[chainId, chunkId, chunkSize] = chunkInfos[randChunkIndex];
619
- uint32_t offset = folly::Random::rand32(0, setupConfig_.chunk_size() - benchOptions_.readSize);
620
- uint32_t alignedOffset = ALIGN_LOWER(offset, offsetAlignment);
621
- auto readIO = storageClient_->createReadIO(chainId,
622
- chunkId,
623
- alignedOffset /*offset*/,
624
- benchOptions_.readSize /*length*/,
625
- &memoryBlock[readIndex * alignedBufSize],
626
- &ioBuffer);
627
- readIOs.push_back(std::move(readIO));
628
- numReadBytes += benchOptions_.readSize;
629
- }
630
-
631
- auto rpcStart = hf3fs::SteadyClock::now();
632
-
633
- co_await storageClient_->batchRead(readIOs, flat::UserInfo(), options);
634
-
635
- auto elapsedMicro = std::chrono::duration_cast<std::chrono::microseconds>(hf3fs::SteadyClock::now() - rpcStart);
636
- elapsedMicroSecs.push_back(elapsedMicro.count());
637
-
638
- if (!benchOptions_.ignoreIOError) {
639
- for (const auto &readIO : readIOs) {
640
- if (readIO.result.lengthInfo.hasError()) {
641
- XLOGF(ERR, "Error in read result: {}", readIO.result);
642
- co_return readIO.result.lengthInfo.error().code();
643
- }
644
- if (readIO.length != *readIO.result.lengthInfo) {
645
- XLOGF(ERR, "Unexpected read length: {} != {}", *readIO.result.lengthInfo, readIO.length);
646
- co_return StorageClientCode::kRemoteIOError;
647
- }
648
- }
649
- }
650
-
651
- if (benchOptions_.verifyReadData) {
652
- for (const auto &readIO : readIOs) {
653
- auto diffPos = std::mismatch(&readIO.data[0], &readIO.data[readIO.length], &expectedChunkData[readIO.offset]);
654
- uint32_t byteIndex = diffPos.first - &readIO.data[0];
655
- if (byteIndex < readIO.length) {
656
- XLOGF(ERR,
657
- "Wrong data at bytes index {} and chunk offset {}: data {:#x} != expected {:#x}",
658
- byteIndex,
659
- readIO.offset + byteIndex,
660
- *diffPos.first,
661
- *diffPos.second);
662
- co_return StorageClientCode::kFoundBug;
663
- }
664
- }
665
- }
666
- }
667
-
668
- folly::TDigest digest;
669
- readLatencyDigests_[instanceId] = digest.merge(elapsedMicroSecs);
670
- numReadBytes_ += numReadBytes;
671
-
672
- co_return StatusCode::kOK;
673
- }
674
-
675
- uint32_t generateChunks() {
676
- XLOGF(WARN, "Generating {} test chunks ({:.3f} GiB)...", totalNumChunks_, totalChunkGiB_);
677
-
678
- auto testStart = hf3fs::SteadyClock::now();
679
- std::vector<folly::SemiFuture<uint32_t>> writeTasks;
680
- numWriteBytes_ = 0;
681
-
682
- size_t writeBatchSize =
683
- std::max(benchOptions_.writeBatchSize,
684
- clientConfig_.traffic_control().write().max_concurrent_requests() / benchOptions_.numCoroutines);
685
-
686
- for (size_t instanceId = 0; instanceId < benchOptions_.numCoroutines; instanceId++) {
687
- writeTasks.push_back(batchWrite(instanceId, writeBatchSize, setupConfig_.chunk_size(), 0 /*numWriteSecs*/)
688
- .scheduleOn(folly::Executor::getKeepAliveToken(testExecutor_))
689
- .start());
690
- }
691
-
692
- auto results = folly::coro::blockingWait(folly::coro::collectAllRange(std::move(writeTasks)));
693
-
694
- for (auto res : results) {
695
- if (res != StatusCode::kOK) {
696
- XLOGF(WARN, "Test task failed with status code: {}", res);
697
- return res;
698
- }
699
- }
700
-
701
- auto elapsedTime = hf3fs::SteadyClock::now() - testStart;
702
- double totalGiB = (double)numWriteBytes_ / 1_GB;
703
- printThroughput(elapsedTime, totalGiB);
704
-
705
- auto mergedDigest = folly::TDigest::merge(writeLatencyDigests_);
706
- printLatencyDigest(mergedDigest);
707
-
708
- return StatusCode::kOK;
709
- }
710
-
711
- uint32_t runWriteBench() {
712
- XLOGF(WARN,
713
- "Running write benchmark ({} secs, {} chunks, {:.3f} GiB)...",
714
- benchOptions_.numWriteSecs,
715
- totalNumChunks_,
716
- totalChunkGiB_);
717
-
718
- auto testStart = hf3fs::SteadyClock::now();
719
- std::vector<folly::SemiFuture<uint32_t>> writeTasks;
720
- numWriteBytes_ = 0;
721
-
722
- for (size_t instanceId = 0; instanceId < benchOptions_.numCoroutines; instanceId++) {
723
- writeTasks.push_back(
724
- batchWrite(instanceId, benchOptions_.writeBatchSize, benchOptions_.writeSize, benchOptions_.numWriteSecs)
725
- .scheduleOn(folly::Executor::getKeepAliveToken(testExecutor_))
726
- .start());
727
- }
728
-
729
- auto results = folly::coro::blockingWait(folly::coro::collectAllRange(std::move(writeTasks)));
730
-
731
- for (auto res : results) {
732
- if (res != StatusCode::kOK) {
733
- XLOGF(WARN, "Test task failed with status code: {}", res);
734
- return res;
735
- }
736
- }
737
-
738
- auto elapsedTime = hf3fs::SteadyClock::now() - testStart;
739
- double totalGiB = (double)numWriteBytes_ / 1_GB;
740
- printThroughput(elapsedTime, totalGiB);
741
-
742
- auto mergedDigest = folly::TDigest::merge(writeLatencyDigests_);
743
- printLatencyDigest(mergedDigest);
744
-
745
- dumpPerfStats("batch write", mergedDigest, elapsedTime, totalGiB, false /*readIO*/);
746
-
747
- return StatusCode::kOK;
748
- }
749
-
750
- uint32_t runReadBench() {
751
- XLOGF(WARN, "Running read benchmark ({} secs)...", benchOptions_.numReadSecs);
752
-
753
- auto testStart = hf3fs::SteadyClock::now();
754
- std::vector<folly::SemiFuture<uint32_t>> readTasks;
755
- numReadBytes_ = 0;
756
-
757
- for (size_t instanceId = 0; instanceId < benchOptions_.numCoroutines; instanceId++) {
758
- readTasks.push_back(batchRead(instanceId).scheduleOn(folly::Executor::getKeepAliveToken(testExecutor_)).start());
759
- }
760
-
761
- auto results = folly::coro::blockingWait(folly::coro::collectAllRange(std::move(readTasks)));
762
-
763
- for (auto res : results) {
764
- if (res != StatusCode::kOK) {
765
- XLOGF(WARN, "Test task failed with status code: {}", res);
766
- return res;
767
- }
768
- }
769
-
770
- auto elapsedTime = hf3fs::SteadyClock::now() - testStart;
771
- double totalGiB = (double)numReadBytes_ / 1_GB;
772
- printThroughput(elapsedTime, totalGiB);
773
-
774
- auto mergedDigest = folly::TDigest::merge(readLatencyDigests_);
775
- printLatencyDigest(mergedDigest);
776
-
777
- dumpPerfStats("batch read", mergedDigest, elapsedTime, totalGiB, false /*readIO*/);
778
-
779
- return StatusCode::kOK;
780
- }
781
-
782
- uint32_t cleanup() {
783
- XLOGF(WARN, "Clean up chunks...");
784
-
785
- std::vector<folly::SemiFuture<uint32_t>> removeTasks;
786
-
787
- for (size_t instanceId = 0; instanceId < benchOptions_.numCoroutines; instanceId++) {
788
- auto batchRemove = [this](size_t instanceId) -> folly::coro::Task<uint32_t> {
789
- std::vector<client::RemoveChunksOp> removeOps;
790
- size_t totalNumChunksRemoved = 0;
791
-
792
- for (const auto &[chainId, chunkId, chunkSize] : chunkInfos_[instanceId]) {
793
- removeOps.push_back(storageClient_->createRemoveOp(chainId, chunkId, ChunkId(chunkId, 1)));
794
-
795
- if (removeOps.size() >= benchOptions_.removeBatchSize) {
796
- WriteOptions options;
797
- options.debug().set_inject_random_server_error(benchOptions_.injectRandomServerError);
798
- options.debug().set_inject_random_client_error(benchOptions_.injectRandomClientError);
799
- options.retry().set_retry_permanent_error(benchOptions_.retryPermanentError);
800
-
801
- co_await storageClient_->removeChunks(removeOps, flat::UserInfo(), options);
802
-
803
- for (const auto &removeOp : removeOps) {
804
- if (removeOp.result.statusCode.hasError()) {
805
- XLOGF(WARN, "Remove operation failed with error: {}", removeOp.result.statusCode.error());
806
- co_return removeOp.result.statusCode.error().code();
807
- }
808
-
809
- XLOGF_IF(DBG5,
810
- removeOp.result.numChunksRemoved != 1,
811
- "{} chunks removed in range {}",
812
- removeOp.result.numChunksRemoved,
813
- removeOp.chunkRange());
814
- totalNumChunksRemoved += removeOp.result.numChunksRemoved;
815
- }
816
-
817
- removeOps.clear();
818
- }
819
- }
820
-
821
- XLOGF(WARN, "{} chunks removed by instance #{}", totalNumChunksRemoved, instanceId);
822
- co_return StatusCode::kOK;
823
- };
824
-
825
- removeTasks.push_back(
826
- batchRemove(instanceId).scheduleOn(folly::Executor::getKeepAliveToken(testExecutor_)).start());
827
- }
828
-
829
- auto results = folly::coro::blockingWait(folly::coro::collectAllRange(std::move(removeTasks)));
830
-
831
- for (auto res : results) {
832
- if (res != StatusCode::kOK) {
833
- XLOGF(WARN, "Test task failed with status code: {}", res);
834
- return res;
835
- }
836
- }
837
-
838
- return StatusCode::kOK;
839
- };
840
-
841
- uint32_t truncate() {
842
- XLOGF(WARN, "Truncate chunks...");
843
-
844
- std::vector<folly::SemiFuture<uint32_t>> truncateTasks;
845
-
846
- for (size_t instanceId = 0; instanceId < benchOptions_.numCoroutines; instanceId++) {
847
- auto batchTruncate = [this](size_t instanceId) -> folly::coro::Task<uint32_t> {
848
- std::vector<client::TruncateChunkOp> truncateOps;
849
-
850
- for (const auto &[chainId, chunkId, chunkSize] : chunkInfos_[instanceId]) {
851
- truncateOps.push_back(storageClient_->createTruncateOp(chainId, chunkId, 0, setupConfig_.chunk_size()));
852
-
853
- if (truncateOps.size() >= benchOptions_.writeBatchSize) {
854
- WriteOptions options;
855
- options.debug().set_inject_random_server_error(benchOptions_.injectRandomServerError);
856
- options.debug().set_inject_random_client_error(benchOptions_.injectRandomClientError);
857
- options.retry().set_retry_permanent_error(benchOptions_.retryPermanentError);
858
-
859
- co_await storageClient_->truncateChunks(truncateOps, flat::UserInfo(), options);
860
-
861
- for (const auto &truncateOp : truncateOps) {
862
- if (truncateOp.result.lengthInfo.hasError()) {
863
- XLOGF(WARN, "Truncate operation failed with error: {}", truncateOp.result.lengthInfo.error());
864
- co_return truncateOp.result.lengthInfo.error().code();
865
- }
866
- }
867
-
868
- truncateOps.clear();
869
- }
870
- }
871
-
872
- co_return StatusCode::kOK;
873
- };
874
-
875
- truncateTasks.push_back(
876
- batchTruncate(instanceId).scheduleOn(folly::Executor::getKeepAliveToken(testExecutor_)).start());
877
- }
878
-
879
- auto results = folly::coro::blockingWait(folly::coro::collectAllRange(std::move(truncateTasks)));
880
-
881
- for (auto res : results) {
882
- if (res != StatusCode::kOK) {
883
- XLOGF(WARN, "Test task failed with status code: {}", res);
884
- return res;
885
- }
886
- }
887
-
888
- return StatusCode::kOK;
889
- };
890
-
891
- bool run() {
892
- if (benchOptions_.numWriteSecs > 0)
893
- if (runWriteBench() != StatusCode::kOK) return false;
894
- if (benchOptions_.generateTestData)
895
- if (generateChunks() != StatusCode::kOK) return false;
896
- if (benchOptions_.numReadSecs > 0)
897
- if (runReadBench() != StatusCode::kOK) return false;
898
- return true;
899
- }
900
-
901
- uint64_t getWriteBytes() { return numWriteBytes_; }
902
-
903
- uint64_t getReadBytes() { return numReadBytes_; }
904
- };
905
-
906
- } // namespace hf3fs::storage::benchmark
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
asian_ai/chinese/3FS/cmake/AddCrate.cmake DELETED
@@ -1,33 +0,0 @@
1
- if (CMAKE_BUILD_TYPE STREQUAL "Debug")
2
- set(CARGO_CMD cargo build)
3
- set(TARGET_DIR "debug")
4
- else ()
5
- set(CARGO_CMD cargo build --release)
6
- set(TARGET_DIR "release")
7
- endif ()
8
-
9
- add_custom_target(
10
- cargo_build_all ALL
11
- COMMAND ${CARGO_CMD}
12
- WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}"
13
- )
14
-
15
- macro(add_crate NAME)
16
- set(LIBRARY "${PROJECT_SOURCE_DIR}/target/${TARGET_DIR}/lib${NAME}.a")
17
- set(SOURCES
18
- "${PROJECT_SOURCE_DIR}/target/cxxbridge/${NAME}/src/cxx.rs.h"
19
- "${PROJECT_SOURCE_DIR}/target/cxxbridge/${NAME}/src/cxx.rs.cc"
20
- )
21
-
22
- add_custom_command(
23
- OUTPUT ${SOURCES} ${LIBRARY}
24
- COMMAND ${CARGO_CMD}
25
- WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/${NAME}"
26
- )
27
-
28
- add_library(${NAME} STATIC ${SOURCES} ${LIBRARY})
29
- target_link_libraries(${NAME} pthread dl ${LIBRARY})
30
- target_include_directories(${NAME} PUBLIC "${PROJECT_SOURCE_DIR}/target/cxxbridge")
31
- target_compile_options(${NAME} PUBLIC -Wno-dollar-in-identifier-extension)
32
- add_dependencies(${NAME} cargo_build_all)
33
- endmacro()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
asian_ai/chinese/3FS/cmake/ApacheArrow.cmake DELETED
@@ -1,61 +0,0 @@
1
- add_library(apache_arrow_static INTERFACE)
2
- add_library(arrow_static STATIC IMPORTED)
3
- add_library(parquet_static STATIC IMPORTED)
4
- add_library(arrow_dependencies STATIC IMPORTED)
5
-
6
- set(PREFIX "${CMAKE_CURRENT_BINARY_DIR}")
7
- set(ARROW_RELEASE_BUILD_DIR "${CMAKE_CURRENT_BINARY_DIR}/src/apache-arrow-cpp/cpp/build/release")
8
-
9
- # https://cmake.org/cmake/help/latest/policy/CMP0097.html
10
- # Starting with CMake 3.16, explicitly setting GIT_SUBMODULES to an empty string
11
- # means no submodules will be initialized or updated.
12
- cmake_policy(SET CMP0097 NEW)
13
-
14
- if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.28)
15
- set(ARROW_BUILD_PARALLEL "")
16
- else()
17
- set(ARROW_BUILD_PARALLEL "-j8")
18
- endif()
19
-
20
- include(ExternalProject)
21
- ExternalProject_Add(
22
- apache-arrow-cpp
23
- PREFIX ${PREFIX}
24
- GIT_REPOSITORY https://github.com/apache/arrow.git
25
- GIT_TAG b7d2f7ffca66c868bd2fce5b3749c6caa002a7f0
26
- GIT_SHALLOW ON
27
- GIT_PROGRESS ON
28
- GIT_SUBMODULES ""
29
- SOURCE_SUBDIR "cpp"
30
- BUILD_IN_SOURCE ON
31
- INSTALL_DIR ${PREFIX}
32
- CONFIGURE_COMMAND bash -x -c "\
33
- ( cd thirdparty && [[ -f export.sh ]] || ./download_dependencies.sh | tee export.sh ) && \
34
- source thirdparty/export.sh && cmake -S . -B . \
35
- -DCMAKE_BUILD_TYPE=Release \
36
- -DARROW_USE_CCACHE=OFF \
37
- -DARROW_USE_SCCACHE=OFF \
38
- -DARROW_DEPENDENCY_SOURCE=BUNDLED \
39
- -DARROW_BUILD_STATIC=ON \
40
- -DARROW_JEMALLOC=ON \
41
- -DARROW_SIMD_LEVEL=DEFAULT \
42
- -DARROW_BUILD_EXAMPLES=OFF \
43
- -DARROW_PARQUET=ON -DARROW_CSV=ON \
44
- -DARROW_WITH_ZSTD=ON -DARROW_WITH_LZ4=ON -DARROW_WITH_ZLIB=ON"
45
- BUILD_COMMAND bash -x -c "source thirdparty/export.sh && cmake --build . ${ARROW_BUILD_PARALLEL}"
46
- BUILD_JOB_SERVER_AWARE 1
47
- INSTALL_COMMAND cmake --install . --prefix "${PREFIX}"
48
- BUILD_BYPRODUCTS
49
- "${ARROW_RELEASE_BUILD_DIR}/libarrow.a"
50
- "${ARROW_RELEASE_BUILD_DIR}/libparquet.a"
51
- "${ARROW_RELEASE_BUILD_DIR}/libarrow_bundled_dependencies.a"
52
- )
53
-
54
- add_dependencies(arrow_static apache-arrow-cpp)
55
- add_dependencies(parquet_static apache-arrow-cpp)
56
- add_dependencies(arrow_dependencies apache-arrow-cpp)
57
- set_target_properties(arrow_static PROPERTIES IMPORTED_LOCATION "${ARROW_RELEASE_BUILD_DIR}/libarrow.a")
58
- set_target_properties(parquet_static PROPERTIES IMPORTED_LOCATION "${ARROW_RELEASE_BUILD_DIR}/libparquet.a")
59
- set_target_properties(arrow_dependencies PROPERTIES IMPORTED_LOCATION "${ARROW_RELEASE_BUILD_DIR}/libarrow_bundled_dependencies.a")
60
- target_include_directories(apache_arrow_static SYSTEM INTERFACE "${PREFIX}/include")
61
- target_link_libraries(apache_arrow_static INTERFACE parquet_static arrow_static arrow_dependencies)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
asian_ai/chinese/3FS/cmake/CLangFormat.cmake DELETED
@@ -1,24 +0,0 @@
1
- set(CLANG_FORMAT "/usr/bin/clang-format-14")
2
- if(EXISTS ${CLANG_FORMAT})
3
- message(STATUS "Found clang-format at ${CLANG_FORMAT}")
4
-
5
- set(SOURCE_DIRS
6
- ${CMAKE_SOURCE_DIR}/src
7
- ${CMAKE_SOURCE_DIR}/tests
8
- ${CMAKE_SOURCE_DIR}/benchmarks
9
- )
10
-
11
- # For now, it just hard codes the source files list to globs. That works
12
- # fine until we have another directory in `src/`. We should ideally gather
13
- # this from SOURCE_FILES list. But, should filter the thirs_party sources.
14
- # Taking a quick route for now. We should deal with it sometime down the line.
15
- add_custom_target(format
16
- COMMENT "Running clang-format"
17
- COMMAND find ${SOURCE_DIRS} -name '*.cc' -o -name '*.cpp' -o -name '*.h' | grep -v "_generated.h" | xargs ${CLANG_FORMAT} -i)
18
-
19
- add_custom_target(check-format
20
- COMMENT "Running clang-format"
21
- COMMAND find ${SOURCE_DIRS} -name '*.cc' -o -name '*.cpp' -o -name '*.h' | grep -v "_generated.h" | xargs ${CLANG_FORMAT} --Werror --dry-run)
22
- else()
23
- message(FATAL_ERROR "clang-format-14 not found")
24
- endif()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
asian_ai/chinese/3FS/cmake/CLangTidy.cmake DELETED
@@ -1,52 +0,0 @@
1
- # clang-tidy generates too many warnings, so just disable it by default.
2
- option(ENABLE_CLANG_TIDY "Run clang-tidy during build" OFF)
3
-
4
- find_program(CLANG_TIDY NAMES clang-tidy-14)
5
- if(CLANG_TIDY)
6
- if(CMake_SOURCE_DIR STREQUAL CMake_BINARY_DIR)
7
- message(FATAL_ERROR "CMake_RUN_CLANG_TIDY requires an out-of-source build!")
8
- endif()
9
-
10
- if(NOT CMAKE_EXPORT_COMPILE_COMMANDS)
11
- message(WARNING "CMAKE_EXPORT_COMPILE_COMMANDS=OFF, clang-tidy may not works!!!")
12
- endif()
13
-
14
- set(HEADER_FILTER "${CMAKE_SOURCE_DIR}/\\(src\\|tests\\|benchmarks\\|demos\\)")
15
-
16
- if(ENABLE_CLANG_TIDY)
17
- set(CMAKE_CXX_CLANG_TIDY ${CLANG_TIDY} --header-filter ${HEADER_FILTER})
18
-
19
- # Create a preprocessor definition that depends on .clang-tidy content so
20
- # the compile command will change when .clang-tidy changes. This ensures
21
- # that a subsequent build re-runs clang-tidy on all sources even if they
22
- # do not otherwise need to be recompiled. Nothing actually uses this
23
- # definition. We add it to targets on which we run clang-tidy just to
24
- # get the build dependency on the .clang-tidy file.
25
- file(SHA1 ${CMAKE_CURRENT_SOURCE_DIR}/.clang-tidy clang_tidy_sha1)
26
- set(CLANG_TIDY_DEFINITIONS "CLANG_TIDY_SHA1=${clang_tidy_sha1}")
27
- unset(clang_tidy_sha1)
28
-
29
- configure_file(.clang-tidy .clang-tidy COPYONLY)
30
- endif()
31
-
32
- set(SOURCE_DIRS
33
- ${CMAKE_SOURCE_DIR}/src
34
- ${CMAKE_SOURCE_DIR}/tests
35
- ${CMAKE_SOURCE_DIR}/demos
36
- ${CMAKE_SOURCE_DIR}/benchmarks
37
- )
38
-
39
- # For now, it just hard codes the source files list to globs. That works
40
- # fine until we have another directory in `src/`. We should ideally gather
41
- # this from SOURCE_FILES list. But, should filter the thirs_party sources.
42
- # Taking a quick route for now. We should deal with it sometime down the line.
43
- add_custom_target(clang-tidy
44
- COMMENT "Running clang-tidy"
45
- COMMAND run-clang-tidy-14 -header-filter ${HEADER_FILTER} `find ${SOURCE_DIRS} -name "*.cc" -o -name "*.cpp" -not -name "*.actor.cpp" ` -quiet)
46
-
47
- add_custom_target(clang-tidy-fix
48
- COMMENT "Running clang-tidy -fix"
49
- COMMAND run-clang-tidy-14 -header-filter ${HEADER_FILTER} `find ${SOURCE_DIRS} -name "*.cc" -o -name "*.cpp" -not -name "*.actor.cpp" ` -fix -quiet)
50
- else()
51
- message(WARNING "clang-tidy-14 not found!!!")
52
- endif()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
asian_ai/chinese/3FS/cmake/CTestCustom.cmake DELETED
@@ -1,12 +0,0 @@
1
- file (STRINGS "@CMAKE_BINARY_DIR@/CTestTestfile.cmake" LINES)
2
-
3
- # overwrite the file....
4
- file(WRITE "@CMAKE_BINARY_DIR@/CTestTestfile.cmake" "")
5
-
6
- # loop through the lines,
7
- foreach(LINE IN LISTS LINES)
8
- # remove unwanted parts
9
- string(REGEX REPLACE ".*third_party.*" "" STRIPPED "${LINE}")
10
- # and write the (changed) line ...
11
- file(APPEND "@CMAKE_BINARY_DIR@/CTestTestfile.cmake" "${STRIPPED}\n")
12
- endforeach()
 
 
 
 
 
 
 
 
 
 
 
 
 
asian_ai/chinese/3FS/cmake/CodeCoverage.cmake DELETED
@@ -1,27 +0,0 @@
1
- option(ENABLE_CODE_COVERAGE "Enable code coverage" OFF)
2
- if(ENABLE_CODE_COVERAGE)
3
- if(CMAKE_BUILD_TYPE_UC STREQUAL "DEBUG" )
4
- message(STATUS "Enable code coverage with debug mode.")
5
- else()
6
- message(WARNING "Code coverage with no debug mode!!!")
7
- endif()
8
-
9
- if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
10
- set(COVERAGE_COMPILER_FLAGS "-g -fprofile-arcs -ftest-coverage")
11
- link_libraries(gcov)
12
- elseif(CMAKE_CXX_COMPILER_ID MATCHES "[Cc]lang")
13
- set(COVERAGE_COMPILER_FLAGS "-g -fprofile-instr-generate -fcoverage-mapping")
14
- else()
15
- message(FATAL_ERROR "Unknown compiler iid ${CMAKE_CXX_COMPILER_ID}")
16
- endif()
17
-
18
- include(CheckCXXCompilerFlag)
19
- check_cxx_compiler_flag(-fprofile-abs-path HAVE_fprofile_abs_path)
20
- if(HAVE_fprofile_abs_path)
21
- set(COVERAGE_COMPILER_FLAGS "${COVERAGE_COMPILER_FLAGS} -fprofile-abs-path")
22
- endif()
23
-
24
- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${COVERAGE_COMPILER_FLAGS}")
25
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${COVERAGE_COMPILER_FLAGS}")
26
- message(STATUS "Appending code coverage compiler flags: ${COVERAGE_COMPILER_FLAGS}")
27
- endif()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
asian_ai/chinese/3FS/cmake/CompileFlags.cmake DELETED
@@ -1,21 +0,0 @@
1
- macro(store_compile_flags)
2
- set(ORIGINAL_C_FLAGS "${CMAKE_C_FLAGS}")
3
- set(ORIGINAL_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG}")
4
- set(ORIGINAL_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}")
5
- set(ORIGINAL_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO}")
6
- set(ORIGINAL_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
7
- set(ORIGINAL_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}")
8
- set(ORIGINAL_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}")
9
- set(ORIGINAL_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}")
10
- endmacro()
11
-
12
- macro(restore_compile_flags)
13
- set(CMAKE_C_FLAGS "${ORIGINAL_C_FLAGS}")
14
- set(CMAKE_C_FLAGS_DEBUG "${ORIGINAL_C_FLAGS_DEBUG}")
15
- set(CMAKE_C_FLAGS_RELEASE "${ORIGINAL_C_FLAGS_RELEASE}")
16
- set(CMAKE_C_FLAGS_RELWITHDEBINFO "${ORIGINAL_C_FLAGS_RELWITHDEBINFO}")
17
- set(CMAKE_CXX_FLAGS "${ORIGINAL_CXX_FLAGS}")
18
- set(CMAKE_CXX_FLAGS_DEBUG "${ORIGINAL_CXX_FLAGS_DEBUG}")
19
- set(CMAKE_CXX_FLAGS_RELEASE "${ORIGINAL_CXX_FLAGS_RELEASE}")
20
- set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${ORIGINAL_CXX_FLAGS_RELWITHDEBINFO}")
21
- endmacro()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
asian_ai/chinese/3FS/cmake/DumpConfig.cmake DELETED
@@ -1,15 +0,0 @@
1
- if (ENABLE_FUSE_APPLICATION)
2
- add_custom_target(dump-config
3
- COMMENT "Running dump config"
4
- COMMAND find ${CMAKE_CURRENT_BINARY_DIR} -name 'meta_main' -o -name 'mgmtd_main' -o -name 'storage_main' -o -name 'admin_cli' -o -name 'hf3fs_fuse_main' | xargs -I {} bash -c '{} --dump_default_cfg > ${CMAKE_SOURCE_DIR}/configs/`basename {}`.toml'
5
- COMMAND find ${CMAKE_CURRENT_BINARY_DIR} -name 'meta_main' -o -name 'mgmtd_main' -o -name 'storage_main' -o -name 'hf3fs_fuse_main' | xargs -I {} bash -c '{} --dump_default_app_cfg > ${CMAKE_SOURCE_DIR}/configs/`basename {}`_app.toml'
6
- COMMAND find ${CMAKE_CURRENT_BINARY_DIR} -name 'meta_main' -o -name 'mgmtd_main' -o -name 'storage_main' -o -name 'hf3fs_fuse_main' | xargs -I {} bash -c '{} --dump_default_launcher_cfg > ${CMAKE_SOURCE_DIR}/configs/`basename {}`_launcher.toml')
7
- add_dependencies(dump-config meta_main mgmtd_main storage_main admin_cli hf3fs_fuse_main)
8
- else()
9
- add_custom_target(dump-config
10
- COMMENT "Running dump config"
11
- COMMAND find ${CMAKE_CURRENT_BINARY_DIR} -name 'meta_main' -o -name 'mgmtd_main' -o -name 'storage_main' -o -name 'admin_cli' | xargs -I {} bash -c '{} --dump_default_cfg > ${CMAKE_SOURCE_DIR}/configs/`basename {}`.toml'
12
- COMMAND find ${CMAKE_CURRENT_BINARY_DIR} -name 'meta_main' -o -name 'mgmtd_main' -o -name 'storage_main' | xargs -I {} bash -c '{} --dump_default_app_cfg > ${CMAKE_SOURCE_DIR}/configs/`basename {}`_app.toml'
13
- COMMAND find ${CMAKE_CURRENT_BINARY_DIR} -name 'meta_main' -o -name 'mgmtd_main' -o -name 'storage_main' | xargs -I {} bash -c '{} --dump_default_launcher_cfg > ${CMAKE_SOURCE_DIR}/configs/`basename {}`_launcher.toml')
14
- add_dependencies(dump-config meta_main mgmtd_main storage_main admin_cli)
15
- endif()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
asian_ai/chinese/3FS/cmake/GitVersion.cmake DELETED
@@ -1,127 +0,0 @@
1
- find_package(Git REQUIRED)
2
-
3
- if (NOT DEFINED PRE_CONFIGURE_DIR)
4
- set(PRE_CONFIGURE_DIR ${PROJECT_SOURCE_DIR}/src/common/utils)
5
- endif ()
6
-
7
- if (NOT DEFINED POST_BUILD_DIR)
8
- set(POST_BUILD_DIR ${PROJECT_BINARY_DIR})
9
- endif ()
10
-
11
- set(PRE_CONFIGURE_FILE ${PRE_CONFIGURE_DIR}/VersionInfo.cc.in)
12
- set(POST_CONFIGURE_FILE ${POST_BUILD_DIR}/src/common/utils/VersionInfo.cc)
13
-
14
- function(CheckGitWrite git_hash)
15
- file(WRITE ${POST_BUILD_DIR}/git-state.txt ${git_hash})
16
- endfunction()
17
-
18
- function(CheckGitRead git_hash)
19
- if (EXISTS ${POST_BUILD_DIR}/git-state.txt)
20
- file(STRINGS ${POST_BUILD_DIR}/git-state.txt CONTENT)
21
- LIST(GET CONTENT 0 var)
22
- set(${git_hash} ${var} PARENT_SCOPE)
23
- endif ()
24
- endfunction()
25
-
26
- function(CheckGitVersion)
27
- # Get the latest abbreviated commit hash of the working branch
28
- execute_process(
29
- COMMAND ${GIT_EXECUTABLE} rev-parse --short=8 HEAD
30
- WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
31
- OUTPUT_VARIABLE BUILD_COMMIT_HASH_SHORT
32
- OUTPUT_STRIP_TRAILING_WHITESPACE
33
- )
34
- execute_process(
35
- COMMAND ${GIT_EXECUTABLE} rev-parse HEAD
36
- WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
37
- OUTPUT_VARIABLE BUILD_COMMIT_HASH_FULL
38
- OUTPUT_STRIP_TRAILING_WHITESPACE
39
- )
40
- execute_process(
41
- COMMAND ${GIT_EXECUTABLE} log -1 --format=%at --date=local
42
- WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
43
- OUTPUT_VARIABLE BUILD_TIMESTAMP
44
- OUTPUT_STRIP_TRAILING_WHITESPACE
45
- )
46
- execute_process(
47
- COMMAND date -d @${BUILD_TIMESTAMP} +%Y%m%d
48
- WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
49
- OUTPUT_VARIABLE BUILD_DATE
50
- OUTPUT_STRIP_TRAILING_WHITESPACE
51
- )
52
- execute_process(
53
- COMMAND ${GIT_EXECUTABLE} describe --tags --abbrev=0
54
- WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
55
- OUTPUT_VARIABLE BUILD_TAG
56
- OUTPUT_STRIP_TRAILING_WHITESPACE
57
- )
58
- execute_process(
59
- COMMAND bash -c "${GIT_EXECUTABLE} describe --tags --long | sed -E 's/(.*)-([0-9]+)-(\\w+)/\\2/g'"
60
- WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
61
- OUTPUT_VARIABLE BUILD_TAG_SEQ_NUM
62
- OUTPUT_STRIP_TRAILING_WHITESPACE
63
- )
64
- if(NOT DEFINED BUILD_TAG OR BUILD_TAG STREQUAL "")
65
- set(BUILD_TAG "250228")
66
- endif()
67
- if(NOT DEFINED BUILD_TAG_SEQ_NUM OR BUILD_TAG_SEQ_NUM STREQUAL "")
68
- set(BUILD_TAG_SEQ_NUM "1")
69
- endif()
70
- message(STATUS "Git Commit hash: ${BUILD_COMMIT_HASH_SHORT} ${BUILD_COMMIT_HASH_FULL}")
71
- message(STATUS "Git Commit Date & Timestamp: ${BUILD_DATE} ${BUILD_TIMESTAMP}")
72
- message(STATUS "Git Commit Tag & Seq Num: ${BUILD_TAG} ${BUILD_TAG_SEQ_NUM}")
73
-
74
- set(BUILD_VERSION_MAJOR "${PROJECT_VERSION_MAJOR}")
75
- set(BUILD_VERSION_MINOR "${PROJECT_VERSION_MINOR}")
76
- set(BUILD_VERSION_PATCH "${PROJECT_VERSION_PATCH}")
77
- set(BUILD_VERSION "${PROJECT_VERSION}")
78
-
79
- CheckGitRead(GIT_HASH_CACHE)
80
-
81
- if (NOT DEFINED GIT_HASH_CACHE)
82
- set(GIT_HASH_CACHE "INVALID")
83
- endif ()
84
-
85
- if (NOT DEFINED BUILD_ON_RELEASE_BRANCH)
86
- set(BUILD_ON_RELEASE_BRANCH "false")
87
- endif ()
88
-
89
- if (NOT DEFINED BUILD_PIPELINE_ID)
90
- set(BUILD_PIPELINE_ID "999999")
91
- endif()
92
-
93
- # Only update the git_version.cpp if the hash has changed. This will
94
- # prevent us from rebuilding the project more than we need to.
95
- if (NOT ${BUILD_COMMIT_HASH_FULL} STREQUAL ${GIT_HASH_CACHE} OR NOT EXISTS ${POST_CONFIGURE_FILE})
96
- # Set che GIT_HASH_CACHE variable the next build won't have
97
- # to regenerate the source file.
98
- CheckGitWrite("${BUILD_COMMIT_HASH_FULL}")
99
- configure_file(${PRE_CONFIGURE_FILE} ${POST_CONFIGURE_FILE} @ONLY)
100
- endif ()
101
- endfunction()
102
-
103
- function(CheckGitSetup project_src_dir)
104
- add_custom_target(AlwaysCheckGit COMMAND ${CMAKE_COMMAND}
105
- -DRUN_CHECK_GIT_VERSION=1
106
- -DPRE_CONFIGURE_DIR=${PRE_CONFIGURE_DIR}
107
- -DPOST_BUILD_DIR=${POST_BUILD_DIR}
108
- -DGIT_HASH_CACHE=${GIT_HASH_CACHE}
109
- -DPROJECT_VERSION_MAJOR=${PROJECT_VERSION_MAJOR}
110
- -DPROJECT_VERSION_MINOR=${PROJECT_VERSION_MINOR}
111
- -DPROJECT_VERSION_PATCH=${PROJECT_VERSION_PATCH}
112
- -DPROJECT_VERSION=${PROJECT_VERSION}
113
- -DPROJECT_SOURCE_DIR=${project_src_dir}
114
- -P ${PROJECT_SOURCE_DIR}/cmake/GitVersion.cmake
115
- DEPENDS ${PRE_CONFIGURE_FILE}
116
- BYPRODUCTS ${POST_CONFIGURE_FILE}
117
- )
118
-
119
- add_library(version-info STATIC ${POST_CONFIGURE_FILE})
120
- target_include_directories(version-info PUBLIC ${PROJECT_SOURCE_DIR}/src)
121
- add_dependencies(version-info AlwaysCheckGit)
122
- CheckGitVersion()
123
- endfunction()
124
-
125
- if (RUN_CHECK_GIT_VERSION)
126
- CheckGitVersion()
127
- endif ()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
asian_ai/chinese/3FS/cmake/Jemalloc.cmake DELETED
@@ -1,20 +0,0 @@
1
- add_library(jemalloc INTERFACE)
2
- add_library(hf3fs_jemalloc_shared SHARED IMPORTED)
3
-
4
- include(ExternalProject)
5
- set(JEMALLOC_DIR "${CMAKE_BINARY_DIR}/third_party/jemalloc")
6
-
7
- ExternalProject_add(Hf3fsJemalloc_project
8
- SOURCE_DIR "${PROJECT_SOURCE_DIR}/third_party/jemalloc"
9
- BUILD_BYPRODUCTS "${JEMALLOC_DIR}/include/jemalloc/jemalloc.h"
10
- "${JEMALLOC_DIR}/lib/libjemalloc.so.2"
11
- CONFIGURE_COMMAND ./autogen.sh && ./configure --prefix=${JEMALLOC_DIR} --disable-cxx --enable-prof --disable-initial-exec-tls
12
- BUILD_IN_SOURCE ON
13
- BUILD_COMMAND make -j 6
14
- INSTALL_DIR "${JEMALLOC_DIR}"
15
- INSTALL_COMMAND make install)
16
-
17
- add_dependencies(hf3fs_jemalloc_shared Hf3fsJemalloc_project)
18
- set_target_properties(hf3fs_jemalloc_shared PROPERTIES IMPORTED_LOCATION "${JEMALLOC_DIR}/lib/libjemalloc.so.2")
19
- target_include_directories(hf3fs_jemalloc_shared INTERFACE "${JEMALLOC_DIR}/include")
20
- target_link_libraries(jemalloc INTERFACE hf3fs_jemalloc_shared)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
asian_ai/chinese/3FS/cmake/Sanitizers.cmake DELETED
@@ -1,242 +0,0 @@
1
- #
2
- # Copyright (C) 2018-2022 by George Cave - gcave@stablecoder.ca
3
- #
4
- # Licensed under the Apache License, Version 2.0 (the "License"); you may not
5
- # use this file except in compliance with the License. You may obtain a copy of
6
- # the License at
7
- #
8
- # http://www.apache.org/licenses/LICENSE-2.0
9
- #
10
- # Unless required by applicable law or agreed to in writing, software
11
- # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12
- # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13
- # License for the specific language governing permissions and limitations under
14
- # the License.
15
-
16
- include(CheckCXXSourceCompiles)
17
-
18
- set(SANITIZER "" CACHE STRING "Sanitizer: ASAN, MSAN, UBSAN, TSAN")
19
- if(SANITIZER STREQUAL "ASAN")
20
- message(STATUS "Build with Address Sanitizer.")
21
- set(USE_SANITIZER "Address")
22
- set(USE_ASAN ON)
23
- elseif(SANITIZER STREQUAL "MSAN")
24
- message(STATUS "Build with Memory Sanitizer.")
25
- set(USE_SANITIZER "Memory")
26
- set(USE_MSAN ON)
27
- elseif(SANITIZER STREQUAL "UBSAN")
28
- message(STATUS "Build with Undefined behavior Sanitizer.")
29
- message(WARNING "With clang++ v14.0.6 undefined behavior sanitizer doesn't work with coroutine!!!")
30
- set(USE_SANITIZER "Undefined")
31
- set(USE_UBSAN ON)
32
- elseif(SANITIZER STREQUAL "TSAN")
33
- message(STATUS "Build with Thread Sanitizer.")
34
- set(USE_SANITIZER "Thread")
35
- set(USE_TSAN ON)
36
- else()
37
- message(STATUS "Sanitizer not enabled. ${SANITIZER}")
38
- set(USE_SANITIZER "")
39
- endif()
40
-
41
- # set(USE_SANITIZER "" CACHE STRING
42
- # "Compile with a sanitizer. Options are: Address, Memory, MemoryWithOrigins, Undefined, Thread, Leak, 'Address;Undefined', CFI"
43
- # )
44
-
45
- function(append value)
46
- foreach(variable ${ARGN})
47
- set(${variable}
48
- "${${variable}} ${value}"
49
- PARENT_SCOPE)
50
- endforeach(variable)
51
- endfunction()
52
-
53
- function(append_quoteless value)
54
- foreach(variable ${ARGN})
55
- set(${variable}
56
- ${${variable}} ${value}
57
- PARENT_SCOPE)
58
- endforeach(variable)
59
- endfunction()
60
-
61
- function(test_san_flags return_var flags)
62
- set(QUIET_BACKUP ${CMAKE_REQUIRED_QUIET})
63
- set(CMAKE_REQUIRED_QUIET TRUE)
64
- unset(${return_var} CACHE)
65
- set(FLAGS_BACKUP ${CMAKE_REQUIRED_FLAGS})
66
- set(CMAKE_REQUIRED_FLAGS "${flags}")
67
- check_cxx_source_compiles("int main() { return 0; }" ${return_var})
68
- set(CMAKE_REQUIRED_FLAGS "${FLAGS_BACKUP}")
69
- set(CMAKE_REQUIRED_QUIET "${QUIET_BACKUP}")
70
- endfunction()
71
-
72
- if(USE_SANITIZER)
73
- append("-fno-omit-frame-pointer" CMAKE_C_FLAGS CMAKE_CXX_FLAGS)
74
-
75
- unset(SANITIZER_SELECTED_FLAGS)
76
-
77
- if(UNIX)
78
- if(uppercase_CMAKE_BUILD_TYPE STREQUAL "DEBUG")
79
- append("-O1" CMAKE_C_FLAGS CMAKE_CXX_FLAGS)
80
- endif()
81
-
82
- if(USE_SANITIZER MATCHES "([Aa]ddress)")
83
- # Optional: -fno-optimize-sibling-calls -fsanitize-address-use-after-scope
84
- message(STATUS "Testing with Address sanitizer")
85
- set(SANITIZER_ADDR_FLAG "-fsanitize=address")
86
- test_san_flags(SANITIZER_ADDR_AVAILABLE ${SANITIZER_ADDR_FLAG})
87
- if(SANITIZER_ADDR_AVAILABLE)
88
- message(STATUS " Building with Address sanitizer")
89
- append("${SANITIZER_ADDR_FLAG}" SANITIZER_SELECTED_FLAGS)
90
-
91
- if(AFL)
92
- append_quoteless(AFL_USE_ASAN=1 CMAKE_C_COMPILER_LAUNCHER
93
- CMAKE_CXX_COMPILER_LAUNCHER)
94
- endif()
95
- else()
96
- message(
97
- FATAL_ERROR
98
- "Address sanitizer not available for ${CMAKE_CXX_COMPILER}")
99
- endif()
100
- endif()
101
-
102
- if(USE_SANITIZER MATCHES "([Mm]emory([Ww]ith[Oo]rigins)?)")
103
- # Optional: -fno-optimize-sibling-calls -fsanitize-memory-track-origins=2
104
- set(SANITIZER_MEM_FLAG "-fsanitize=memory")
105
- if(USE_SANITIZER MATCHES "([Mm]emory[Ww]ith[Oo]rigins)")
106
- message(STATUS "Testing with MemoryWithOrigins sanitizer")
107
- append("-fsanitize-memory-track-origins" SANITIZER_MEM_FLAG)
108
- else()
109
- message(STATUS "Testing with Memory sanitizer")
110
- endif()
111
- test_san_flags(SANITIZER_MEM_AVAILABLE ${SANITIZER_MEM_FLAG})
112
- if(SANITIZER_MEM_AVAILABLE)
113
- if(USE_SANITIZER MATCHES "([Mm]emory[Ww]ith[Oo]rigins)")
114
- message(STATUS " Building with MemoryWithOrigins sanitizer")
115
- else()
116
- message(STATUS " Building with Memory sanitizer")
117
- endif()
118
- append("${SANITIZER_MEM_FLAG}" SANITIZER_SELECTED_FLAGS)
119
-
120
- if(AFL)
121
- append_quoteless(AFL_USE_MSAN=1 CMAKE_C_COMPILER_LAUNCHER
122
- CMAKE_CXX_COMPILER_LAUNCHER)
123
- endif()
124
- else()
125
- message(
126
- FATAL_ERROR
127
- "Memory [With Origins] sanitizer not available for ${CMAKE_CXX_COMPILER}"
128
- )
129
- endif()
130
- endif()
131
-
132
- if(USE_SANITIZER MATCHES "([Uu]ndefined)")
133
- message(STATUS "Testing with Undefined Behaviour sanitizer")
134
- set(SANITIZER_UB_FLAG "-fsanitize=undefined")
135
- if(EXISTS "${BLACKLIST_FILE}")
136
- append("-fsanitize-blacklist=${BLACKLIST_FILE}" SANITIZER_UB_FLAG)
137
- endif()
138
- test_san_flags(SANITIZER_UB_AVAILABLE ${SANITIZER_UB_FLAG})
139
- if(SANITIZER_UB_AVAILABLE)
140
- message(STATUS " Building with Undefined Behaviour sanitizer")
141
- append("${SANITIZER_UB_FLAG}" SANITIZER_SELECTED_FLAGS)
142
-
143
- if(AFL)
144
- append_quoteless(AFL_USE_UBSAN=1 CMAKE_C_COMPILER_LAUNCHER
145
- CMAKE_CXX_COMPILER_LAUNCHER)
146
- endif()
147
- else()
148
- message(
149
- FATAL_ERROR
150
- "Undefined Behaviour sanitizer not available for ${CMAKE_CXX_COMPILER}"
151
- )
152
- endif()
153
- endif()
154
-
155
- if(USE_SANITIZER MATCHES "([Tt]hread)")
156
- message(STATUS "Testing with Thread sanitizer")
157
- set(SANITIZER_THREAD_FLAG "-fsanitize=thread -fsanitize-ignorelist=${CMAKE_SOURCE_DIR}/tsan_ignore.txt")
158
- test_san_flags(SANITIZER_THREAD_AVAILABLE ${SANITIZER_THREAD_FLAG})
159
- if(SANITIZER_THREAD_AVAILABLE)
160
- message(STATUS " Building with Thread sanitizer")
161
- append("${SANITIZER_THREAD_FLAG}" SANITIZER_SELECTED_FLAGS)
162
-
163
- if(AFL)
164
- append_quoteless(AFL_USE_TSAN=1 CMAKE_C_COMPILER_LAUNCHER
165
- CMAKE_CXX_COMPILER_LAUNCHER)
166
- endif()
167
- else()
168
- message(
169
- FATAL_ERROR "Thread sanitizer not available for ${CMAKE_CXX_COMPILER}"
170
- )
171
- endif()
172
- endif()
173
-
174
- if(USE_SANITIZER MATCHES "([Ll]eak)")
175
- message(STATUS "Testing with Leak sanitizer")
176
- set(SANITIZER_LEAK_FLAG "-fsanitize=leak")
177
- test_san_flags(SANITIZER_LEAK_AVAILABLE ${SANITIZER_LEAK_FLAG})
178
- if(SANITIZER_LEAK_AVAILABLE)
179
- message(STATUS " Building with Leak sanitizer")
180
- append("${SANITIZER_LEAK_FLAG}" SANITIZER_SELECTED_FLAGS)
181
-
182
- if(AFL)
183
- append_quoteless(AFL_USE_LSAN=1 CMAKE_C_COMPILER_LAUNCHER
184
- CMAKE_CXX_COMPILER_LAUNCHER)
185
- endif()
186
- else()
187
- message(
188
- FATAL_ERROR "Thread sanitizer not available for ${CMAKE_CXX_COMPILER}"
189
- )
190
- endif()
191
- endif()
192
-
193
- if(USE_SANITIZER MATCHES "([Cc][Ff][Ii])")
194
- message(STATUS "Testing with Control Flow Integrity(CFI) sanitizer")
195
- set(SANITIZER_CFI_FLAG "-fsanitize=cfi")
196
- test_san_flags(SANITIZER_CFI_AVAILABLE ${SANITIZER_CFI_FLAG})
197
- if(SANITIZER_CFI_AVAILABLE)
198
- message(STATUS " Building with Control Flow Integrity(CFI) sanitizer")
199
- append("${SANITIZER_LEAK_FLAG}" SANITIZER_SELECTED_FLAGS)
200
-
201
- if(AFL)
202
- append_quoteless(AFL_USE_CFISAN=1 CMAKE_C_COMPILER_LAUNCHER
203
- CMAKE_CXX_COMPILER_LAUNCHER)
204
- endif()
205
- else()
206
- message(
207
- FATAL_ERROR
208
- "Control Flow Integrity(CFI) sanitizer not available for ${CMAKE_CXX_COMPILER}"
209
- )
210
- endif()
211
- endif()
212
-
213
- message(STATUS "Sanitizer flags: ${SANITIZER_SELECTED_FLAGS}")
214
- test_san_flags(SANITIZER_SELECTED_COMPATIBLE ${SANITIZER_SELECTED_FLAGS})
215
- if(SANITIZER_SELECTED_COMPATIBLE)
216
- message(STATUS " Building with ${SANITIZER_SELECTED_FLAGS}")
217
- append("${SANITIZER_SELECTED_FLAGS}" CMAKE_C_FLAGS CMAKE_CXX_FLAGS)
218
- else()
219
- message(
220
- FATAL_ERROR
221
- " Sanitizer flags ${SANITIZER_SELECTED_FLAGS} are not compatible.")
222
- endif()
223
- elseif(MSVC)
224
- if(USE_SANITIZER MATCHES "([Aa]ddress)")
225
- message(STATUS "Building with Address sanitizer")
226
- append("-fsanitize=address" CMAKE_C_FLAGS CMAKE_CXX_FLAGS)
227
-
228
- if(AFL)
229
- append_quoteless(AFL_USE_ASAN=1 CMAKE_C_COMPILER_LAUNCHER
230
- CMAKE_CXX_COMPILER_LAUNCHER)
231
- endif()
232
- else()
233
- message(
234
- FATAL_ERROR
235
- "This sanitizer not yet supported in the MSVC environment: ${USE_SANITIZER}"
236
- )
237
- endif()
238
- else()
239
- message(FATAL_ERROR "USE_SANITIZER is not supported on this platform.")
240
- endif()
241
-
242
- endif()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
asian_ai/chinese/3FS/cmake/Target.cmake DELETED
@@ -1,109 +0,0 @@
1
- # Check if IPO is supported
2
- include(CheckIPOSupported)
3
- check_ipo_supported(RESULT HAVE_IPO)
4
-
5
- # Enable IPO in non-debug build
6
- macro(target_enable_ipo NAME)
7
- if(NOT CMAKE_BUILD_TYPE_UC STREQUAL "DEBUG" AND HAVE_IPO)
8
- set_property(TARGET ${NAME} PROPERTY INTERPROCEDURAL_OPTIMIZATION TRUE)
9
- message (STATUS "Enabled IPO for target: ${NAME}")
10
- endif()
11
- endmacro()
12
-
13
- macro(target_add_lib NAME)
14
- file(GLOB_RECURSE FILES CONFIGURE_DEPENDS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*.cc" "*.h")
15
- add_library(${NAME} STATIC ${FILES} ${FBS_FILES})
16
- target_include_directories(${NAME}
17
- PUBLIC
18
- $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/src>
19
- ${PROJECT_SOURCE_DIR}
20
- ${PROJECT_BINARY_DIR}/src
21
- ${PROJECT_BINARY_DIR}
22
- )
23
- target_link_libraries(${NAME} ${ARGN} "")
24
- endmacro()
25
-
26
- macro(target_add_shared_lib NAME)
27
- file(GLOB_RECURSE FILES CONFIGURE_DEPENDS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*.cc" "*.h")
28
- add_library(${NAME} SHARED ${FILES} ${FBS_FILES})
29
- target_include_directories(${NAME}
30
- PUBLIC
31
- $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/src>
32
- ${PROJECT_SOURCE_DIR}
33
- ${PROJECT_BINARY_DIR}/src
34
- ${PROJECT_BINARY_DIR}
35
- )
36
- target_link_libraries(${NAME} ${ARGN} "")
37
- target_enable_ipo(${NAME})
38
- endmacro()
39
-
40
- macro(target_add_bin NAME MAIN_FILE)
41
- add_executable(${NAME} ${MAIN_FILE})
42
- target_link_libraries(${NAME} ${ARGN} "")
43
- target_include_directories(${NAME}
44
- PUBLIC
45
- $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/src>
46
- ${PROJECT_SOURCE_DIR}
47
- ${PROJECT_SOURCE_DIR}/src/lib/api
48
- ${PROJECT_BINARY_DIR}/src
49
- ${PROJECT_BINARY_DIR}
50
- )
51
- set_target_properties(${NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin")
52
- target_enable_ipo(${NAME})
53
- endmacro()
54
-
55
- macro(target_add_test NAME)
56
- file(GLOB_RECURSE FILES CONFIGURE_DEPENDS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*.cc")
57
- add_executable(${NAME} ${FILES})
58
- target_link_libraries(${NAME} gmock test_main ${ARGN} "")
59
- target_include_directories(${NAME}
60
- PUBLIC
61
- $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/src>
62
- ${PROJECT_SOURCE_DIR}
63
- ${PROJECT_BINARY_DIR}/src
64
- ${PROJECT_BINARY_DIR}
65
- )
66
- add_test(NAME ${NAME} COMMAND ${NAME})
67
- set_target_properties(${NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/tests")
68
- endmacro()
69
-
70
- macro(target_add_fbs NAME PATH)
71
- cmake_parse_arguments(FBS "SERVICE" "" "DEPS" ${ARGN})
72
-
73
- message("Fbs " ${NAME} " FBS_SERVICE " ${FBS_SERVICE} " ARGN " ${ARGN})
74
-
75
- set(FLATBUFFERS_FLATC_SCHEMA_EXTRA_ARGS
76
- --scoped-enums
77
- --gen-object-api
78
- --gen-mutable
79
- --gen-compare
80
- --cpp-std=c++17
81
- --python
82
- --hf3fs
83
- --keep-prefix
84
- )
85
-
86
- get_filename_component(NAME_WE ${PATH} NAME_WE)
87
- get_filename_component(DIR ${PATH} DIRECTORY)
88
-
89
- build_flatbuffers(${PATH}
90
- "${CMAKE_CURRENT_SOURCE_DIR}/${DIR};${CMAKE_SOURCE_DIR}/src"
91
- "${NAME_WE}-generated"
92
- ""
93
- "${CMAKE_CURRENT_BINARY_DIR}/${DIR}"
94
- ""
95
- ""
96
- )
97
-
98
- add_library(${NAME} INTERFACE)
99
- target_link_libraries(${NAME} INTERFACE common)
100
- target_include_directories(${NAME}
101
- INTERFACE
102
- $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/src>
103
- ${PROJECT_SOURCE_DIR}
104
- ${PROJECT_BINARY_DIR}/src
105
- ${PROJECT_BINARY_DIR}
106
- )
107
-
108
- add_dependencies(${NAME} "${NAME_WE}-generated" ${FBS_DEPS})
109
- endmacro()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
asian_ai/chinese/3FS/configs/admin_cli.toml DELETED
@@ -1,338 +0,0 @@
1
- break_multi_line_command_on_failure = false
2
- cluster_id = ''
3
- log = 'DBG:normal; normal=file:path=/var/log/3fs/cli.log,async=true,sync_level=ERR'
4
- num_timeout_ms = 1000
5
- profile = false
6
- verbose = false
7
-
8
- [client]
9
- default_compression_level = 0
10
- default_compression_threshold = '128KB'
11
- default_log_long_running_threshold = '0ns'
12
- default_report_metrics = false
13
- default_send_retry_times = 1
14
- default_timeout = '1s'
15
- enable_rdma_control = false
16
- force_use_tcp = false
17
-
18
- [client.io_worker]
19
- num_event_loop = 1
20
- rdma_connect_timeout = '5s'
21
- read_write_rdma_in_event_thread = false
22
- read_write_tcp_in_event_thread = false
23
- tcp_connect_timeout = '1s'
24
- wait_to_retry_send = '100ms'
25
-
26
- [client.io_worker.connect_concurrency_limiter]
27
- max_concurrency = 4
28
-
29
- [client.io_worker.ibsocket]
30
- buf_ack_batch = 8
31
- buf_signal_batch = 8
32
- buf_size = 16384
33
- drain_timeout = '5s'
34
- drop_connections = 0
35
- event_ack_batch = 128
36
- max_rd_atomic = 16
37
- max_rdma_wr = 128
38
- max_rdma_wr_per_post = 32
39
- max_sge = 16
40
- min_rnr_timer = 1
41
- record_bytes_per_peer = false
42
- record_latency_per_peer = false
43
- retry_cnt = 7
44
- rnr_retry = 0
45
- send_buf_cnt = 32
46
- sl = 0
47
- start_psn = 0
48
- timeout = 14
49
-
50
- [client.io_worker.transport_pool]
51
- max_connections = 1
52
-
53
- [client.processor]
54
- enable_coroutines_pool = true
55
- max_coroutines_num = 256
56
- max_processing_requests_num = 4096
57
- response_compression_level = 1
58
- response_compression_threshold = '128KB'
59
-
60
- [client.rdma_control]
61
- max_concurrent_transmission = 64
62
-
63
- [client.thread_pool]
64
- bg_thread_pool_stratetry = 'SHARED_QUEUE'
65
- collect_stats = false
66
- enable_work_stealing = false
67
- io_thread_pool_stratetry = 'SHARED_QUEUE'
68
- num_bg_threads = 2
69
- num_connect_threads = 2
70
- num_io_threads = 2
71
- num_proc_threads = 2
72
- proc_thread_pool_stratetry = 'SHARED_QUEUE'
73
-
74
- [fdb]
75
- casual_read_risky = false
76
- clusterFile = ''
77
- default_backoff = 0
78
- enableMultipleClient = false
79
- externalClientDir = ''
80
- externalClientPath = ''
81
- multipleClientThreadNum = 4
82
- readonly = false
83
- trace_file = ''
84
- trace_format = 'json'
85
-
86
- [ib_devices]
87
- allow_no_usable_devices = false
88
- allow_unknown_zone = true
89
- default_network_zone = 'UNKNOWN'
90
- default_pkey_index = 0
91
- default_roce_pkey_index = 0
92
- default_traffic_class = 0
93
- device_filter = []
94
- fork_safe = true
95
- prefer_ibdevice = true
96
- skip_inactive_ports = true
97
- skip_unusable_device = true
98
- subnets = []
99
-
100
- [meta_client]
101
- check_server_interval = '5s'
102
- dynamic_stripe = false
103
- max_concurrent_requests = 128
104
- network_type = 'RDMA'
105
- remove_chunks_batch_size = 32
106
- remove_chunks_max_iters = 1024
107
- selection_mode = 'RandomFollow'
108
-
109
- [meta_client.background_closer]
110
- prune_session_batch_count = 128
111
- prune_session_batch_interval = '10s'
112
- retry_first_wait = '100ms'
113
- retry_max_wait = '10s'
114
- task_scan = '50ms'
115
-
116
- [meta_client.background_closer.coroutine_pool]
117
- coroutines_num = 8
118
- enable_work_stealing = false
119
- queue_size = 128
120
-
121
- [meta_client.retry_default]
122
- max_failures_before_failover = 1
123
- retry_fast = '1s'
124
- retry_init_wait = '500ms'
125
- retry_max_wait = '5s'
126
- retry_send = 1
127
- retry_total_time = '1min'
128
- rpc_timeout = '5s'
129
-
130
- [mgmtd_client]
131
- accept_incomplete_routing_info_during_mgmtd_bootstrapping = true
132
- auto_extend_client_session_interval = '10s'
133
- auto_heartbeat_interval = '10s'
134
- auto_refresh_interval = '1s'
135
- enable_auto_extend_client_session = false
136
- enable_auto_heartbeat = false
137
- enable_auto_refresh = true
138
- mgmtd_server_addresses = []
139
- work_queue_size = 100
140
-
141
- [monitor]
142
- collect_period = '1s'
143
- num_collectors = 1
144
- reporters = []
145
-
146
- [storage_client]
147
- check_overlapping_read_buffers = true
148
- check_overlapping_write_buffers = false
149
- chunk_checksum_type = 'CRC32C'
150
- create_net_client_for_updates = false
151
- implementation_type = 'RPC'
152
- max_inline_read_bytes = '0'
153
- max_inline_write_bytes = '0'
154
- max_read_io_bytes = '0'
155
-
156
- [storage_client.net_client]
157
- default_compression_level = 0
158
- default_compression_threshold = '128KB'
159
- default_log_long_running_threshold = '0ns'
160
- default_report_metrics = false
161
- default_send_retry_times = 1
162
- default_timeout = '1s'
163
- enable_rdma_control = false
164
- force_use_tcp = false
165
-
166
- [storage_client.net_client.io_worker]
167
- num_event_loop = 1
168
- rdma_connect_timeout = '5s'
169
- read_write_rdma_in_event_thread = false
170
- read_write_tcp_in_event_thread = false
171
- tcp_connect_timeout = '1s'
172
- wait_to_retry_send = '100ms'
173
-
174
- [storage_client.net_client.io_worker.connect_concurrency_limiter]
175
- max_concurrency = 4
176
-
177
- [storage_client.net_client.io_worker.ibsocket]
178
- buf_ack_batch = 8
179
- buf_signal_batch = 8
180
- buf_size = 16384
181
- drain_timeout = '5s'
182
- drop_connections = 0
183
- event_ack_batch = 128
184
- max_rd_atomic = 16
185
- max_rdma_wr = 128
186
- max_rdma_wr_per_post = 32
187
- max_sge = 16
188
- min_rnr_timer = 1
189
- record_bytes_per_peer = false
190
- record_latency_per_peer = false
191
- retry_cnt = 7
192
- rnr_retry = 0
193
- send_buf_cnt = 32
194
- sl = 0
195
- start_psn = 0
196
- timeout = 14
197
-
198
- [storage_client.net_client.io_worker.transport_pool]
199
- max_connections = 1
200
-
201
- [storage_client.net_client.processor]
202
- enable_coroutines_pool = true
203
- max_coroutines_num = 256
204
- max_processing_requests_num = 4096
205
- response_compression_level = 1
206
- response_compression_threshold = '128KB'
207
-
208
- [storage_client.net_client.rdma_control]
209
- max_concurrent_transmission = 64
210
-
211
- [storage_client.net_client.thread_pool]
212
- bg_thread_pool_stratetry = 'SHARED_QUEUE'
213
- collect_stats = false
214
- enable_work_stealing = false
215
- io_thread_pool_stratetry = 'SHARED_QUEUE'
216
- num_bg_threads = 2
217
- num_connect_threads = 2
218
- num_io_threads = 2
219
- num_proc_threads = 2
220
- proc_thread_pool_stratetry = 'SHARED_QUEUE'
221
-
222
- [storage_client.net_client_for_updates]
223
- default_compression_level = 0
224
- default_compression_threshold = '128KB'
225
- default_log_long_running_threshold = '0ns'
226
- default_report_metrics = false
227
- default_send_retry_times = 1
228
- default_timeout = '1s'
229
- enable_rdma_control = false
230
- force_use_tcp = false
231
-
232
- [storage_client.net_client_for_updates.io_worker]
233
- num_event_loop = 1
234
- rdma_connect_timeout = '5s'
235
- read_write_rdma_in_event_thread = false
236
- read_write_tcp_in_event_thread = false
237
- tcp_connect_timeout = '1s'
238
- wait_to_retry_send = '100ms'
239
-
240
- [storage_client.net_client_for_updates.io_worker.connect_concurrency_limiter]
241
- max_concurrency = 4
242
-
243
- [storage_client.net_client_for_updates.io_worker.ibsocket]
244
- buf_ack_batch = 8
245
- buf_signal_batch = 8
246
- buf_size = 16384
247
- drain_timeout = '5s'
248
- drop_connections = 0
249
- event_ack_batch = 128
250
- max_rd_atomic = 16
251
- max_rdma_wr = 128
252
- max_rdma_wr_per_post = 32
253
- max_sge = 16
254
- min_rnr_timer = 1
255
- record_bytes_per_peer = false
256
- record_latency_per_peer = false
257
- retry_cnt = 7
258
- rnr_retry = 0
259
- send_buf_cnt = 32
260
- sl = 0
261
- start_psn = 0
262
- timeout = 14
263
-
264
- [storage_client.net_client_for_updates.io_worker.transport_pool]
265
- max_connections = 1
266
-
267
- [storage_client.net_client_for_updates.processor]
268
- enable_coroutines_pool = true
269
- max_coroutines_num = 256
270
- max_processing_requests_num = 4096
271
- response_compression_level = 1
272
- response_compression_threshold = '128KB'
273
-
274
- [storage_client.net_client_for_updates.rdma_control]
275
- max_concurrent_transmission = 64
276
-
277
- [storage_client.net_client_for_updates.thread_pool]
278
- bg_thread_pool_stratetry = 'SHARED_QUEUE'
279
- collect_stats = false
280
- enable_work_stealing = false
281
- io_thread_pool_stratetry = 'SHARED_QUEUE'
282
- num_bg_threads = 2
283
- num_connect_threads = 2
284
- num_io_threads = 2
285
- num_proc_threads = 2
286
- proc_thread_pool_stratetry = 'SHARED_QUEUE'
287
-
288
- [storage_client.retry]
289
- init_wait_time = '10s'
290
- max_failures_before_failover = 1
291
- max_retry_time = '1min'
292
- max_wait_time = '30s'
293
-
294
- [storage_client.traffic_control.query]
295
- max_batch_bytes = '4MB'
296
- max_batch_size = 128
297
- max_concurrent_requests = 32
298
- max_concurrent_requests_per_server = 8
299
- process_batches_in_parallel = true
300
- random_shuffle_requests = true
301
-
302
- [storage_client.traffic_control.read]
303
- max_batch_bytes = '4MB'
304
- max_batch_size = 128
305
- max_concurrent_requests = 32
306
- max_concurrent_requests_per_server = 8
307
- process_batches_in_parallel = true
308
- random_shuffle_requests = true
309
-
310
- [storage_client.traffic_control.remove]
311
- max_batch_bytes = '4MB'
312
- max_batch_size = 128
313
- max_concurrent_requests = 32
314
- max_concurrent_requests_per_server = 8
315
- process_batches_in_parallel = true
316
- random_shuffle_requests = true
317
-
318
- [storage_client.traffic_control.truncate]
319
- max_batch_bytes = '4MB'
320
- max_batch_size = 128
321
- max_concurrent_requests = 32
322
- max_concurrent_requests_per_server = 8
323
- process_batches_in_parallel = true
324
- random_shuffle_requests = true
325
-
326
- [storage_client.traffic_control.write]
327
- max_batch_bytes = '4MB'
328
- max_batch_size = 128
329
- max_concurrent_requests = 32
330
- max_concurrent_requests_per_server = 8
331
- process_batches_in_parallel = true
332
- random_shuffle_requests = true
333
-
334
- [user_info]
335
- gid = -1
336
- gids = []
337
- token = ''
338
- uid = -1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
asian_ai/chinese/3FS/configs/hf3fs_client_agent.toml DELETED
@@ -1,557 +0,0 @@
1
- [[common.log.categories]]
2
- categories = [ '.' ]
3
- handlers = [ 'normal', 'err', 'fatal' ]
4
- inherit = true
5
- level = 'INFO'
6
- propagate = 'NONE'
7
-
8
- [[common.log.handlers]]
9
- async = true
10
- file_path = ''
11
- max_file_size = '10MB'
12
- max_files = 100
13
- name = 'normal'
14
- rotate = true
15
- rotate_on_open = false
16
- start_level = 'NONE'
17
- stream_type = 'STDERR'
18
- writer_type = 'FILE'
19
-
20
- [[common.log.handlers]]
21
- async = false
22
- file_path = ''
23
- max_file_size = '10MB'
24
- max_files = 100
25
- name = 'err'
26
- rotate = true
27
- rotate_on_open = false
28
- start_level = 'ERR'
29
- stream_type = 'STDERR'
30
- writer_type = 'FILE'
31
-
32
- [[common.log.handlers]]
33
- async = false
34
- file_path = ''
35
- max_file_size = '10MB'
36
- max_files = 100
37
- name = 'fatal'
38
- rotate = true
39
- rotate_on_open = false
40
- start_level = 'FATAL'
41
- stream_type = 'STDERR'
42
- writer_type = 'STREAM'
43
-
44
- [common.memory]
45
- prof_active = false
46
- prof_prefix = ''
47
-
48
- [common.monitor]
49
- reporters = []
50
-
51
- [server.agent]
52
- allow_read_holes = true
53
- auth_timeout = '5min'
54
- background_ibreg = true
55
- list_entry_limit = 100
56
- max_concurrent_iovallocs = 0
57
- mock_storage_dir = ''
58
- mount_name = ''
59
- read_only_mode = false
60
- truncate_if_write_after_eof = false
61
-
62
- [server.agent.inode_cache]
63
- capacity = 4194304
64
- entry_lifetime = '5min'
65
-
66
- [server.agent.limit_per_process]
67
- fd = 1048576
68
- shm = 1048576
69
-
70
- [server.agent.periodic_sync]
71
- interval = '10min'
72
- on = false
73
-
74
- [server.agent.proc_watch]
75
- interval = '1min'
76
- on = true
77
-
78
- [server.agent.storage_io.read]
79
- enableChecksum = false
80
-
81
- [server.agent.storage_io.read.debug]
82
- bypass_disk_io = false
83
- bypass_rdma_xmit = false
84
- inject_random_client_error = false
85
- inject_random_server_error = false
86
- max_num_of_injection_points = 100
87
-
88
- [server.agent.storage_io.read.retry]
89
- init_wait_time = '0ns'
90
- max_retry_time = '0ns'
91
- max_wait_time = '0ns'
92
- retry_permanent_error = false
93
-
94
- [server.agent.storage_io.read.targetSelection]
95
- mode = 'Default'
96
- targetIndex = 0
97
- trafficZone = ''
98
-
99
- [server.agent.storage_io.write]
100
- enableChecksum = true
101
-
102
- [server.agent.storage_io.write.debug]
103
- bypass_disk_io = false
104
- bypass_rdma_xmit = false
105
- inject_random_client_error = false
106
- inject_random_server_error = false
107
- max_num_of_injection_points = 100
108
-
109
- [server.agent.storage_io.write.retry]
110
- init_wait_time = '0ns'
111
- max_retry_time = '0ns'
112
- max_wait_time = '0ns'
113
- retry_permanent_error = false
114
-
115
- [server.agent.storage_io.write.targetSelection]
116
- mode = 'Default'
117
- targetIndex = 0
118
- trafficZone = ''
119
-
120
- [server.agent.storage_ops]
121
- enable_read = true
122
- enable_write = true
123
-
124
- [server.background_client]
125
- default_compression_level = 0
126
- default_compression_threshold = '128KB'
127
- default_log_long_running_threshold = '0ns'
128
- default_send_retry_times = 1
129
- default_timeout = '1s'
130
- enable_rdma_control = false
131
- force_use_tcp = false
132
-
133
- [server.background_client.io_worker]
134
- num_event_loop = 1
135
- rdma_connect_timeout = '5s'
136
- read_write_rdma_in_event_thread = false
137
- read_write_tcp_in_event_thread = false
138
- tcp_connect_timeout = '1s'
139
- wait_to_retry_send = '100ms'
140
-
141
- [server.background_client.io_worker.connect_concurrency_limiter]
142
- max_concurrency = 4
143
-
144
- [server.background_client.io_worker.ibsocket]
145
- buf_ack_batch = 8
146
- buf_signal_batch = 8
147
- buf_size = 16384
148
- drain_timeout = '5s'
149
- drop_connections = 0
150
- event_ack_batch = 128
151
- max_rd_atomic = 16
152
- max_rdma_wr = 128
153
- max_rdma_wr_per_post = 32
154
- max_sge = 16
155
- min_rnr_timer = 1
156
- record_bytes_per_peer = false
157
- record_latency_per_peer = false
158
- retry_cnt = 7
159
- rnr_retry = 0
160
- send_buf_cnt = 32
161
- sl = 0
162
- start_psn = 0
163
- timeout = 14
164
-
165
- [server.background_client.io_worker.transport_pool]
166
- max_connections = 1
167
-
168
- [server.background_client.processor]
169
- enable_coroutines_pool = true
170
- max_coroutines_num = 256
171
- max_processing_requests_num = 4096
172
- response_compression_level = 1
173
- response_compression_threshold = '128KB'
174
-
175
- [server.background_client.rdma_control]
176
- max_concurrent_transmission = 64
177
-
178
- [server.background_client.thread_pool]
179
- bg_thread_pool_stratetry = 'SHARED_QUEUE'
180
- collect_stats = false
181
- enable_work_stealing = false
182
- io_thread_pool_stratetry = 'SHARED_QUEUE'
183
- num_bg_threads = 2
184
- num_connect_threads = 2
185
- num_io_threads = 2
186
- num_proc_threads = 2
187
- proc_thread_pool_stratetry = 'SHARED_QUEUE'
188
-
189
- [server.base.independent_thread_pool]
190
- bg_thread_pool_stratetry = 'SHARED_QUEUE'
191
- collect_stats = false
192
- enable_work_stealing = false
193
- io_thread_pool_stratetry = 'SHARED_QUEUE'
194
- num_bg_threads = 2
195
- num_connect_threads = 2
196
- num_io_threads = 2
197
- num_proc_threads = 2
198
- proc_thread_pool_stratetry = 'SHARED_QUEUE'
199
-
200
- [server.base.thread_pool]
201
- bg_thread_pool_stratetry = 'SHARED_QUEUE'
202
- collect_stats = false
203
- enable_work_stealing = false
204
- io_thread_pool_stratetry = 'SHARED_QUEUE'
205
- num_bg_threads = 2
206
- num_connect_threads = 2
207
- num_io_threads = 64
208
- num_proc_threads = 64
209
- proc_thread_pool_stratetry = 'SHARED_QUEUE'
210
-
211
- [[server.base.groups]]
212
- check_connections_interval = '1min'
213
- connection_expiration_time = '1day'
214
- network_type = 'LOCAL'
215
- services = [ 'ClientAgentSerde' ]
216
- use_independent_thread_pool = false
217
-
218
- [server.base.groups.io_worker]
219
- num_event_loop = 1
220
- rdma_connect_timeout = '5s'
221
- read_write_rdma_in_event_thread = false
222
- read_write_tcp_in_event_thread = false
223
- tcp_connect_timeout = '1s'
224
- wait_to_retry_send = '100ms'
225
-
226
- [server.base.groups.io_worker.connect_concurrency_limiter]
227
- max_concurrency = 4
228
-
229
- [server.base.groups.io_worker.ibsocket]
230
- buf_ack_batch = 8
231
- buf_signal_batch = 8
232
- buf_size = 16384
233
- drain_timeout = '5s'
234
- drop_connections = 0
235
- event_ack_batch = 128
236
- max_rd_atomic = 16
237
- max_rdma_wr = 128
238
- max_rdma_wr_per_post = 32
239
- max_sge = 16
240
- min_rnr_timer = 1
241
- record_bytes_per_peer = false
242
- record_latency_per_peer = false
243
- retry_cnt = 7
244
- rnr_retry = 0
245
- send_buf_cnt = 32
246
- sl = 0
247
- start_psn = 0
248
- timeout = 14
249
-
250
- [server.base.groups.io_worker.transport_pool]
251
- max_connections = 1
252
-
253
- [server.base.groups.listener]
254
- filter_list = []
255
- listen_port = 0
256
- listen_queue_depth = 4096
257
- rdma_accept_timeout = '15s'
258
- rdma_listen_ethernet = true
259
- reuse_port = false
260
-
261
- [server.base.groups.processor]
262
- enable_coroutines_pool = true
263
- max_coroutines_num = 256
264
- max_processing_requests_num = 4096
265
- response_compression_level = 1
266
- response_compression_threshold = '128KB'
267
-
268
- [[server.base.groups]]
269
- check_connections_interval = '1min'
270
- connection_expiration_time = '1day'
271
- network_type = 'TCP'
272
- services = [ 'Core' ]
273
- use_independent_thread_pool = true
274
-
275
- [server.base.groups.io_worker]
276
- num_event_loop = 1
277
- rdma_connect_timeout = '5s'
278
- read_write_rdma_in_event_thread = false
279
- read_write_tcp_in_event_thread = false
280
- tcp_connect_timeout = '1s'
281
- wait_to_retry_send = '100ms'
282
-
283
- [server.base.groups.io_worker.connect_concurrency_limiter]
284
- max_concurrency = 4
285
-
286
- [server.base.groups.io_worker.ibsocket]
287
- buf_ack_batch = 8
288
- buf_signal_batch = 8
289
- buf_size = 16384
290
- drain_timeout = '5s'
291
- drop_connections = 0
292
- event_ack_batch = 128
293
- max_rd_atomic = 16
294
- max_rdma_wr = 128
295
- max_rdma_wr_per_post = 32
296
- max_sge = 16
297
- min_rnr_timer = 1
298
- record_bytes_per_peer = false
299
- record_latency_per_peer = false
300
- retry_cnt = 7
301
- rnr_retry = 0
302
- send_buf_cnt = 32
303
- sl = 0
304
- start_psn = 0
305
- timeout = 14
306
-
307
- [server.base.groups.io_worker.transport_pool]
308
- max_connections = 1
309
-
310
- [server.base.groups.listener]
311
- filter_list = []
312
- listen_port = 9000
313
- listen_queue_depth = 4096
314
- rdma_accept_timeout = '15s'
315
- rdma_listen_ethernet = true
316
- reuse_port = false
317
-
318
- [server.base.groups.processor]
319
- enable_coroutines_pool = true
320
- max_coroutines_num = 256
321
- max_processing_requests_num = 4096
322
- response_compression_level = 1
323
- response_compression_threshold = '128KB'
324
-
325
- [server.meta]
326
- check_server_interval = '5s'
327
- dynamic_stripe = false
328
- max_concurrent_requests = 128
329
- network_type = 'RDMA'
330
- remove_chunks_batch_size = 32
331
- remove_chunks_max_iters = 1024
332
- selection_mode = 'RandomFollow'
333
-
334
- [server.meta.background_closer]
335
- prune_session_batch_count = 128
336
- prune_session_batch_interval = '10s'
337
- retry_first_wait = '100ms'
338
- retry_max_wait = '10s'
339
- task_scan = '50ms'
340
-
341
- [server.meta.background_closer.coroutine_pool]
342
- coroutines_num = 8
343
- enable_work_stealing = false
344
- queue_size = 128
345
-
346
- [server.meta.retry_default]
347
- max_failures_before_failover = 1
348
- retry_init_wait = '500ms'
349
- retry_max_wait = '5s'
350
- retry_send = 1
351
- retry_total_time = '1min'
352
- rpc_timeout = '2s'
353
-
354
- [server.meta.retry_truncate]
355
- max_failures_before_failover = 1
356
- retry_init_wait = '2s'
357
- retry_max_wait = '5s'
358
- retry_send = 1
359
- retry_total_time = '1min'
360
- rpc_timeout = '15s'
361
-
362
- [server.mgmtd]
363
- accept_incomplete_routing_info_during_mgmtd_bootstrapping = true
364
- auto_extend_client_session_interval = '10s'
365
- auto_heartbeat_interval = '10s'
366
- auto_refresh_interval = '10s'
367
- enable_auto_extend_client_session = true
368
- enable_auto_heartbeat = false
369
- enable_auto_refresh = true
370
- mgmtd_server_addresses = []
371
- work_queue_size = 100
372
-
373
- [server.storage]
374
- check_overlapping_read_buffers = true
375
- check_overlapping_write_buffers = false
376
- chunk_checksum_type = 'CRC32C'
377
- create_net_client_for_updates = false
378
- implementation_type = 'RPC'
379
- max_inline_read_bytes = '0'
380
- max_inline_write_bytes = '0'
381
- max_read_io_bytes = '0'
382
-
383
- [server.storage.net_client]
384
- default_compression_level = 0
385
- default_compression_threshold = '128KB'
386
- default_log_long_running_threshold = '0ns'
387
- default_send_retry_times = 1
388
- default_timeout = '1s'
389
- enable_rdma_control = false
390
- force_use_tcp = false
391
-
392
- [server.storage.net_client.io_worker]
393
- num_event_loop = 1
394
- rdma_connect_timeout = '5s'
395
- read_write_rdma_in_event_thread = false
396
- read_write_tcp_in_event_thread = false
397
- tcp_connect_timeout = '1s'
398
- wait_to_retry_send = '100ms'
399
-
400
- [server.storage.net_client.io_worker.connect_concurrency_limiter]
401
- max_concurrency = 4
402
-
403
- [server.storage.net_client.io_worker.ibsocket]
404
- buf_ack_batch = 8
405
- buf_signal_batch = 8
406
- buf_size = 16384
407
- drain_timeout = '5s'
408
- drop_connections = 0
409
- event_ack_batch = 128
410
- max_rd_atomic = 16
411
- max_rdma_wr = 128
412
- max_rdma_wr_per_post = 32
413
- max_sge = 16
414
- min_rnr_timer = 1
415
- record_bytes_per_peer = false
416
- record_latency_per_peer = false
417
- retry_cnt = 7
418
- rnr_retry = 0
419
- send_buf_cnt = 32
420
- sl = 0
421
- start_psn = 0
422
- timeout = 14
423
-
424
- [server.storage.net_client.io_worker.transport_pool]
425
- max_connections = 1
426
-
427
- [server.storage.net_client.processor]
428
- enable_coroutines_pool = true
429
- max_coroutines_num = 256
430
- max_processing_requests_num = 4096
431
- response_compression_level = 1
432
- response_compression_threshold = '128KB'
433
-
434
- [server.storage.net_client.rdma_control]
435
- max_concurrent_transmission = 64
436
-
437
- [server.storage.net_client.thread_pool]
438
- bg_thread_pool_stratetry = 'SHARED_QUEUE'
439
- collect_stats = false
440
- enable_work_stealing = false
441
- io_thread_pool_stratetry = 'SHARED_QUEUE'
442
- num_bg_threads = 2
443
- num_connect_threads = 2
444
- num_io_threads = 2
445
- num_proc_threads = 2
446
- proc_thread_pool_stratetry = 'SHARED_QUEUE'
447
-
448
- [server.storage.net_client_for_updates]
449
- default_compression_level = 0
450
- default_compression_threshold = '128KB'
451
- default_log_long_running_threshold = '0ns'
452
- default_send_retry_times = 1
453
- default_timeout = '1s'
454
- enable_rdma_control = false
455
- force_use_tcp = false
456
-
457
- [server.storage.net_client_for_updates.io_worker]
458
- num_event_loop = 1
459
- rdma_connect_timeout = '5s'
460
- read_write_rdma_in_event_thread = false
461
- read_write_tcp_in_event_thread = false
462
- tcp_connect_timeout = '1s'
463
- wait_to_retry_send = '100ms'
464
-
465
- [server.storage.net_client_for_updates.io_worker.connect_concurrency_limiter]
466
- max_concurrency = 4
467
-
468
- [server.storage.net_client_for_updates.io_worker.ibsocket]
469
- buf_ack_batch = 8
470
- buf_signal_batch = 8
471
- buf_size = 16384
472
- drain_timeout = '5s'
473
- drop_connections = 0
474
- event_ack_batch = 128
475
- max_rd_atomic = 16
476
- max_rdma_wr = 128
477
- max_rdma_wr_per_post = 32
478
- max_sge = 16
479
- min_rnr_timer = 1
480
- record_bytes_per_peer = false
481
- record_latency_per_peer = false
482
- retry_cnt = 7
483
- rnr_retry = 0
484
- send_buf_cnt = 32
485
- sl = 0
486
- start_psn = 0
487
- timeout = 14
488
-
489
- [server.storage.net_client_for_updates.io_worker.transport_pool]
490
- max_connections = 1
491
-
492
- [server.storage.net_client_for_updates.processor]
493
- enable_coroutines_pool = true
494
- max_coroutines_num = 256
495
- max_processing_requests_num = 4096
496
- response_compression_level = 1
497
- response_compression_threshold = '128KB'
498
-
499
- [server.storage.net_client_for_updates.rdma_control]
500
- max_concurrent_transmission = 64
501
-
502
- [server.storage.net_client_for_updates.thread_pool]
503
- bg_thread_pool_stratetry = 'SHARED_QUEUE'
504
- collect_stats = false
505
- enable_work_stealing = false
506
- io_thread_pool_stratetry = 'SHARED_QUEUE'
507
- num_bg_threads = 2
508
- num_connect_threads = 2
509
- num_io_threads = 2
510
- num_proc_threads = 2
511
- proc_thread_pool_stratetry = 'SHARED_QUEUE'
512
-
513
- [server.storage.retry]
514
- init_wait_time = '10s'
515
- max_failures_before_failover = 1
516
- max_retry_time = '1min'
517
- max_wait_time = '30s'
518
-
519
- [server.storage.traffic_control.query]
520
- max_batch_bytes = '4MB'
521
- max_batch_size = 128
522
- max_concurrent_requests = 32
523
- max_concurrent_requests_per_server = 8
524
- process_batches_in_parallel = true
525
- random_shuffle_requests = true
526
-
527
- [server.storage.traffic_control.read]
528
- max_batch_bytes = '4MB'
529
- max_batch_size = 128
530
- max_concurrent_requests = 32
531
- max_concurrent_requests_per_server = 8
532
- process_batches_in_parallel = true
533
- random_shuffle_requests = true
534
-
535
- [server.storage.traffic_control.remove]
536
- max_batch_bytes = '4MB'
537
- max_batch_size = 128
538
- max_concurrent_requests = 32
539
- max_concurrent_requests_per_server = 8
540
- process_batches_in_parallel = true
541
- random_shuffle_requests = true
542
-
543
- [server.storage.traffic_control.truncate]
544
- max_batch_bytes = '4MB'
545
- max_batch_size = 128
546
- max_concurrent_requests = 32
547
- max_concurrent_requests_per_server = 8
548
- process_batches_in_parallel = true
549
- random_shuffle_requests = true
550
-
551
- [server.storage.traffic_control.write]
552
- max_batch_bytes = '4MB'
553
- max_batch_size = 128
554
- max_concurrent_requests = 32
555
- max_concurrent_requests_per_server = 8
556
- process_batches_in_parallel = true
557
- random_shuffle_requests = true
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
asian_ai/chinese/3FS/configs/hf3fs_client_agent_app.toml DELETED
@@ -1 +0,0 @@
1
-
 
 
asian_ai/chinese/3FS/configs/hf3fs_client_agent_launcher.toml DELETED
@@ -1,88 +0,0 @@
1
- allow_dev_version = true
2
- cluster_id = ''
3
-
4
- [client]
5
- default_compression_level = 0
6
- default_compression_threshold = '128KB'
7
- default_log_long_running_threshold = '0ns'
8
- default_send_retry_times = 1
9
- default_timeout = '1s'
10
- enable_rdma_control = false
11
- force_use_tcp = false
12
-
13
- [client.io_worker]
14
- num_event_loop = 1
15
- rdma_connect_timeout = '5s'
16
- read_write_rdma_in_event_thread = false
17
- read_write_tcp_in_event_thread = false
18
- tcp_connect_timeout = '1s'
19
- wait_to_retry_send = '100ms'
20
-
21
- [client.io_worker.connect_concurrency_limiter]
22
- max_concurrency = 4
23
-
24
- [client.io_worker.ibsocket]
25
- buf_ack_batch = 8
26
- buf_signal_batch = 8
27
- buf_size = 16384
28
- drain_timeout = '5s'
29
- drop_connections = 0
30
- event_ack_batch = 128
31
- max_rd_atomic = 16
32
- max_rdma_wr = 128
33
- max_rdma_wr_per_post = 32
34
- max_sge = 16
35
- min_rnr_timer = 1
36
- record_bytes_per_peer = false
37
- record_latency_per_peer = false
38
- retry_cnt = 7
39
- rnr_retry = 0
40
- send_buf_cnt = 32
41
- sl = 0
42
- start_psn = 0
43
- timeout = 14
44
-
45
- [client.io_worker.transport_pool]
46
- max_connections = 1
47
-
48
- [client.processor]
49
- enable_coroutines_pool = true
50
- max_coroutines_num = 256
51
- max_processing_requests_num = 4096
52
- response_compression_level = 1
53
- response_compression_threshold = '128KB'
54
-
55
- [client.rdma_control]
56
- max_concurrent_transmission = 64
57
-
58
- [client.thread_pool]
59
- bg_thread_pool_stratetry = 'SHARED_QUEUE'
60
- collect_stats = false
61
- enable_work_stealing = false
62
- io_thread_pool_stratetry = 'SHARED_QUEUE'
63
- num_bg_threads = 2
64
- num_connect_threads = 2
65
- num_io_threads = 2
66
- num_proc_threads = 2
67
- proc_thread_pool_stratetry = 'SHARED_QUEUE'
68
-
69
- [ib_devices]
70
- allow_unknown_zone = true
71
- default_network_zone = 'UNKNOWN'
72
- default_pkey_index = 0
73
- default_traffic_class = 0
74
- device_filter = []
75
- fork_safe = true
76
- skip_inactive_ports = true
77
- subnets = []
78
-
79
- [mgmtd_client]
80
- accept_incomplete_routing_info_during_mgmtd_bootstrapping = true
81
- auto_extend_client_session_interval = '10s'
82
- auto_heartbeat_interval = '10s'
83
- auto_refresh_interval = '10s'
84
- enable_auto_extend_client_session = true
85
- enable_auto_heartbeat = false
86
- enable_auto_refresh = true
87
- mgmtd_server_addresses = []
88
- work_queue_size = 100
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
asian_ai/chinese/3FS/configs/hf3fs_fuse_main.toml DELETED
@@ -1,450 +0,0 @@
1
- attr_timeout = 30.0
2
- batch_io_coros = 128
3
- check_rmrf = true
4
- chunk_size_limit = '0'
5
- dryrun_bench_mode = false
6
- enable_interrupt = false
7
- enable_priority = false
8
- enable_read_cache = true
9
- enable_writeback_cache = false
10
- entry_timeout = 30.0
11
- fdatasync_update_length = false
12
- flush_on_stat = true
13
- fsync_length_hint = false
14
- io_job_deq_timeout = '1ms'
15
- io_jobq_size = 1024
16
- iov_limit = '1MB'
17
- max_background = 32
18
- max_idle_threads = -1
19
- max_jobs_per_ioring = 32
20
- max_readahead = '16MB'
21
- max_threads = 256
22
- max_uid = '1M'
23
- memset_before_read = false
24
- negative_timeout = 5.0
25
- notify_inval_threads = 32
26
- rdma_buf_pool_size = 1024
27
- readonly = false
28
- submit_wait_jitter = '1ms'
29
- symlink_timeout = 5.0
30
- sync_on_stat = true
31
- time_granularity = '1s'
32
-
33
- [client]
34
- default_compression_level = 0
35
- default_compression_threshold = '128KB'
36
- default_log_long_running_threshold = '0ns'
37
- default_report_metrics = false
38
- default_send_retry_times = 1
39
- default_timeout = '1s'
40
- enable_rdma_control = false
41
- force_use_tcp = false
42
-
43
- [client.io_worker]
44
- num_event_loop = 1
45
- rdma_connect_timeout = '5s'
46
- read_write_rdma_in_event_thread = false
47
- read_write_tcp_in_event_thread = false
48
- tcp_connect_timeout = '1s'
49
- wait_to_retry_send = '100ms'
50
-
51
- [client.io_worker.connect_concurrency_limiter]
52
- max_concurrency = 4
53
-
54
- [client.io_worker.ibsocket]
55
- buf_ack_batch = 8
56
- buf_signal_batch = 8
57
- buf_size = 16384
58
- drain_timeout = '5s'
59
- drop_connections = 0
60
- event_ack_batch = 128
61
- max_rd_atomic = 16
62
- max_rdma_wr = 128
63
- max_rdma_wr_per_post = 32
64
- max_sge = 16
65
- min_rnr_timer = 1
66
- record_bytes_per_peer = false
67
- record_latency_per_peer = false
68
- retry_cnt = 7
69
- rnr_retry = 0
70
- send_buf_cnt = 32
71
- sl = 0
72
- start_psn = 0
73
- timeout = 14
74
-
75
- [client.io_worker.transport_pool]
76
- max_connections = 1
77
-
78
- [client.processor]
79
- enable_coroutines_pool = true
80
- max_coroutines_num = 256
81
- max_processing_requests_num = 4096
82
- response_compression_level = 1
83
- response_compression_threshold = '128KB'
84
-
85
- [client.rdma_control]
86
- max_concurrent_transmission = 64
87
-
88
- [client.thread_pool]
89
- bg_thread_pool_stratetry = 'SHARED_QUEUE'
90
- collect_stats = false
91
- enable_work_stealing = false
92
- io_thread_pool_stratetry = 'SHARED_QUEUE'
93
- num_bg_threads = 2
94
- num_connect_threads = 2
95
- num_io_threads = 2
96
- num_proc_threads = 2
97
- proc_thread_pool_stratetry = 'SHARED_QUEUE'
98
-
99
- [[common.log.categories]]
100
- categories = [ '.' ]
101
- handlers = [ 'normal', 'err', 'fatal' ]
102
- inherit = true
103
- level = 'INFO'
104
- propagate = 'NONE'
105
-
106
- [[common.log.handlers]]
107
- async = true
108
- file_path = '/var/log/3fs/hf3fs_fuse_main.log'
109
- max_file_size = '100MB'
110
- max_files = 10
111
- name = 'normal'
112
- rotate = true
113
- rotate_on_open = false
114
- start_level = 'NONE'
115
- stream_type = 'STDERR'
116
- writer_type = 'FILE'
117
-
118
- [[common.log.handlers]]
119
- async = false
120
- file_path = '/var/log/3fs/hf3fs_fuse_main-err.log'
121
- max_file_size = '100MB'
122
- max_files = 10
123
- name = 'err'
124
- rotate = true
125
- rotate_on_open = false
126
- start_level = 'ERR'
127
- stream_type = 'STDERR'
128
- writer_type = 'FILE'
129
-
130
- [[common.log.handlers]]
131
- async = false
132
- file_path = '/var/log/3fs/hf3fs_fuse_main-fatal.log'
133
- max_file_size = '100MB'
134
- max_files = 10
135
- name = 'fatal'
136
- rotate = true
137
- rotate_on_open = false
138
- start_level = 'FATAL'
139
- stream_type = 'STDERR'
140
- writer_type = 'STREAM'
141
-
142
- [common.memory]
143
- prof_active = false
144
- prof_prefix = ''
145
-
146
- [common.monitor]
147
- collect_period = '1s'
148
- num_collectors = 1
149
-
150
- [[common.monitor.reporters]]
151
- type = 'monitor_collector'
152
-
153
- [common.monitor.reporters.monitor_collector]
154
- remote_ip = ''
155
-
156
- [io_bufs]
157
- max_buf_size = '1MB'
158
- max_readahead = '256KB'
159
- write_buf_size = '1MB'
160
-
161
- [io_jobq_sizes]
162
- hi = 32
163
- lo = 4096
164
-
165
- [io_worker_coros]
166
- hi = 8
167
- lo = 8
168
-
169
- [meta]
170
- check_server_interval = '5s'
171
- dynamic_stripe = true
172
- max_concurrent_requests = 128
173
- network_type = 'RDMA'
174
- remove_chunks_batch_size = 32
175
- remove_chunks_max_iters = 1024
176
- selection_mode = 'RandomFollow'
177
-
178
- [meta.background_closer]
179
- prune_session_batch_count = 128
180
- prune_session_batch_interval = '10s'
181
- retry_first_wait = '100ms'
182
- retry_max_wait = '10s'
183
- task_scan = '50ms'
184
-
185
- [meta.background_closer.coroutine_pool]
186
- coroutines_num = 8
187
- enable_work_stealing = false
188
- queue_size = 128
189
-
190
- [meta.retry_default]
191
- max_failures_before_failover = 1
192
- retry_fast = '1s'
193
- retry_init_wait = '500ms'
194
- retry_max_wait = '5s'
195
- retry_send = 1
196
- retry_total_time = '1min'
197
- rpc_timeout = '5s'
198
-
199
- [mgmtd]
200
- accept_incomplete_routing_info_during_mgmtd_bootstrapping = true
201
- auto_extend_client_session_interval = '10s'
202
- auto_heartbeat_interval = '10s'
203
- auto_refresh_interval = '10s'
204
- enable_auto_extend_client_session = true
205
- enable_auto_heartbeat = false
206
- enable_auto_refresh = true
207
- mgmtd_server_addresses = []
208
- work_queue_size = 100
209
-
210
- [periodic_sync]
211
- enable = true
212
- flush_write_buf = true
213
- interval = '30s'
214
- limit = 1000
215
-
216
- [periodic_sync.worker]
217
- coroutines_num = 4
218
- enable_work_stealing = false
219
- queue_size = 1024
220
-
221
- [storage]
222
- check_overlapping_read_buffers = true
223
- check_overlapping_write_buffers = false
224
- chunk_checksum_type = 'CRC32C'
225
- create_net_client_for_updates = false
226
- implementation_type = 'RPC'
227
- max_inline_read_bytes = '0'
228
- max_inline_write_bytes = '0'
229
- max_read_io_bytes = '0'
230
-
231
- [storage.net_client]
232
- default_compression_level = 0
233
- default_compression_threshold = '128KB'
234
- default_log_long_running_threshold = '0ns'
235
- default_report_metrics = false
236
- default_send_retry_times = 1
237
- default_timeout = '1s'
238
- enable_rdma_control = false
239
- force_use_tcp = false
240
-
241
- [storage.net_client.io_worker]
242
- num_event_loop = 1
243
- rdma_connect_timeout = '5s'
244
- read_write_rdma_in_event_thread = false
245
- read_write_tcp_in_event_thread = false
246
- tcp_connect_timeout = '1s'
247
- wait_to_retry_send = '100ms'
248
-
249
- [storage.net_client.io_worker.connect_concurrency_limiter]
250
- max_concurrency = 4
251
-
252
- [storage.net_client.io_worker.ibsocket]
253
- buf_ack_batch = 8
254
- buf_signal_batch = 8
255
- buf_size = 16384
256
- drain_timeout = '5s'
257
- drop_connections = 0
258
- event_ack_batch = 128
259
- max_rd_atomic = 16
260
- max_rdma_wr = 128
261
- max_rdma_wr_per_post = 32
262
- max_sge = 16
263
- min_rnr_timer = 1
264
- record_bytes_per_peer = false
265
- record_latency_per_peer = false
266
- retry_cnt = 7
267
- rnr_retry = 0
268
- send_buf_cnt = 32
269
- sl = 0
270
- start_psn = 0
271
- timeout = 14
272
-
273
- [storage.net_client.io_worker.transport_pool]
274
- max_connections = 1
275
-
276
- [storage.net_client.processor]
277
- enable_coroutines_pool = true
278
- max_coroutines_num = 256
279
- max_processing_requests_num = 4096
280
- response_compression_level = 1
281
- response_compression_threshold = '128KB'
282
-
283
- [storage.net_client.rdma_control]
284
- max_concurrent_transmission = 64
285
-
286
- [storage.net_client.thread_pool]
287
- bg_thread_pool_stratetry = 'SHARED_QUEUE'
288
- collect_stats = false
289
- enable_work_stealing = false
290
- io_thread_pool_stratetry = 'SHARED_QUEUE'
291
- num_bg_threads = 2
292
- num_connect_threads = 2
293
- num_io_threads = 2
294
- num_proc_threads = 2
295
- proc_thread_pool_stratetry = 'SHARED_QUEUE'
296
-
297
- [storage.net_client_for_updates]
298
- default_compression_level = 0
299
- default_compression_threshold = '128KB'
300
- default_log_long_running_threshold = '0ns'
301
- default_report_metrics = false
302
- default_send_retry_times = 1
303
- default_timeout = '1s'
304
- enable_rdma_control = false
305
- force_use_tcp = false
306
-
307
- [storage.net_client_for_updates.io_worker]
308
- num_event_loop = 1
309
- rdma_connect_timeout = '5s'
310
- read_write_rdma_in_event_thread = false
311
- read_write_tcp_in_event_thread = false
312
- tcp_connect_timeout = '1s'
313
- wait_to_retry_send = '100ms'
314
-
315
- [storage.net_client_for_updates.io_worker.connect_concurrency_limiter]
316
- max_concurrency = 4
317
-
318
- [storage.net_client_for_updates.io_worker.ibsocket]
319
- buf_ack_batch = 8
320
- buf_signal_batch = 8
321
- buf_size = 16384
322
- drain_timeout = '5s'
323
- drop_connections = 0
324
- event_ack_batch = 128
325
- max_rd_atomic = 16
326
- max_rdma_wr = 128
327
- max_rdma_wr_per_post = 32
328
- max_sge = 16
329
- min_rnr_timer = 1
330
- record_bytes_per_peer = false
331
- record_latency_per_peer = false
332
- retry_cnt = 7
333
- rnr_retry = 0
334
- send_buf_cnt = 32
335
- sl = 0
336
- start_psn = 0
337
- timeout = 14
338
-
339
- [storage.net_client_for_updates.io_worker.transport_pool]
340
- max_connections = 1
341
-
342
- [storage.net_client_for_updates.processor]
343
- enable_coroutines_pool = true
344
- max_coroutines_num = 256
345
- max_processing_requests_num = 4096
346
- response_compression_level = 1
347
- response_compression_threshold = '128KB'
348
-
349
- [storage.net_client_for_updates.rdma_control]
350
- max_concurrent_transmission = 64
351
-
352
- [storage.net_client_for_updates.thread_pool]
353
- bg_thread_pool_stratetry = 'SHARED_QUEUE'
354
- collect_stats = false
355
- enable_work_stealing = false
356
- io_thread_pool_stratetry = 'SHARED_QUEUE'
357
- num_bg_threads = 2
358
- num_connect_threads = 2
359
- num_io_threads = 2
360
- num_proc_threads = 2
361
- proc_thread_pool_stratetry = 'SHARED_QUEUE'
362
-
363
- [storage.retry]
364
- init_wait_time = '10s'
365
- max_failures_before_failover = 1
366
- max_retry_time = '1min'
367
- max_wait_time = '30s'
368
-
369
- [storage.traffic_control.query]
370
- max_batch_bytes = '4MB'
371
- max_batch_size = 128
372
- max_concurrent_requests = 32
373
- max_concurrent_requests_per_server = 8
374
- process_batches_in_parallel = true
375
- random_shuffle_requests = true
376
-
377
- [storage.traffic_control.read]
378
- max_batch_bytes = '4MB'
379
- max_batch_size = 128
380
- max_concurrent_requests = 32
381
- max_concurrent_requests_per_server = 8
382
- process_batches_in_parallel = true
383
- random_shuffle_requests = true
384
-
385
- [storage.traffic_control.remove]
386
- max_batch_bytes = '4MB'
387
- max_batch_size = 128
388
- max_concurrent_requests = 32
389
- max_concurrent_requests_per_server = 8
390
- process_batches_in_parallel = true
391
- random_shuffle_requests = true
392
-
393
- [storage.traffic_control.truncate]
394
- max_batch_bytes = '4MB'
395
- max_batch_size = 128
396
- max_concurrent_requests = 32
397
- max_concurrent_requests_per_server = 8
398
- process_batches_in_parallel = true
399
- random_shuffle_requests = true
400
-
401
- [storage.traffic_control.write]
402
- max_batch_bytes = '4MB'
403
- max_batch_size = 128
404
- max_concurrent_requests = 32
405
- max_concurrent_requests_per_server = 8
406
- process_batches_in_parallel = true
407
- random_shuffle_requests = true
408
-
409
- [storage_io.read]
410
- allowReadUncommitted = false
411
- enableChecksum = false
412
-
413
- [storage_io.read.debug]
414
- bypass_disk_io = false
415
- bypass_rdma_xmit = false
416
- inject_random_client_error = false
417
- inject_random_server_error = false
418
- max_num_of_injection_points = 100
419
-
420
- [storage_io.read.retry]
421
- init_wait_time = '0ns'
422
- max_retry_time = '0ns'
423
- max_wait_time = '0ns'
424
- retry_permanent_error = false
425
-
426
- [storage_io.read.targetSelection]
427
- mode = 'Default'
428
- targetIndex = 0
429
- trafficZone = ''
430
-
431
- [storage_io.write]
432
- enableChecksum = true
433
-
434
- [storage_io.write.debug]
435
- bypass_disk_io = false
436
- bypass_rdma_xmit = false
437
- inject_random_client_error = false
438
- inject_random_server_error = false
439
- max_num_of_injection_points = 100
440
-
441
- [storage_io.write.retry]
442
- init_wait_time = '0ns'
443
- max_retry_time = '0ns'
444
- max_wait_time = '0ns'
445
- retry_permanent_error = false
446
-
447
- [storage_io.write.targetSelection]
448
- mode = 'Default'
449
- targetIndex = 0
450
- trafficZone = ''
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
asian_ai/chinese/3FS/configs/hf3fs_fuse_main_app.toml DELETED
@@ -1 +0,0 @@
1
-
 
 
asian_ai/chinese/3FS/configs/hf3fs_fuse_main_launcher.toml DELETED
@@ -1,95 +0,0 @@
1
- allow_other = true
2
- cluster_id = ''
3
- mountpoint = ''
4
- token_file = ''
5
-
6
- [client]
7
- default_compression_level = 0
8
- default_compression_threshold = '128KB'
9
- default_log_long_running_threshold = '0ns'
10
- default_report_metrics = false
11
- default_send_retry_times = 1
12
- default_timeout = '1s'
13
- enable_rdma_control = false
14
- force_use_tcp = false
15
-
16
- [client.io_worker]
17
- num_event_loop = 1
18
- rdma_connect_timeout = '5s'
19
- read_write_rdma_in_event_thread = false
20
- read_write_tcp_in_event_thread = false
21
- tcp_connect_timeout = '1s'
22
- wait_to_retry_send = '100ms'
23
-
24
- [client.io_worker.connect_concurrency_limiter]
25
- max_concurrency = 4
26
-
27
- [client.io_worker.ibsocket]
28
- buf_ack_batch = 8
29
- buf_signal_batch = 8
30
- buf_size = 16384
31
- drain_timeout = '5s'
32
- drop_connections = 0
33
- event_ack_batch = 128
34
- max_rd_atomic = 16
35
- max_rdma_wr = 128
36
- max_rdma_wr_per_post = 32
37
- max_sge = 16
38
- min_rnr_timer = 1
39
- record_bytes_per_peer = false
40
- record_latency_per_peer = false
41
- retry_cnt = 7
42
- rnr_retry = 0
43
- send_buf_cnt = 32
44
- sl = 0
45
- start_psn = 0
46
- timeout = 14
47
-
48
- [client.io_worker.transport_pool]
49
- max_connections = 1
50
-
51
- [client.processor]
52
- enable_coroutines_pool = true
53
- max_coroutines_num = 256
54
- max_processing_requests_num = 4096
55
- response_compression_level = 1
56
- response_compression_threshold = '128KB'
57
-
58
- [client.rdma_control]
59
- max_concurrent_transmission = 64
60
-
61
- [client.thread_pool]
62
- bg_thread_pool_stratetry = 'SHARED_QUEUE'
63
- collect_stats = false
64
- enable_work_stealing = false
65
- io_thread_pool_stratetry = 'SHARED_QUEUE'
66
- num_bg_threads = 2
67
- num_connect_threads = 2
68
- num_io_threads = 2
69
- num_proc_threads = 2
70
- proc_thread_pool_stratetry = 'SHARED_QUEUE'
71
-
72
- [ib_devices]
73
- allow_no_usable_devices = false
74
- allow_unknown_zone = true
75
- default_network_zone = 'UNKNOWN'
76
- default_pkey_index = 0
77
- default_roce_pkey_index = 0
78
- default_traffic_class = 0
79
- device_filter = []
80
- fork_safe = true
81
- prefer_ibdevice = true
82
- skip_inactive_ports = true
83
- skip_unusable_device = true
84
- subnets = []
85
-
86
- [mgmtd_client]
87
- accept_incomplete_routing_info_during_mgmtd_bootstrapping = true
88
- auto_extend_client_session_interval = '10s'
89
- auto_heartbeat_interval = '10s'
90
- auto_refresh_interval = '10s'
91
- enable_auto_extend_client_session = true
92
- enable_auto_heartbeat = false
93
- enable_auto_refresh = true
94
- mgmtd_server_addresses = []
95
- work_queue_size = 100
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
asian_ai/chinese/3FS/configs/meta_main.toml DELETED
@@ -1,633 +0,0 @@
1
- [[common.log.categories]]
2
- categories = [ '.' ]
3
- handlers = [ 'normal', 'err', 'fatal' ]
4
- inherit = true
5
- level = 'INFO'
6
- propagate = 'NONE'
7
-
8
- [[common.log.categories]]
9
- categories = [ 'eventlog' ]
10
- handlers = [ 'event' ]
11
- inherit = false
12
- level = 'INFO'
13
- propagate = 'ERR'
14
-
15
- [[common.log.handlers]]
16
- async = true
17
- file_path = '/var/log/3fs/hf3fs_meta_main.log'
18
- max_file_size = '100MB'
19
- max_files = 10
20
- name = 'normal'
21
- rotate = true
22
- rotate_on_open = false
23
- start_level = 'NONE'
24
- stream_type = 'STDERR'
25
- writer_type = 'FILE'
26
-
27
- [[common.log.handlers]]
28
- async = false
29
- file_path = '/var/log/3fs/hf3fs_meta_main-err.log'
30
- max_file_size = '100MB'
31
- max_files = 10
32
- name = 'err'
33
- rotate = true
34
- rotate_on_open = false
35
- start_level = 'ERR'
36
- stream_type = 'STDERR'
37
- writer_type = 'FILE'
38
-
39
- [[common.log.handlers]]
40
- async = false
41
- file_path = '/var/log/3fs/hf3fs_meta_main-fatal.log'
42
- max_file_size = '100MB'
43
- max_files = 10
44
- name = 'fatal'
45
- rotate = true
46
- rotate_on_open = false
47
- start_level = 'FATAL'
48
- stream_type = 'STDERR'
49
- writer_type = 'STREAM'
50
-
51
- [[common.log.handlers]]
52
- async = true
53
- file_path = '/var/log/3fs/hf3fs_meta_main-event.log'
54
- max_file_size = '100MB'
55
- max_files = 10
56
- name = 'event'
57
- rotate = true
58
- rotate_on_open = false
59
- start_level = 'INFO'
60
- stream_type = 'STDERR'
61
- writer_type = 'EVENT'
62
-
63
- [common.memory]
64
- prof_active = false
65
- prof_prefix = ''
66
-
67
- [common.monitor]
68
- collect_period = '1s'
69
- num_collectors = 1
70
-
71
- [[common.monitor.reporters]]
72
- type = 'monitor_collector'
73
-
74
- [common.monitor.reporters.monitor_collector]
75
- remote_ip = ''
76
-
77
- [server]
78
- use_memkv = false
79
-
80
- [server.background_client]
81
- default_compression_level = 0
82
- default_compression_threshold = '128KB'
83
- default_log_long_running_threshold = '0ns'
84
- default_report_metrics = false
85
- default_send_retry_times = 1
86
- default_timeout = '1s'
87
- enable_rdma_control = false
88
- force_use_tcp = false
89
-
90
- [server.background_client.io_worker]
91
- num_event_loop = 1
92
- rdma_connect_timeout = '5s'
93
- read_write_rdma_in_event_thread = false
94
- read_write_tcp_in_event_thread = false
95
- tcp_connect_timeout = '1s'
96
- wait_to_retry_send = '100ms'
97
-
98
- [server.background_client.io_worker.connect_concurrency_limiter]
99
- max_concurrency = 4
100
-
101
- [server.background_client.io_worker.ibsocket]
102
- buf_ack_batch = 8
103
- buf_signal_batch = 8
104
- buf_size = 16384
105
- drain_timeout = '5s'
106
- drop_connections = 0
107
- event_ack_batch = 128
108
- max_rd_atomic = 16
109
- max_rdma_wr = 128
110
- max_rdma_wr_per_post = 32
111
- max_sge = 16
112
- min_rnr_timer = 1
113
- record_bytes_per_peer = false
114
- record_latency_per_peer = false
115
- retry_cnt = 7
116
- rnr_retry = 0
117
- send_buf_cnt = 32
118
- sl = 0
119
- start_psn = 0
120
- timeout = 14
121
-
122
- [server.background_client.io_worker.transport_pool]
123
- max_connections = 1
124
-
125
- [server.background_client.processor]
126
- enable_coroutines_pool = true
127
- max_coroutines_num = 256
128
- max_processing_requests_num = 4096
129
- response_compression_level = 1
130
- response_compression_threshold = '128KB'
131
-
132
- [server.background_client.rdma_control]
133
- max_concurrent_transmission = 64
134
-
135
- [server.background_client.thread_pool]
136
- bg_thread_pool_stratetry = 'SHARED_QUEUE'
137
- collect_stats = false
138
- enable_work_stealing = false
139
- io_thread_pool_stratetry = 'SHARED_QUEUE'
140
- num_bg_threads = 2
141
- num_connect_threads = 2
142
- num_io_threads = 2
143
- num_proc_threads = 2
144
- proc_thread_pool_stratetry = 'SHARED_QUEUE'
145
-
146
- [server.base.independent_thread_pool]
147
- bg_thread_pool_stratetry = 'SHARED_QUEUE'
148
- collect_stats = false
149
- enable_work_stealing = false
150
- io_thread_pool_stratetry = 'SHARED_QUEUE'
151
- num_bg_threads = 2
152
- num_connect_threads = 2
153
- num_io_threads = 2
154
- num_proc_threads = 2
155
- proc_thread_pool_stratetry = 'SHARED_QUEUE'
156
-
157
- [server.base.thread_pool]
158
- bg_thread_pool_stratetry = 'SHARED_QUEUE'
159
- collect_stats = false
160
- enable_work_stealing = false
161
- io_thread_pool_stratetry = 'SHARED_QUEUE'
162
- num_bg_threads = 2
163
- num_connect_threads = 2
164
- num_io_threads = 2
165
- num_proc_threads = 2
166
- proc_thread_pool_stratetry = 'SHARED_QUEUE'
167
-
168
- [[server.base.groups]]
169
- check_connections_interval = '1min'
170
- connection_expiration_time = '1day'
171
- network_type = 'RDMA'
172
- services = [ 'MetaSerde' ]
173
- use_independent_thread_pool = false
174
-
175
- [server.base.groups.io_worker]
176
- num_event_loop = 1
177
- rdma_connect_timeout = '5s'
178
- read_write_rdma_in_event_thread = false
179
- read_write_tcp_in_event_thread = false
180
- tcp_connect_timeout = '1s'
181
- wait_to_retry_send = '100ms'
182
-
183
- [server.base.groups.io_worker.connect_concurrency_limiter]
184
- max_concurrency = 4
185
-
186
- [server.base.groups.io_worker.ibsocket]
187
- buf_ack_batch = 8
188
- buf_signal_batch = 8
189
- buf_size = 16384
190
- drain_timeout = '5s'
191
- drop_connections = 0
192
- event_ack_batch = 128
193
- max_rd_atomic = 16
194
- max_rdma_wr = 128
195
- max_rdma_wr_per_post = 32
196
- max_sge = 16
197
- min_rnr_timer = 1
198
- record_bytes_per_peer = false
199
- record_latency_per_peer = false
200
- retry_cnt = 7
201
- rnr_retry = 0
202
- send_buf_cnt = 32
203
- sl = 0
204
- start_psn = 0
205
- timeout = 14
206
-
207
- [server.base.groups.io_worker.transport_pool]
208
- max_connections = 1
209
-
210
- [server.base.groups.listener]
211
- domain_socket_index = 1
212
- filter_list = []
213
- listen_port = 8001
214
- listen_queue_depth = 4096
215
- rdma_accept_timeout = '15s'
216
- rdma_listen_ethernet = true
217
- reuse_port = false
218
-
219
- [server.base.groups.processor]
220
- enable_coroutines_pool = true
221
- max_coroutines_num = 256
222
- max_processing_requests_num = 4096
223
- response_compression_level = 1
224
- response_compression_threshold = '128KB'
225
-
226
- [[server.base.groups]]
227
- check_connections_interval = '1min'
228
- connection_expiration_time = '1day'
229
- network_type = 'TCP'
230
- services = [ 'Core' ]
231
- use_independent_thread_pool = true
232
-
233
- [server.base.groups.io_worker]
234
- num_event_loop = 1
235
- rdma_connect_timeout = '5s'
236
- read_write_rdma_in_event_thread = false
237
- read_write_tcp_in_event_thread = false
238
- tcp_connect_timeout = '1s'
239
- wait_to_retry_send = '100ms'
240
-
241
- [server.base.groups.io_worker.connect_concurrency_limiter]
242
- max_concurrency = 4
243
-
244
- [server.base.groups.io_worker.ibsocket]
245
- buf_ack_batch = 8
246
- buf_signal_batch = 8
247
- buf_size = 16384
248
- drain_timeout = '5s'
249
- drop_connections = 0
250
- event_ack_batch = 128
251
- max_rd_atomic = 16
252
- max_rdma_wr = 128
253
- max_rdma_wr_per_post = 32
254
- max_sge = 16
255
- min_rnr_timer = 1
256
- record_bytes_per_peer = false
257
- record_latency_per_peer = false
258
- retry_cnt = 7
259
- rnr_retry = 0
260
- send_buf_cnt = 32
261
- sl = 0
262
- start_psn = 0
263
- timeout = 14
264
-
265
- [server.base.groups.io_worker.transport_pool]
266
- max_connections = 1
267
-
268
- [server.base.groups.listener]
269
- domain_socket_index = 1
270
- filter_list = []
271
- listen_port = 9001
272
- listen_queue_depth = 4096
273
- rdma_accept_timeout = '15s'
274
- rdma_listen_ethernet = true
275
- reuse_port = false
276
-
277
- [server.base.groups.processor]
278
- enable_coroutines_pool = true
279
- max_coroutines_num = 256
280
- max_processing_requests_num = 4096
281
- response_compression_level = 1
282
- response_compression_threshold = '128KB'
283
-
284
- [server.fdb]
285
- casual_read_risky = false
286
- clusterFile = ''
287
- default_backoff = 0
288
- enableMultipleClient = false
289
- externalClientDir = ''
290
- externalClientPath = ''
291
- multipleClientThreadNum = 4
292
- readonly = false
293
- trace_file = ''
294
- trace_format = 'json'
295
-
296
- [server.kv_engine]
297
- use_memkv = false
298
-
299
- [server.kv_engine.fdb]
300
- casual_read_risky = false
301
- clusterFile = ''
302
- default_backoff = 0
303
- enableMultipleClient = false
304
- externalClientDir = ''
305
- externalClientPath = ''
306
- multipleClientThreadNum = 4
307
- readonly = false
308
- trace_file = ''
309
- trace_format = 'json'
310
-
311
- [server.meta]
312
- acl_cache_time = '15s'
313
- allow_directly_move_to_trash = false
314
- allow_owner_change_immutable = false
315
- allow_stat_deleted_inodes = true
316
- authenticate = false
317
- batch_stat_by_path_concurrent = 4
318
- batch_stat_concurrent = 8
319
- check_file_hole = false
320
- dynamic_stripe = false
321
- dynamic_stripe_growth = 2
322
- dynamic_stripe_initial = 16
323
- enable_new_chunk_engine = false
324
- grv_cache = false
325
- idempotent_record_clean = '1min'
326
- idempotent_record_expire = '30min'
327
- idempotent_remove = true
328
- idempotent_rename = false
329
- iflags_chain_allocation = false
330
- iflags_chunk_engine = true
331
- ignore_length_hint = false
332
- inodeId_abort_on_duplicate = false
333
- inodeId_check_unique = true
334
- list_default_limit = 128
335
- max_batch_operations = 4096
336
- max_directory_depth = 64
337
- max_remove_chunks_per_request = 32
338
- max_symlink_count = 10
339
- max_symlink_depth = 4
340
- operation_timeout = '5s'
341
- otrunc_replace_file = true
342
- otrunc_replace_file_threshold = '1GB'
343
- readonly = false
344
- recursive_remove_check_owner = true
345
- recursive_remove_perm_check = 1024
346
- statfs_cache_time = '1min'
347
- statfs_space_imbalance_threshold = 5
348
- statfs_update_interval = '5s'
349
- sync_on_prune_session = false
350
- time_granularity = '1s'
351
-
352
- [server.meta.background_hole_checker]
353
- coroutines_num = 16
354
- enable_work_stealing = false
355
- queue_size = 4096
356
-
357
- [server.meta.distributor]
358
- timeout = '30s'
359
- update_interval = '1s'
360
-
361
- [server.meta.event_trace_log]
362
- dump_interval = '30s'
363
- enabled = true
364
- max_num_writers = 1
365
- max_row_group_length = 100000
366
- trace_file_dir = '.'
367
-
368
- [server.meta.forward]
369
- addr_type = 'RDMA'
370
- debug = true
371
- timeout = '10s'
372
-
373
- [server.meta.gc]
374
- check_session = true
375
- distributed_gc = true
376
- enable = true
377
- gc_delay_free_space_threshold = 5
378
- gc_directory_concurrent = 4
379
- gc_directory_delay = '0ns'
380
- gc_directory_entry_batch = 32
381
- gc_directory_entry_concurrent = 4
382
- gc_file_concurrent = 32
383
- gc_file_delay = '5min'
384
- large_file_chunks = 128
385
- recursive_perm_check = true
386
- remove_chunks_batch_size = 32
387
- retry_delay = '10min'
388
- scan_batch = 4096
389
- scan_interval = '200ms'
390
- small_file_chunks = 32
391
- txn_low_priority = false
392
-
393
- [server.meta.gc.retry_remove_chunks]
394
- init_wait_time = '10s'
395
- max_retry_time = '30s'
396
- max_wait_time = '10s'
397
- retry_permanent_error = false
398
-
399
- [server.meta.gc.workers]
400
- coroutines_num = 8
401
- enable_work_stealing = false
402
- queue_size = 1024
403
-
404
- [server.meta.retry_remove_chunks]
405
- init_wait_time = '10s'
406
- max_retry_time = '30s'
407
- max_wait_time = '10s'
408
- retry_permanent_error = false
409
-
410
- [server.meta.retry_transaction]
411
- max_backoff = '1s'
412
- max_retry_count = 10
413
-
414
- [server.meta.session_manager]
415
- enable = true
416
- scan_batch = 1024
417
- scan_interval = '5min'
418
- session_timeout = '5min'
419
- sync_on_prune_session = false
420
-
421
- [server.meta.session_manager.close_workers]
422
- coroutines_num = 32
423
- enable_work_stealing = false
424
- queue_size = 1024
425
-
426
- [server.meta.session_manager.scan_workers]
427
- coroutines_num = 8
428
- enable_work_stealing = false
429
- queue_size = 128
430
-
431
- [server.meta.user_cache]
432
- buckets = 127
433
- exist_ttl = '5min'
434
- inexist_ttl = '10s'
435
-
436
- [server.mgmtd_client]
437
- accept_incomplete_routing_info_during_mgmtd_bootstrapping = true
438
- auto_extend_client_session_interval = '10s'
439
- auto_heartbeat_interval = '10s'
440
- auto_refresh_interval = '10s'
441
- enable_auto_extend_client_session = false
442
- enable_auto_heartbeat = true
443
- enable_auto_refresh = true
444
- mgmtd_server_addresses = []
445
- work_queue_size = 100
446
-
447
- [server.storage_client]
448
- check_overlapping_read_buffers = true
449
- check_overlapping_write_buffers = false
450
- chunk_checksum_type = 'CRC32C'
451
- create_net_client_for_updates = false
452
- implementation_type = 'RPC'
453
- max_inline_read_bytes = '0'
454
- max_inline_write_bytes = '0'
455
- max_read_io_bytes = '0'
456
-
457
- [server.storage_client.net_client]
458
- default_compression_level = 0
459
- default_compression_threshold = '128KB'
460
- default_log_long_running_threshold = '0ns'
461
- default_report_metrics = false
462
- default_send_retry_times = 1
463
- default_timeout = '1s'
464
- enable_rdma_control = false
465
- force_use_tcp = false
466
-
467
- [server.storage_client.net_client.io_worker]
468
- num_event_loop = 1
469
- rdma_connect_timeout = '5s'
470
- read_write_rdma_in_event_thread = false
471
- read_write_tcp_in_event_thread = false
472
- tcp_connect_timeout = '1s'
473
- wait_to_retry_send = '100ms'
474
-
475
- [server.storage_client.net_client.io_worker.connect_concurrency_limiter]
476
- max_concurrency = 4
477
-
478
- [server.storage_client.net_client.io_worker.ibsocket]
479
- buf_ack_batch = 8
480
- buf_signal_batch = 8
481
- buf_size = 16384
482
- drain_timeout = '5s'
483
- drop_connections = 0
484
- event_ack_batch = 128
485
- max_rd_atomic = 16
486
- max_rdma_wr = 128
487
- max_rdma_wr_per_post = 32
488
- max_sge = 16
489
- min_rnr_timer = 1
490
- record_bytes_per_peer = false
491
- record_latency_per_peer = false
492
- retry_cnt = 7
493
- rnr_retry = 0
494
- send_buf_cnt = 32
495
- sl = 0
496
- start_psn = 0
497
- timeout = 14
498
-
499
- [server.storage_client.net_client.io_worker.transport_pool]
500
- max_connections = 1
501
-
502
- [server.storage_client.net_client.processor]
503
- enable_coroutines_pool = true
504
- max_coroutines_num = 256
505
- max_processing_requests_num = 4096
506
- response_compression_level = 1
507
- response_compression_threshold = '128KB'
508
-
509
- [server.storage_client.net_client.rdma_control]
510
- max_concurrent_transmission = 64
511
-
512
- [server.storage_client.net_client.thread_pool]
513
- bg_thread_pool_stratetry = 'SHARED_QUEUE'
514
- collect_stats = false
515
- enable_work_stealing = false
516
- io_thread_pool_stratetry = 'SHARED_QUEUE'
517
- num_bg_threads = 2
518
- num_connect_threads = 2
519
- num_io_threads = 2
520
- num_proc_threads = 2
521
- proc_thread_pool_stratetry = 'SHARED_QUEUE'
522
-
523
- [server.storage_client.net_client_for_updates]
524
- default_compression_level = 0
525
- default_compression_threshold = '128KB'
526
- default_log_long_running_threshold = '0ns'
527
- default_report_metrics = false
528
- default_send_retry_times = 1
529
- default_timeout = '1s'
530
- enable_rdma_control = false
531
- force_use_tcp = false
532
-
533
- [server.storage_client.net_client_for_updates.io_worker]
534
- num_event_loop = 1
535
- rdma_connect_timeout = '5s'
536
- read_write_rdma_in_event_thread = false
537
- read_write_tcp_in_event_thread = false
538
- tcp_connect_timeout = '1s'
539
- wait_to_retry_send = '100ms'
540
-
541
- [server.storage_client.net_client_for_updates.io_worker.connect_concurrency_limiter]
542
- max_concurrency = 4
543
-
544
- [server.storage_client.net_client_for_updates.io_worker.ibsocket]
545
- buf_ack_batch = 8
546
- buf_signal_batch = 8
547
- buf_size = 16384
548
- drain_timeout = '5s'
549
- drop_connections = 0
550
- event_ack_batch = 128
551
- max_rd_atomic = 16
552
- max_rdma_wr = 128
553
- max_rdma_wr_per_post = 32
554
- max_sge = 16
555
- min_rnr_timer = 1
556
- record_bytes_per_peer = false
557
- record_latency_per_peer = false
558
- retry_cnt = 7
559
- rnr_retry = 0
560
- send_buf_cnt = 32
561
- sl = 0
562
- start_psn = 0
563
- timeout = 14
564
-
565
- [server.storage_client.net_client_for_updates.io_worker.transport_pool]
566
- max_connections = 1
567
-
568
- [server.storage_client.net_client_for_updates.processor]
569
- enable_coroutines_pool = true
570
- max_coroutines_num = 256
571
- max_processing_requests_num = 4096
572
- response_compression_level = 1
573
- response_compression_threshold = '128KB'
574
-
575
- [server.storage_client.net_client_for_updates.rdma_control]
576
- max_concurrent_transmission = 64
577
-
578
- [server.storage_client.net_client_for_updates.thread_pool]
579
- bg_thread_pool_stratetry = 'SHARED_QUEUE'
580
- collect_stats = false
581
- enable_work_stealing = false
582
- io_thread_pool_stratetry = 'SHARED_QUEUE'
583
- num_bg_threads = 2
584
- num_connect_threads = 2
585
- num_io_threads = 2
586
- num_proc_threads = 2
587
- proc_thread_pool_stratetry = 'SHARED_QUEUE'
588
-
589
- [server.storage_client.retry]
590
- init_wait_time = '2s'
591
- max_failures_before_failover = 1
592
- max_retry_time = '5s'
593
- max_wait_time = '5s'
594
-
595
- [server.storage_client.traffic_control.query]
596
- max_batch_bytes = '4MB'
597
- max_batch_size = 128
598
- max_concurrent_requests = 32
599
- max_concurrent_requests_per_server = 8
600
- process_batches_in_parallel = true
601
- random_shuffle_requests = true
602
-
603
- [server.storage_client.traffic_control.read]
604
- max_batch_bytes = '4MB'
605
- max_batch_size = 128
606
- max_concurrent_requests = 32
607
- max_concurrent_requests_per_server = 8
608
- process_batches_in_parallel = true
609
- random_shuffle_requests = true
610
-
611
- [server.storage_client.traffic_control.remove]
612
- max_batch_bytes = '4MB'
613
- max_batch_size = 128
614
- max_concurrent_requests = 32
615
- max_concurrent_requests_per_server = 8
616
- process_batches_in_parallel = true
617
- random_shuffle_requests = true
618
-
619
- [server.storage_client.traffic_control.truncate]
620
- max_batch_bytes = '4MB'
621
- max_batch_size = 128
622
- max_concurrent_requests = 32
623
- max_concurrent_requests_per_server = 8
624
- process_batches_in_parallel = true
625
- random_shuffle_requests = true
626
-
627
- [server.storage_client.traffic_control.write]
628
- max_batch_bytes = '4MB'
629
- max_batch_size = 128
630
- max_concurrent_requests = 32
631
- max_concurrent_requests_per_server = 8
632
- process_batches_in_parallel = true
633
- random_shuffle_requests = true
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
asian_ai/chinese/3FS/configs/meta_main_app.toml DELETED
@@ -1,2 +0,0 @@
1
- allow_empty_node_id = true
2
- node_id = 0
 
 
 
asian_ai/chinese/3FS/configs/meta_main_launcher.toml DELETED
@@ -1,93 +0,0 @@
1
- allow_dev_version = true
2
- cluster_id = ''
3
-
4
- [client]
5
- default_compression_level = 0
6
- default_compression_threshold = '128KB'
7
- default_log_long_running_threshold = '0ns'
8
- default_report_metrics = false
9
- default_send_retry_times = 1
10
- default_timeout = '1s'
11
- enable_rdma_control = false
12
- force_use_tcp = false
13
-
14
- [client.io_worker]
15
- num_event_loop = 1
16
- rdma_connect_timeout = '5s'
17
- read_write_rdma_in_event_thread = false
18
- read_write_tcp_in_event_thread = false
19
- tcp_connect_timeout = '1s'
20
- wait_to_retry_send = '100ms'
21
-
22
- [client.io_worker.connect_concurrency_limiter]
23
- max_concurrency = 4
24
-
25
- [client.io_worker.ibsocket]
26
- buf_ack_batch = 8
27
- buf_signal_batch = 8
28
- buf_size = 16384
29
- drain_timeout = '5s'
30
- drop_connections = 0
31
- event_ack_batch = 128
32
- max_rd_atomic = 16
33
- max_rdma_wr = 128
34
- max_rdma_wr_per_post = 32
35
- max_sge = 16
36
- min_rnr_timer = 1
37
- record_bytes_per_peer = false
38
- record_latency_per_peer = false
39
- retry_cnt = 7
40
- rnr_retry = 0
41
- send_buf_cnt = 32
42
- sl = 0
43
- start_psn = 0
44
- timeout = 14
45
-
46
- [client.io_worker.transport_pool]
47
- max_connections = 1
48
-
49
- [client.processor]
50
- enable_coroutines_pool = true
51
- max_coroutines_num = 256
52
- max_processing_requests_num = 4096
53
- response_compression_level = 1
54
- response_compression_threshold = '128KB'
55
-
56
- [client.rdma_control]
57
- max_concurrent_transmission = 64
58
-
59
- [client.thread_pool]
60
- bg_thread_pool_stratetry = 'SHARED_QUEUE'
61
- collect_stats = false
62
- enable_work_stealing = false
63
- io_thread_pool_stratetry = 'SHARED_QUEUE'
64
- num_bg_threads = 2
65
- num_connect_threads = 2
66
- num_io_threads = 2
67
- num_proc_threads = 2
68
- proc_thread_pool_stratetry = 'SHARED_QUEUE'
69
-
70
- [ib_devices]
71
- allow_no_usable_devices = false
72
- allow_unknown_zone = true
73
- default_network_zone = 'UNKNOWN'
74
- default_pkey_index = 0
75
- default_roce_pkey_index = 0
76
- default_traffic_class = 0
77
- device_filter = []
78
- fork_safe = true
79
- prefer_ibdevice = true
80
- skip_inactive_ports = true
81
- skip_unusable_device = true
82
- subnets = []
83
-
84
- [mgmtd_client]
85
- accept_incomplete_routing_info_during_mgmtd_bootstrapping = true
86
- auto_extend_client_session_interval = '10s'
87
- auto_heartbeat_interval = '10s'
88
- auto_refresh_interval = '10s'
89
- enable_auto_extend_client_session = false
90
- enable_auto_heartbeat = true
91
- enable_auto_refresh = true
92
- mgmtd_server_addresses = []
93
- work_queue_size = 100
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
asian_ai/chinese/3FS/configs/mgmtd_main.toml DELETED
@@ -1,232 +0,0 @@
1
- [[common.log.categories]]
2
- categories = [ '.' ]
3
- handlers = [ 'normal', 'err', 'fatal' ]
4
- inherit = true
5
- level = 'INFO'
6
- propagate = 'NONE'
7
-
8
- [[common.log.handlers]]
9
- async = true
10
- file_path = '/var/log/3fs/mgmtd_main.log'
11
- max_file_size = '100MB'
12
- max_files = 10
13
- name = 'normal'
14
- rotate = true
15
- rotate_on_open = false
16
- start_level = 'NONE'
17
- stream_type = 'STDERR'
18
- writer_type = 'FILE'
19
-
20
- [[common.log.handlers]]
21
- async = false
22
- file_path = '/var/log/3fs/mgmtd_main-err.log'
23
- max_file_size = '100MB'
24
- max_files = 10
25
- name = 'err'
26
- rotate = true
27
- rotate_on_open = false
28
- start_level = 'ERR'
29
- stream_type = 'STDERR'
30
- writer_type = 'FILE'
31
-
32
- [[common.log.handlers]]
33
- async = false
34
- file_path = '/var/log/3fs/mgmtd_main-fatal.log'
35
- max_file_size = '100MB'
36
- max_files = 10
37
- name = 'fatal'
38
- rotate = true
39
- rotate_on_open = false
40
- start_level = 'FATAL'
41
- stream_type = 'STDERR'
42
- writer_type = 'STREAM'
43
-
44
- [common.memory]
45
- prof_active = false
46
- prof_prefix = ''
47
-
48
- [common.monitor]
49
- collect_period = '1s'
50
- num_collectors = 1
51
-
52
- [[common.monitor.reporters]]
53
- type = 'monitor_collector'
54
-
55
- [common.monitor.reporters.monitor_collector]
56
- remote_ip = ""
57
-
58
- [server.base.independent_thread_pool]
59
- bg_thread_pool_stratetry = 'SHARED_QUEUE'
60
- collect_stats = false
61
- enable_work_stealing = false
62
- io_thread_pool_stratetry = 'SHARED_QUEUE'
63
- num_bg_threads = 2
64
- num_connect_threads = 2
65
- num_io_threads = 2
66
- num_proc_threads = 2
67
- proc_thread_pool_stratetry = 'SHARED_QUEUE'
68
-
69
- [server.base.thread_pool]
70
- bg_thread_pool_stratetry = 'SHARED_QUEUE'
71
- collect_stats = false
72
- enable_work_stealing = false
73
- io_thread_pool_stratetry = 'SHARED_QUEUE'
74
- num_bg_threads = 2
75
- num_connect_threads = 2
76
- num_io_threads = 2
77
- num_proc_threads = 2
78
- proc_thread_pool_stratetry = 'SHARED_QUEUE'
79
-
80
- [[server.base.groups]]
81
- check_connections_interval = '1min'
82
- connection_expiration_time = '1day'
83
- network_type = 'RDMA'
84
- services = [ 'Mgmtd' ]
85
- use_independent_thread_pool = false
86
-
87
- [server.base.groups.io_worker]
88
- num_event_loop = 1
89
- rdma_connect_timeout = '5s'
90
- read_write_rdma_in_event_thread = false
91
- read_write_tcp_in_event_thread = false
92
- tcp_connect_timeout = '1s'
93
- wait_to_retry_send = '100ms'
94
-
95
- [server.base.groups.io_worker.connect_concurrency_limiter]
96
- max_concurrency = 4
97
-
98
- [server.base.groups.io_worker.ibsocket]
99
- buf_ack_batch = 8
100
- buf_signal_batch = 8
101
- buf_size = 16384
102
- drain_timeout = '5s'
103
- drop_connections = 0
104
- event_ack_batch = 128
105
- max_rd_atomic = 16
106
- max_rdma_wr = 128
107
- max_rdma_wr_per_post = 32
108
- max_sge = 16
109
- min_rnr_timer = 1
110
- record_bytes_per_peer = false
111
- record_latency_per_peer = false
112
- retry_cnt = 7
113
- rnr_retry = 0
114
- send_buf_cnt = 32
115
- sl = 0
116
- start_psn = 0
117
- timeout = 14
118
-
119
- [server.base.groups.io_worker.transport_pool]
120
- max_connections = 1
121
-
122
- [server.base.groups.listener]
123
- domain_socket_index = 1
124
- filter_list = []
125
- listen_port = 8000
126
- listen_queue_depth = 4096
127
- rdma_accept_timeout = '15s'
128
- rdma_listen_ethernet = true
129
- reuse_port = false
130
-
131
- [server.base.groups.processor]
132
- enable_coroutines_pool = true
133
- max_coroutines_num = 256
134
- max_processing_requests_num = 4096
135
- response_compression_level = 1
136
- response_compression_threshold = '128KB'
137
-
138
- [[server.base.groups]]
139
- check_connections_interval = '1min'
140
- connection_expiration_time = '1day'
141
- network_type = 'TCP'
142
- services = [ 'Core' ]
143
- use_independent_thread_pool = true
144
-
145
- [server.base.groups.io_worker]
146
- num_event_loop = 1
147
- rdma_connect_timeout = '5s'
148
- read_write_rdma_in_event_thread = false
149
- read_write_tcp_in_event_thread = false
150
- tcp_connect_timeout = '1s'
151
- wait_to_retry_send = '100ms'
152
-
153
- [server.base.groups.io_worker.connect_concurrency_limiter]
154
- max_concurrency = 4
155
-
156
- [server.base.groups.io_worker.ibsocket]
157
- buf_ack_batch = 8
158
- buf_signal_batch = 8
159
- buf_size = 16384
160
- drain_timeout = '5s'
161
- drop_connections = 0
162
- event_ack_batch = 128
163
- max_rd_atomic = 16
164
- max_rdma_wr = 128
165
- max_rdma_wr_per_post = 32
166
- max_sge = 16
167
- min_rnr_timer = 1
168
- record_bytes_per_peer = false
169
- record_latency_per_peer = false
170
- retry_cnt = 7
171
- rnr_retry = 0
172
- send_buf_cnt = 32
173
- sl = 0
174
- start_psn = 0
175
- timeout = 14
176
-
177
- [server.base.groups.io_worker.transport_pool]
178
- max_connections = 1
179
-
180
- [server.base.groups.listener]
181
- domain_socket_index = 1
182
- filter_list = []
183
- listen_port = 9000
184
- listen_queue_depth = 4096
185
- rdma_accept_timeout = '15s'
186
- rdma_listen_ethernet = true
187
- reuse_port = false
188
-
189
- [server.base.groups.processor]
190
- enable_coroutines_pool = true
191
- max_coroutines_num = 256
192
- max_processing_requests_num = 4096
193
- response_compression_level = 1
194
- response_compression_threshold = '128KB'
195
-
196
- [server.service]
197
- allow_heartbeat_from_unregistered = true
198
- authenticate = false
199
- bootstrapping_length = '2min'
200
- bump_routing_info_version_interval = '5s'
201
- check_status_interval = '10s'
202
- client_session_timeout = '20min'
203
- enable_routinginfo_cache = true
204
- extend_lease_check_release_version = true
205
- extend_lease_interval = '10s'
206
- heartbeat_fail_interval = '1min'
207
- heartbeat_ignore_stale_targets = true
208
- heartbeat_ignore_unknown_targets = false
209
- heartbeat_timestamp_valid_window = '30s'
210
- lease_length = '1min'
211
- new_chain_bootstrap_interval = '2min'
212
- only_accept_client_uuid = false
213
- retry_times_on_txn_errors = -1
214
- send_heartbeat = true
215
- send_heartbeat_interval = '10s'
216
- suspicious_lease_interval = '20s'
217
- target_info_load_interval = '1s'
218
- target_info_persist_batch = 1000
219
- target_info_persist_interval = '1s'
220
- try_adjust_target_order_as_preferred = false
221
- update_chains_interval = '1s'
222
- update_metrics_interval = '1s'
223
- validate_lease_on_write = true
224
-
225
- [server.service.retry_transaction]
226
- max_backoff = '1s'
227
- max_retry_count = 10
228
-
229
- [server.service.user_cache]
230
- buckets = 127
231
- exist_ttl = '5min'
232
- inexist_ttl = '10s'
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
asian_ai/chinese/3FS/configs/mgmtd_main_app.toml DELETED
@@ -1,2 +0,0 @@
1
- allow_empty_node_id = true
2
- node_id = 0
 
 
 
asian_ai/chinese/3FS/configs/mgmtd_main_launcher.toml DELETED
@@ -1,44 +0,0 @@
1
- allow_dev_version = true
2
- cluster_id = ''
3
- use_memkv = false
4
-
5
- [fdb]
6
- casual_read_risky = false
7
- clusterFile = ''
8
- default_backoff = 0
9
- enableMultipleClient = false
10
- externalClientDir = ''
11
- externalClientPath = ''
12
- multipleClientThreadNum = 4
13
- readonly = false
14
- trace_file = ''
15
- trace_format = 'json'
16
-
17
- [ib_devices]
18
- allow_no_usable_devices = false
19
- allow_unknown_zone = true
20
- default_network_zone = 'UNKNOWN'
21
- default_pkey_index = 0
22
- default_roce_pkey_index = 0
23
- default_traffic_class = 0
24
- device_filter = []
25
- fork_safe = true
26
- prefer_ibdevice = true
27
- skip_inactive_ports = true
28
- skip_unusable_device = true
29
- subnets = []
30
-
31
- [kv_engine]
32
- use_memkv = false
33
-
34
- [kv_engine.fdb]
35
- casual_read_risky = false
36
- clusterFile = ''
37
- default_backoff = 0
38
- enableMultipleClient = false
39
- externalClientDir = ''
40
- externalClientPath = ''
41
- multipleClientThreadNum = 4
42
- readonly = false
43
- trace_file = ''
44
- trace_format = 'json'
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
asian_ai/chinese/3FS/configs/monitor_collector_main.toml DELETED
@@ -1,141 +0,0 @@
1
- [common]
2
- cluster_id = ''
3
-
4
- [common.ib_devices]
5
- allow_unknown_zone = true
6
- default_network_zone = 'UNKNOWN'
7
- device_filter = []
8
- subnets = []
9
-
10
- [[common.log.categories]]
11
- categories = [ '.' ]
12
- handlers = [ 'normal', 'err', 'fatal' ]
13
- inherit = true
14
- level = 'INFO'
15
- propagate = 'NONE'
16
-
17
- [[common.log.handlers]]
18
- async = true
19
- file_path = '/var/log/3fs/monitor_collector_main.log'
20
- max_file_size = '100MB'
21
- max_files = 10
22
- name = 'normal'
23
- rotate = true
24
- rotate_on_open = false
25
- start_level = 'NONE'
26
- stream_type = 'STDERR'
27
- writer_type = 'FILE'
28
-
29
- [[common.log.handlers]]
30
- async = false
31
- file_path = '/var/log/3fs/monitor_collector_main-err.log'
32
- max_file_size = '100MB'
33
- max_files = 10
34
- name = 'err'
35
- rotate = true
36
- rotate_on_open = false
37
- start_level = 'ERR'
38
- stream_type = 'STDERR'
39
- writer_type = 'FILE'
40
-
41
- [[common.log.handlers]]
42
- async = false
43
- file_path = '/var/log/3fs/monitor_collector_main-fatal.log'
44
- max_file_size = '100MB'
45
- max_files = 10
46
- name = 'fatal'
47
- rotate = true
48
- rotate_on_open = false
49
- start_level = 'FATAL'
50
- stream_type = 'STDERR'
51
- writer_type = 'STREAM'
52
-
53
- [server.base.independent_thread_pool]
54
- bg_thread_pool_stratetry = 'SHARED_QUEUE'
55
- collect_stats = false
56
- enable_work_stealing = false
57
- io_thread_pool_stratetry = 'SHARED_QUEUE'
58
- num_bg_threads = 2
59
- num_connect_threads = 2
60
- num_io_threads = 2
61
- num_proc_threads = 2
62
- proc_thread_pool_stratetry = 'SHARED_QUEUE'
63
-
64
- [server.base.thread_pool]
65
- bg_thread_pool_stratetry = 'SHARED_QUEUE'
66
- collect_stats = false
67
- enable_work_stealing = false
68
- io_thread_pool_stratetry = 'SHARED_QUEUE'
69
- num_bg_threads = 2
70
- num_connect_threads = 2
71
- num_io_threads = 2
72
- num_proc_threads = 2
73
- proc_thread_pool_stratetry = 'SHARED_QUEUE'
74
-
75
- [[server.base.groups]]
76
- #default_timeout = '1s'
77
- #drop_connections_interval = '1h'
78
- network_type = 'TCP'
79
- services = [ 'MonitorCollector' ]
80
- use_independent_thread_pool = false
81
-
82
- [server.base.groups.io_worker]
83
- num_event_loop = 1
84
- rdma_connect_timeout = '5s'
85
- read_write_rdma_in_event_thread = false
86
- read_write_tcp_in_event_thread = false
87
- tcp_connect_timeout = '1s'
88
- wait_to_retry_send = '100ms'
89
-
90
- [server.base.groups.io_worker.ibsocket]
91
- buf_ack_batch = 8
92
- buf_signal_batch = 8
93
- buf_size = 16384
94
- drop_connections = 0
95
- event_ack_batch = 128
96
- #gid_index = 0
97
- max_rd_atomic = 16
98
- max_rdma_wr = 128
99
- max_rdma_wr_per_post = 32
100
- max_sge = 16
101
- min_rnr_timer = 1
102
- pkey_index = 0
103
- record_bytes_per_peer = false
104
- record_latency_per_peer = false
105
- retry_cnt = 7
106
- rnr_retry = 0
107
- send_buf_cnt = 32
108
- sl = 0
109
- start_psn = 0
110
- timeout = 14
111
- traffic_class = 0
112
-
113
- [server.base.groups.io_worker.transport_pool]
114
- max_connections = 1
115
-
116
- [server.base.groups.listener]
117
- filter_list = []
118
- listen_port = 10000
119
- listen_queue_depth = 4096
120
- rdma_listen_ethernet = true
121
- reuse_port = false
122
-
123
- [server.base.groups.processor]
124
- enable_coroutines_pool = true
125
- max_coroutines_num = 256
126
- max_processing_requests_num = 4096
127
-
128
- [server.monitor_collector]
129
- batch_commit_size = 4096
130
- conn_threads = 32
131
- queue_capacity = 204800
132
-
133
- [server.monitor_collector.reporter]
134
- type = 'clickhouse'
135
-
136
- [server.monitor_collector.reporter.clickhouse]
137
- db = ''
138
- host = ''
139
- passwd = ''
140
- port = ''
141
- user = ''
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
asian_ai/chinese/3FS/configs/storage_main.toml DELETED
@@ -1,510 +0,0 @@
1
- [[common.log.categories]]
2
- categories = [ '.' ]
3
- handlers = [ 'normal', 'err', 'fatal' ]
4
- inherit = true
5
- level = 'INFO'
6
- propagate = 'NONE'
7
-
8
- [[common.log.handlers]]
9
- async = true
10
- file_path = '/var/log/3fs/storage_main.log'
11
- max_file_size = '100MB'
12
- max_files = 10
13
- name = 'normal'
14
- rotate = true
15
- rotate_on_open = false
16
- start_level = 'NONE'
17
- stream_type = 'STDERR'
18
- writer_type = 'FILE'
19
-
20
- [[common.log.handlers]]
21
- async = false
22
- file_path = '/var/log/3fs/storage_main-err.log'
23
- max_file_size = '100MB'
24
- max_files = 10
25
- name = 'err'
26
- rotate = true
27
- rotate_on_open = false
28
- start_level = 'ERR'
29
- stream_type = 'STDERR'
30
- writer_type = 'FILE'
31
-
32
- [[common.log.handlers]]
33
- async = false
34
- file_path = '/var/log/3fs/storage_main-fatal.log'
35
- max_file_size = '100MB'
36
- max_files = 10
37
- name = 'fatal'
38
- rotate = true
39
- rotate_on_open = false
40
- start_level = 'FATAL'
41
- stream_type = 'STDERR'
42
- writer_type = 'STREAM'
43
-
44
- [common.memory]
45
- prof_active = false
46
- prof_prefix = ''
47
-
48
- [common.monitor]
49
- collect_period = '1s'
50
- num_collectors = 1
51
-
52
- [[common.monitor.reporters]]
53
- type = 'monitor_collector'
54
-
55
- [common.monitor.reporters.monitor_collector]
56
- remote_ip = ""
57
-
58
- [server]
59
- speed_up_quit = true
60
- use_coroutines_pool_read = true
61
- use_coroutines_pool_update = true
62
-
63
- [server.aio_read_worker]
64
- enable_io_uring = true
65
- inflight_control_offset = 128
66
- ioengine = 'libaio'
67
- max_events = 512
68
- min_complete = 128
69
- num_threads = 32
70
- queue_size = 4096
71
- wait_all_inflight = false
72
-
73
- [server.allocate_worker]
74
- max_remain_groups = 8
75
- max_remain_ultra_groups = 4
76
- max_reserved_chunks = '1GB'
77
- min_remain_groups = 4
78
- min_remain_ultra_groups = 0
79
-
80
- [server.base.independent_thread_pool]
81
- bg_thread_pool_stratetry = 'SHARED_QUEUE'
82
- collect_stats = false
83
- enable_work_stealing = false
84
- io_thread_pool_stratetry = 'SHARED_QUEUE'
85
- num_bg_threads = 2
86
- num_connect_threads = 2
87
- num_io_threads = 2
88
- num_proc_threads = 2
89
- proc_thread_pool_stratetry = 'SHARED_QUEUE'
90
-
91
- [server.base.thread_pool]
92
- bg_thread_pool_stratetry = 'SHARED_QUEUE'
93
- collect_stats = false
94
- enable_work_stealing = false
95
- io_thread_pool_stratetry = 'SHARED_QUEUE'
96
- num_bg_threads = 2
97
- num_connect_threads = 2
98
- num_io_threads = 32
99
- num_proc_threads = 32
100
- proc_thread_pool_stratetry = 'SHARED_QUEUE'
101
-
102
- [[server.base.groups]]
103
- check_connections_interval = '1min'
104
- connection_expiration_time = '1day'
105
- network_type = 'RDMA'
106
- services = [ 'StorageSerde' ]
107
- use_independent_thread_pool = false
108
-
109
- [server.base.groups.io_worker]
110
- num_event_loop = 1
111
- rdma_connect_timeout = '5s'
112
- read_write_rdma_in_event_thread = false
113
- read_write_tcp_in_event_thread = false
114
- tcp_connect_timeout = '1s'
115
- wait_to_retry_send = '100ms'
116
-
117
- [server.base.groups.io_worker.connect_concurrency_limiter]
118
- max_concurrency = 4
119
-
120
- [server.base.groups.io_worker.ibsocket]
121
- buf_ack_batch = 8
122
- buf_signal_batch = 8
123
- buf_size = 16384
124
- drain_timeout = '5s'
125
- drop_connections = 0
126
- event_ack_batch = 128
127
- max_rd_atomic = 16
128
- max_rdma_wr = 128
129
- max_rdma_wr_per_post = 32
130
- max_sge = 16
131
- min_rnr_timer = 1
132
- record_bytes_per_peer = false
133
- record_latency_per_peer = false
134
- retry_cnt = 7
135
- rnr_retry = 0
136
- send_buf_cnt = 32
137
- sl = 0
138
- start_psn = 0
139
- timeout = 14
140
-
141
- [server.base.groups.io_worker.transport_pool]
142
- max_connections = 1
143
-
144
- [server.base.groups.listener]
145
- custom_tcp_nic_prefix = ''
146
- domain_socket_index = 1
147
- filter_list = []
148
- listen_port = 8000
149
- listen_queue_depth = 4096
150
- rdma_accept_timeout = '15s'
151
- rdma_listen_ethernet = true
152
- reuse_port = false
153
-
154
- [server.base.groups.processor]
155
- enable_coroutines_pool = true
156
- max_coroutines_num = 256
157
- max_processing_requests_num = 4096
158
- response_compression_level = 1
159
- response_compression_threshold = '128KB'
160
-
161
- [[server.base.groups]]
162
- check_connections_interval = '1min'
163
- connection_expiration_time = '1day'
164
- network_type = 'TCP'
165
- services = [ 'Core' ]
166
- use_independent_thread_pool = true
167
-
168
- [server.base.groups.io_worker]
169
- num_event_loop = 1
170
- rdma_connect_timeout = '5s'
171
- read_write_rdma_in_event_thread = false
172
- read_write_tcp_in_event_thread = false
173
- tcp_connect_timeout = '1s'
174
- wait_to_retry_send = '100ms'
175
-
176
- [server.base.groups.io_worker.connect_concurrency_limiter]
177
- max_concurrency = 4
178
-
179
- [server.base.groups.io_worker.ibsocket]
180
- buf_ack_batch = 8
181
- buf_signal_batch = 8
182
- buf_size = 16384
183
- drain_timeout = '5s'
184
- drop_connections = 0
185
- event_ack_batch = 128
186
- max_rd_atomic = 16
187
- max_rdma_wr = 128
188
- max_rdma_wr_per_post = 32
189
- max_sge = 16
190
- min_rnr_timer = 1
191
- record_bytes_per_peer = false
192
- record_latency_per_peer = false
193
- retry_cnt = 7
194
- rnr_retry = 0
195
- send_buf_cnt = 32
196
- sl = 0
197
- start_psn = 0
198
- timeout = 14
199
-
200
- [server.base.groups.io_worker.transport_pool]
201
- max_connections = 1
202
-
203
- [server.base.groups.listener]
204
- domain_socket_index = 1
205
- filter_list = []
206
- listen_port = 9000
207
- listen_queue_depth = 4096
208
- rdma_accept_timeout = '15s'
209
- rdma_listen_ethernet = true
210
- reuse_port = false
211
-
212
- [server.base.groups.processor]
213
- enable_coroutines_pool = true
214
- max_coroutines_num = 256
215
- max_processing_requests_num = 4096
216
- response_compression_level = 1
217
- response_compression_threshold = '128KB'
218
-
219
- [server.buffer_pool]
220
- big_rdmabuf_count = 64
221
- big_rdmabuf_size = '64MB'
222
- rdmabuf_count = 1024
223
- rdmabuf_size = '4MB'
224
-
225
- [server.check_worker]
226
- disk_low_space_threshold = 0.95999999999999996
227
- disk_reject_create_chunk_threshold = 0.97999999999999998
228
- emergency_recycling_ratio = 0.94999999999999996
229
- update_target_size_interval = '10s'
230
-
231
- [server.client]
232
- default_compression_level = 0
233
- default_compression_threshold = '128KB'
234
- default_log_long_running_threshold = '0ns'
235
- default_report_metrics = false
236
- default_send_retry_times = 1
237
- default_timeout = '1s'
238
- enable_rdma_control = false
239
- force_use_tcp = false
240
-
241
- [server.client.io_worker]
242
- num_event_loop = 1
243
- rdma_connect_timeout = '5s'
244
- read_write_rdma_in_event_thread = false
245
- read_write_tcp_in_event_thread = false
246
- tcp_connect_timeout = '1s'
247
- wait_to_retry_send = '100ms'
248
-
249
- [server.client.io_worker.connect_concurrency_limiter]
250
- max_concurrency = 4
251
-
252
- [server.client.io_worker.ibsocket]
253
- buf_ack_batch = 8
254
- buf_signal_batch = 8
255
- buf_size = 16384
256
- drain_timeout = '5s'
257
- drop_connections = 0
258
- event_ack_batch = 128
259
- max_rd_atomic = 16
260
- max_rdma_wr = 128
261
- max_rdma_wr_per_post = 32
262
- max_sge = 16
263
- min_rnr_timer = 1
264
- record_bytes_per_peer = false
265
- record_latency_per_peer = false
266
- retry_cnt = 7
267
- rnr_retry = 0
268
- send_buf_cnt = 32
269
- sl = 0
270
- start_psn = 0
271
- timeout = 14
272
-
273
- [server.client.io_worker.transport_pool]
274
- max_connections = 1
275
-
276
- [server.client.processor]
277
- enable_coroutines_pool = true
278
- max_coroutines_num = 256
279
- max_processing_requests_num = 4096
280
- response_compression_level = 1
281
- response_compression_threshold = '128KB'
282
-
283
- [server.client.rdma_control]
284
- max_concurrent_transmission = 64
285
-
286
- [server.client.thread_pool]
287
- bg_thread_pool_stratetry = 'SHARED_QUEUE'
288
- collect_stats = false
289
- enable_work_stealing = false
290
- io_thread_pool_stratetry = 'SHARED_QUEUE'
291
- num_bg_threads = 2
292
- num_connect_threads = 2
293
- num_io_threads = 2
294
- num_proc_threads = 2
295
- proc_thread_pool_stratetry = 'SHARED_QUEUE'
296
-
297
- [server.coroutines_pool_default]
298
- coroutines_num = 64
299
- queue_size = 1024
300
- threads_num = 8
301
-
302
- [server.coroutines_pool_read]
303
- coroutines_num = 64
304
- queue_size = 1024
305
- threads_num = 8
306
-
307
- [server.coroutines_pool_sync]
308
- coroutines_num = 64
309
- queue_size = 1024
310
- threads_num = 8
311
-
312
- [server.coroutines_pool_update]
313
- coroutines_num = 64
314
- queue_size = 1024
315
- threads_num = 8
316
-
317
- [server.dump_worker]
318
- dump_interval = '1day'
319
- dump_root_path = ''
320
- high_cpu_usage_threshold = 100
321
-
322
- [server.forward_client]
323
- default_compression_level = 0
324
- default_compression_threshold = '128KB'
325
- default_log_long_running_threshold = '0ns'
326
- default_report_metrics = false
327
- default_send_retry_times = 1
328
- default_timeout = '1s'
329
- enable_rdma_control = false
330
- force_use_tcp = false
331
-
332
- [server.forward_client.io_worker]
333
- num_event_loop = 1
334
- rdma_connect_timeout = '5s'
335
- read_write_rdma_in_event_thread = false
336
- read_write_tcp_in_event_thread = false
337
- tcp_connect_timeout = '1s'
338
- wait_to_retry_send = '100ms'
339
-
340
- [server.forward_client.io_worker.connect_concurrency_limiter]
341
- max_concurrency = 4
342
-
343
- [server.forward_client.io_worker.ibsocket]
344
- buf_ack_batch = 8
345
- buf_signal_batch = 8
346
- buf_size = 16384
347
- drain_timeout = '5s'
348
- drop_connections = 0
349
- event_ack_batch = 128
350
- max_rd_atomic = 16
351
- max_rdma_wr = 128
352
- max_rdma_wr_per_post = 32
353
- max_sge = 16
354
- min_rnr_timer = 1
355
- record_bytes_per_peer = false
356
- record_latency_per_peer = false
357
- retry_cnt = 7
358
- rnr_retry = 0
359
- send_buf_cnt = 32
360
- sl = 0
361
- start_psn = 0
362
- timeout = 14
363
-
364
- [server.forward_client.io_worker.transport_pool]
365
- max_connections = 1
366
-
367
- [server.forward_client.processor]
368
- enable_coroutines_pool = true
369
- max_coroutines_num = 256
370
- max_processing_requests_num = 4096
371
- response_compression_level = 1
372
- response_compression_threshold = '128KB'
373
-
374
- [server.forward_client.rdma_control]
375
- max_concurrent_transmission = 64
376
-
377
- [server.forward_client.thread_pool]
378
- bg_thread_pool_stratetry = 'SHARED_QUEUE'
379
- collect_stats = false
380
- enable_work_stealing = false
381
- io_thread_pool_stratetry = 'SHARED_QUEUE'
382
- num_bg_threads = 2
383
- num_connect_threads = 2
384
- num_io_threads = 2
385
- num_proc_threads = 2
386
- proc_thread_pool_stratetry = 'SHARED_QUEUE'
387
-
388
- [server.mgmtd]
389
- accept_incomplete_routing_info_during_mgmtd_bootstrapping = true
390
- auto_extend_client_session_interval = '10s'
391
- auto_heartbeat_interval = '10s'
392
- auto_refresh_interval = '10s'
393
- enable_auto_extend_client_session = false
394
- enable_auto_heartbeat = true
395
- enable_auto_refresh = true
396
- mgmtd_server_addresses = []
397
- work_queue_size = 100
398
-
399
- [server.reliable_forwarding]
400
- max_inline_forward_bytes = '0'
401
- retry_first_wait = '100ms'
402
- retry_max_wait = '1s'
403
- retry_total_time = '1min'
404
-
405
- [server.reliable_update]
406
- clean_up_expired_clients = false
407
- expired_clients_timeout = '1h'
408
-
409
- [server.storage]
410
- apply_transmission_before_getting_semaphore = true
411
- batch_read_ignore_chain_version = false
412
- batch_read_job_split_size = 1024
413
- max_concurrent_rdma_reads = 256
414
- max_concurrent_rdma_writes = 256
415
- max_num_results_per_query = 100
416
- post_buffer_per_bytes = '64KB'
417
- rdma_transmission_req_timeout = '0ns'
418
- read_only = false
419
-
420
- [server.storage.event_trace_log]
421
- dump_interval = '30s'
422
- enabled = true
423
- max_num_writers = 1
424
- max_row_group_length = 100000
425
- trace_file_dir = '.'
426
-
427
- [server.storage.write_worker]
428
- bg_num_threads = 8
429
- num_threads = 32
430
- queue_size = 4096
431
-
432
- [server.sync_meta_kv_worker]
433
- sync_meta_kv_interval = '1min'
434
-
435
- [server.sync_worker]
436
- batch_size = 16
437
- full_sync_chains = []
438
- full_sync_level = 'NONE'
439
- num_channels = 1024
440
- num_threads = 16
441
- sync_start_timeout = '10s'
442
-
443
- [server.sync_worker.batch_concurrency_limiter]
444
- max_concurrency = 64
445
-
446
- [server.sync_worker.pool]
447
- coroutines_num = 64
448
- enable_work_stealing = false
449
- queue_size = 1024
450
-
451
- [server.targets]
452
- allow_disk_without_uuid = false
453
- collect_all_fds = true
454
- create_engine_path = true
455
- space_info_cache_timeout = '5s'
456
- target_num_per_path = 0
457
- target_paths = []
458
-
459
- [server.targets.storage_target]
460
- force_persist = true
461
- kv_path = ''
462
- migrate_kv_store = false
463
- mutex_num = 257
464
- point_query_strategy = 'NONE'
465
-
466
- [server.targets.storage_target.file_store]
467
- preopen_chunk_size_list = []
468
-
469
- [server.targets.storage_target.kv_store]
470
- create_if_missing = false
471
- integrate_leveldb_log = false
472
- leveldb_block_cache_size = '8GB'
473
- leveldb_iterator_fill_cache = true
474
- leveldb_shared_block_cache = true
475
- leveldb_sst_file_size = '16MB'
476
- leveldb_write_buffer_size = '16MB'
477
- rocksdb_avoid_flush_during_recovery = false
478
- rocksdb_avoid_flush_during_shutdown = false
479
- rocksdb_avoid_unnecessary_blocking_io = false
480
- rocksdb_block_cache_size = '8GB'
481
- rocksdb_block_size = '4KB'
482
- rocksdb_bloom_filter_bits_per_key = 10
483
- rocksdb_compression = 'kNoCompression'
484
- rocksdb_enable_bloom_filter = true
485
- rocksdb_enable_pipelined_write = false
486
- rocksdb_enable_prefix_transform = true
487
- rocksdb_keep_log_file_num = 10
488
- rocksdb_level0_file_num_compaction_trigger = 4
489
- rocksdb_lowest_used_cache_tier = 'kNonVolatileBlockTier'
490
- rocksdb_max_manifest_file_size = '64MB'
491
- rocksdb_num_levels = 7
492
- rocksdb_prepopulate_block_cache = 'kDisable'
493
- rocksdb_readahead_size = '2MB'
494
- rocksdb_shared_block_cache = true
495
- rocksdb_stats_dump_period = '2min'
496
- rocksdb_target_file_size_base = '64MB'
497
- rocksdb_target_file_size_multiplier = 1
498
- rocksdb_threads_num = 8
499
- rocksdb_unordered_write = false
500
- rocksdb_wal_recovery_mode = 'kTolerateCorruptedTailRecords'
501
- rocksdb_write_buffer_size = '16MB'
502
- sync_when_write = true
503
- type = 'LevelDB'
504
-
505
- [server.targets.storage_target.meta_store]
506
- allocate_size = '256MB'
507
- punch_hole_batch_size = 16
508
- recycle_batch_size = 256
509
- removed_chunk_expiration_time = '3day'
510
- removed_chunk_force_recycled_time = '1h'
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
asian_ai/chinese/3FS/configs/storage_main_app.toml DELETED
@@ -1,2 +0,0 @@
1
- allow_empty_node_id = true
2
- node_id = 0