Skip to content

Commit e9fb8c9

Browse files
committed
Fix: Remove latency graphs and udpate readme
1 parent a7335d5 commit e9fb8c9

6 files changed

+18
-14
lines changed

content/en/docs/monolake/Overview/_index.md

+18-14
Original file line numberDiff line numberDiff line change
@@ -7,38 +7,42 @@ keywords: ["Proxy", "Rust", "io-uring"]
77

88
## Monolake
99

10-
Monolake is an open-source framework for developing high-performance network services like proxies and gateways. It is built from the ground up as a blank slate design, starting with a custom async runtime called [Monoio](https://docs.rs/crate/monoio/latest) that has first-class support for the io_uring Linux kernel feature.
10+
Monolake is a framework for developing high-performance network services like proxies and gateways. It is built from the ground up as a blank slate design, starting with a custom async runtime called [Monoio](https://docs.rs/crate/monoio/latest) that has first-class support for the io_uring Linux kernel feature.
1111

1212
While the most widely used Rust async runtime is [Tokio](https://docs.rs/tokio/latest/tokio/), which is an excellent and high-performance epoll/kqueue-based runtime, Monolake takes a different approach. The monoio runtime developed by Bytedance is designed with a thread-per-core model in mind, allowing Monolake to extract maximum performance from io_uring's highly efficient asynchronous I/O operations.
1313

1414
By building Monolake on this novel runtime foundation, the team was able to incorporate new first-class support for io_uring throughout the ecosystem. This includes io_uring-specific IO traits and a unique service architecture that differs from the popular Tower implementation. Monolake also includes io_uring-optimized implementations for protocols like Thrift and HTTP.
1515

16-
The Monolake team has used this framework to build a variety of high-performance network components, including:
17-
- HTTP and Thrift proxies
18-
- Application gateways (HTTP-to-Thrift)
19-
- gRPC proxies
16+
The Monolake framework has been used to build various high-performance proxies and gateways, and it is actively deployed in production at ByteDance. Its use cases are wide-ranging and include:
2017

21-
By focusing on cutting-edge Rust and io_uring, Monolake aims to provide developers with a powerful toolkit for building the next generation of high-performance network services.
18+
- Application Gateways: For protocol conversion, such as HTTP to Thrift
19+
- Security Gateways: Providing pseudonymization for gRPC and Thrift RPCs
2220

2321
## Monolake Proxy
2422

2523
[Monolake Proxy](https://github.com/cloudwego/monolake/tree/main/monolake) is a reference implementation that leverages the various components within the Monolake framework to build a high-performance HTTP and Thrift proxy. This project serves as a showcase for the unique features and capabilities of the Monolake ecosystem. By utilizing the efficient networking capabilities of the monoio-transports crate, the modular service composition of service-async, and the type-safe context management provided by certain-map, Monolake Proxy demonstrates the practical application of the Monolake framework. Additionally, this reference implementation allows for the collection of benchmarks, enabling comparisons against other popular proxy solutions like Nginx and Envoy.
2624

2725
## Performance
2826

27+
### Test environment
28+
29+
AWS instace: c6a.8xlarge
30+
c6a.8xlarge
31+
CPU: AMD EPYC 7R13 Processo, 16 cores, 32 threads
32+
Memory: 64GB
33+
OS: 6.1.94-99.176.amzn2023.x86_64 AWS Linux
34+
Nginx: nginx/1.24.0
35+
rustc: rustc 1.82.0-nightly
36+
2937
#### Request Per Second (RPS) vs. Body Size
30-
| RPS | TP99 |
38+
| HTTPS | HTTP |
3139
| :------------------------------------------------- | :-------------------------------------------------: |
32-
| ![image](/img/docs/https_req_per_sec_vs_body_size.png) | ![image](/img/docs/https_tp99_latency_vs_body_size.png) |
33-
| |
34-
| ![image](/img/docs/http_req_per_sec_vs_body_size.png) | ![image](/img/docs/http_tp99_latency_vs_body_size.png) |
40+
| ![image](/img/docs/https_req_per_sec_vs_body_size.png) | ![image](/img/docs/http_req_per_sec_vs_body_size.png) |
3541

3642
### Concurrency performance
37-
| RPS | TP99 |
43+
| HTTPS | HTTP |
3844
| :------------------------------------------------- | :-------------------------------------------------: |
39-
| ![image](/img/docs/https_req_per_sec_vs_worker_threads.png) | ![image](/img/docs/https_tp99_latency_vs_worker_threads.png) |
40-
| |
41-
| ![image](/img/docs/http_req_per_sec_vs_worker_threads.png) | ![image](/img/docs/http_tp99_latency_vs_worker_threads.png) |
45+
| ![image](/img/docs/https_req_per_sec_vs_worker_threads.png) | ![image](/img/docs/http_req_per_sec_vs_worker_threads.png) |
4246

4347
## Related Projects
4448

Loading
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.

0 commit comments

Comments
 (0)