Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .azure/pipelines/azure-pipelines-nightly.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ schedules:
- main
always: true
variables:
solution: 'Garnet.sln'
solution: 'Garnet.slnx'
RunAzureTests: 'yes'

jobs:
Expand Down
2 changes: 1 addition & 1 deletion .azure/pipelines/azure-pipelines.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
variables:
solution: 'Garnet.sln'
solution: 'Garnet.slnx'
RunAzureTests: 'no'

jobs:
Expand Down
1 change: 1 addition & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@

# Declare files that will always have CRLF line endings on checkout.
*.sln text eol=crlf
*.slnx text eol=crlf

# Denote all files that are truly binary and should not be modified.
*.png binary
Expand Down
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ body:
label: IDE
description: Which IDE versions did you see the issue on?
placeholder: |
Visual Studio 2022-preview
Visual Studio 2026
- type: textarea
attributes:
label: OS version
Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -54,9 +54,9 @@ jobs:
- name: Setup .NET
uses: actions/setup-dotnet@v4
- name: Install dependencies
run: dotnet restore Garnet.sln
run: dotnet restore Garnet.slnx
- name: Check style format
run: dotnet format Garnet.sln --no-restore --verify-no-changes --verbosity diagnostic
run: dotnet format Garnet.slnx --no-restore --verify-no-changes --verbosity diagnostic

format-tsavorite:
name: Format Tsavorite
Expand All @@ -69,9 +69,9 @@ jobs:
- name: Setup .NET
uses: actions/setup-dotnet@v4
- name: Install dependencies
run: dotnet restore libs/storage/Tsavorite/cs/Tsavorite.sln
run: dotnet restore libs/storage/Tsavorite/cs/Tsavorite.slnx
- name: Check style format
run: dotnet format libs/storage/Tsavorite/cs/Tsavorite.sln --no-restore --verify-no-changes --verbosity diagnostic
run: dotnet format libs/storage/Tsavorite/cs/Tsavorite.slnx --no-restore --verify-no-changes --verbosity diagnostic

# Job to build and test Garnet code
build-test-garnet:
Expand Down
413 changes: 0 additions & 413 deletions Garnet.sln

This file was deleted.

85 changes: 85 additions & 0 deletions Garnet.slnx
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
<Solution>
<Folder Name="/.azure/pipelines/">
<File Path=".azure/pipelines/azure-pipelines-compliance-policheck.yml" />
<File Path=".azure/pipelines/azure-pipelines-compliance.yml" />
<File Path=".azure/pipelines/azure-pipelines-external-release.yml" />
<File Path=".azure/pipelines/azure-pipelines-internal-release.yml" />
<File Path=".azure/pipelines/azure-pipelines-mirror.yml" />
<File Path=".azure/pipelines/azure-pipelines-nightly.yml" />
<File Path=".azure/pipelines/azure-pipelines-performance.yml" />
<File Path=".azure/pipelines/azure-pipelines.yml" />
<File Path=".azure/pipelines/CodeCoverage.runsettings" />
<File Path=".azure/pipelines/credscan-exclusion.json" />
<File Path=".azure/pipelines/policheck-exclusion.xml" />
</Folder>
<Folder Name="/benchmark/">
<Project Path="benchmark/BDN.benchmark/BDN.benchmark.csproj" />
<Project Path="benchmark/Device.benchmark/Device.benchmark.csproj" />
<Project Path="benchmark/Resp.benchmark/Resp.benchmark.csproj" />
</Folder>
<Folder Name="/hosting/Windows/">
<Project Path="hosting/Windows/Garnet.worker/Garnet.worker.csproj" />
</Folder>
<Folder Name="/libs/">
<Project Path="libs/client/Garnet.client.csproj" />
<Project Path="libs/cluster/Garnet.cluster.csproj" />
<Project Path="libs/common/Garnet.common.csproj" />
<Project Path="libs/host/Garnet.host.csproj" />
<Project Path="libs/resources/Garnet.resources.csproj" />
<Project Path="libs/server/Garnet.server.csproj" />
</Folder>
<Folder Name="/libs/Tsavorite/">
<Project Path="libs/storage/Tsavorite/cs/src/core/Tsavorite.core.csproj">
<Platform Solution="*|x64" Project="x64" />
</Project>
<Project Path="libs/storage/Tsavorite/cs/src/devices/AzureStorageDevice/Tsavorite.devices.AzureStorageDevice.csproj">
<Platform Solution="*|x64" Project="x64" />
</Project>
</Folder>
<Folder Name="/main/">
<Project Path="main/GarnetServer/GarnetServer.csproj" />
</Folder>
<Folder Name="/metrics/">
<Project Path="metrics/HdrHistogram/HdrHistogram.csproj" />
</Folder>
<Folder Name="/modules/">
<Project Path="modules/GarnetJSON/GarnetJSON.csproj" />
</Folder>
<Folder Name="/playground/">
<Project Path="modules/NoOpModule/NoOpModule.csproj" />
<Project Path="playground/Bitmap/Bitmap.csproj" />
<Project Path="playground/ClusterStress/ClusterStress.csproj" />
<Project Path="playground/CommandInfoUpdater/CommandInfoUpdater.csproj" />
<Project Path="playground/Embedded.perftest/Embedded.perftest.csproj" />
<Project Path="playground/GarnetClientStress/GarnetClientStress.csproj" />
<Project Path="playground/MigrateBench/MigrateBench.csproj" />
<Project Path="playground/SampleModule/SampleModule.csproj" />
<Project Path="playground/TstRunner/TstRunner.csproj" />
</Folder>
<Folder Name="/samples/">
<Project Path="samples/ETag/ETag.csproj" />
<Project Path="samples/GarnetClientSample/GarnetClientSample.csproj" />
<Project Path="samples/MetricsMonitor/MetricsMonitor.csproj" />
</Folder>
<Folder Name="/Solution Items/">
<File Path=".azure/pipelines/extract_version.ps1" />
<File Path=".editorconfig" />
<File Path=".github/workflows/ci.yml" />
<File Path=".github/workflows/docker.yml" />
<File Path="Directory.Build.props" />
<File Path="Directory.Packages.props" />
<File Path="docker-compose.yml" />
<File Path="Dockerfile" />
<File Path="Dockerfile.alpine" />
<File Path="Dockerfile.cbl-mariner" />
<File Path="Dockerfile.chiseled" />
<File Path="Dockerfile.nanoserver" />
<File Path="Dockerfile.ubuntu" />
<File Path="Version.props" />
</Folder>
<Folder Name="/test/">
<Project Path="test/Garnet.fuzz/Garnet.fuzz.csproj" />
<Project Path="test/Garnet.test.cluster/Garnet.test.cluster.csproj" />
<Project Path="test/Garnet.test/Garnet.test.csproj" />
</Folder>
</Solution>
2 changes: 1 addition & 1 deletion benchmark/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ You can list all available benchmarks using `--list flat` or `--list tree`, e.g.
dotnet run -c Release -f net8.0 --list flat
```

To run specific benchmarks, you can use `--filter`. For example, to run all RESP-protocol write benchmarks using the default configuration, which will run the benchmarks using both .NET 6 and .NET 8 runtimes (with the dynamic PGO disabled):
To run specific benchmarks, you can use `--filter`. For example, to run all RESP-protocol write benchmarks using the default configuration, which will run the benchmarks using all .NET target runtimes (with the dynamic PGO disabled):

```
dotnet run -c Release -f net8.0 --filter *RespIntegerWriteBenchmarks*
Expand Down
2 changes: 1 addition & 1 deletion libs/storage/Tsavorite/cc/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ cmake_minimum_required (VERSION 3.2.2)

set(CMAKE_CXX_STANDARD 14)

project(Garnet)
project(Tsavorite)

OPTION(USE_URING "Enable io_uring based IO handler" OFF)

Expand Down
6 changes: 3 additions & 3 deletions libs/storage/Tsavorite/cc/README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Garnet Native Device (C++)
# Tsavorite Native Device (C++)

We use CMake to build the native device (optionally used on Linux). To build, create
one or more build directories and use CMake to set up build scripts for your target OS.
Expand All @@ -22,8 +22,8 @@ cmake .. -G "Visual Studio 17 2022"
```

That will create build scripts inside your new "build" directory, including
a "Garnet.sln" file that you can use inside Visual Studio. CMake will add several
build profiles to Garnet.sln, including Debug/x64 and Release/x64.
a `Tsavorite.sln` file that you can use inside Visual Studio. CMake will add several
build profiles to `Tsavorite.sln`, including Debug/x64 and Release/x64.

### Building on Linux

Expand Down
120 changes: 0 additions & 120 deletions libs/storage/Tsavorite/cs/Tsavorite.sln

This file was deleted.

15 changes: 15 additions & 0 deletions libs/storage/Tsavorite/cs/Tsavorite.slnx
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
<Solution>
<Folder Name="/benchmark/">
<Project Path="benchmark/BDN-Tsavorite.Benchmark/BDN-Tsavorite.benchmark.csproj" />
<Project Path="benchmark/YCSB.benchmark/YCSB.benchmark.csproj" />
</Folder>
<Folder Name="/src/core/">
<Project Path="src/core/Tsavorite.core.csproj" />
</Folder>
<Folder Name="/src/devices/">
<Project Path="src/devices/AzureStorageDevice/Tsavorite.devices.AzureStorageDevice.csproj" />
</Folder>
<Folder Name="/test/">
<Project Path="test/Tsavorite.test.csproj" />
</Folder>
</Solution>
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
directory to traverse to Tsavorite.benchmark.exe. Name these folders something that indicates their role, such as 'baseline', 'main' / 'branch', etc.
-or-
B. Supply branch names to be built: In the ExeDirs argument, pass the names of all branches you want to run. For each branch name, this script will clone that branch into
a directory named as that branch, build Tsavorite.sln for Release, and run the Tsavorite.benchmark.exe from its built location.
a directory named as that branch, build Tsavorite.slnx for Release, and run the Tsavorite.benchmark.exe from its built location.
3. Copy this script and, if you will want to compare runs on the perf machine, compare_runs.ps1 to the perf folder.
4. In a remote desktop on the perf machine, change to your folder, and run this file with those directory names. See .EXAMPLE for details.

Expand Down Expand Up @@ -110,7 +110,7 @@ if ($CloneAndBuild) {
git clone https://github.com/microsoft/Garnet.git $branch
cd $branch
git checkout $branch
dotnet build libs\storage\Tsavorite\cs\Tsavorite.sln -c Release
dotnet build libs\storage\Tsavorite\cs\Tsavorite.slnx -c Release
cd ..
}
} else {
Expand Down
2 changes: 1 addition & 1 deletion test/BDNPerfTests/BDN_Benchmark_Config.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"_comment": "NOTE: If adding a new BDN perf test to this file, you will need to add the name to the test: line in ci-bdnbenchmark.yml (~line 45). This ensures all the tests are not ran sequentially when ran as github action.",
"_comment2": "NOTE: The BDN Perf name in the ci-bdnbenchmark.yml file test: line should NOT have the BDN.benchmark prefix and the .* ending. It needs to be this way for the reporting part of the BDN Charts.",
"_comment3": "NOTE: The expected values are the Allocated results from BDN tests. The values listed here are used for Windows / Linux and Net 8.0 and Net 9.0. In the case where one configuration is higher, set that higher value here.",
"_comment3": "NOTE: The expected values are the Allocated results from BDN tests. The values listed here are used for Windows / Linux and .NET 8 and 9. In the case where one configuration is higher, set that higher value here.",
"_comment4": "NOTE: If the expected values are not highly deterministic, it is advisable to avoid failing the test when these values are out of compliance. To prevent false failures, prepend WARN-ON-FAIL_ instead of expected_ to each expected value. This ensures the values are checked and will only generate warnings without causing a pipeline failure. The values will still be included in the charts, even if they are marked as warnings.",

"BDN.benchmark.Operations.BasicOperations.*": {
Expand Down
16 changes: 8 additions & 8 deletions website/docs/dev/onboarding.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,12 @@ For an introduction to Garnet and its capabilities, you can start with [Welcome

- [RESP specification](https://redis.io/docs/reference/protocol-spec/)
- [Redis data types](https://redis.io/docs/data-types/)
- [FASTER](https://microsoft.github.io/FASTER/docs/fasterkv-basics/), which we forked for use in Garnet
- [FASTER](https://microsoft.github.io/FASTER/docs/fasterkv-basics/), which we forked for use in Garnet as [Tsavorite](tsavorite/intro.md)

### Tools

- Visual Studio 2022 (Preview version recommended)
- .NET 8.x
- Visual Studio 2026 (Preview version recommended)
- .NET 10 SDK
- Git
- Azure Windows VM
- Azure Linux VM
Expand All @@ -44,7 +44,7 @@ After cloning the repository you can either run the unit tests or run the server
2. Run the tests suite

```bash
dotnet test -c Release -l "console;verbosity=detailed"
dotnet test -c Release -f net9.0 -l "console;verbosity=detailed"
```

3. Run the server
Expand All @@ -53,7 +53,7 @@ Using a size memory of 4 GB and index size of 64 MB:

```bash
cd <root>/main/GarnetServer/
dotnet run -c Debug -f net8.0 -- --logger-level Trace -m 4g -i 64m
dotnet run -c Debug -f net9.0 -- --logger-level Trace -m 4g -i 64m
```

4. Use the Memurai client in Windows to send commands to Garnet. A guide about how to install Memurai on Windows can be found [here](https://docs.memurai.com/en/installation.html).
Expand Down Expand Up @@ -165,7 +165,7 @@ public bool DbScan(ArgSlice patternB, bool allKeys, long cursor, out long storeC

* As a good practice, follow the <b>camel case C# naming convention.</b>

## Structure of the Garnet.sln Visual Studio Solution File
## Garnet project structure

* Refer to the Code Structure page for details [here](../dev/code-structure.md).

Expand All @@ -179,10 +179,10 @@ public bool DbScan(ArgSlice patternB, bool allKeys, long cursor, out long storeC

## Test

As a sanity check, you can run the Garnet test suite. The command to run tests in Release mode for .NET 8 is shown below (make sure you are in the root folder of the repo).
As a sanity check, you can run the Garnet test suite. The command to run tests in Release mode for .NET 9 is shown below (make sure you are in the root folder of the repo).

``` bash
dotnet test -c Release -f net8.0 -l "console;verbosity=detailed"
dotnet test -c Release -f net9.0 -l "console;verbosity=detailed"
```

Note that Tsavorite has its own solution file and test suite in the folder `<root>`/Garnet/libs/storage/Tsavorite.
Expand Down
Loading
Loading