Skip to content

Commit db53394

Browse files
authored
Merge pull request #44 from cherish-ltt/v1.2.x
v1.2.0-release
2 parents 72d8761 + ba43abd commit db53394

File tree

6 files changed

+33
-29
lines changed

6 files changed

+33
-29
lines changed

Cargo.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "lynn_tcp"
3-
version = "1.2.0-rc.2"
3+
version = "1.2.0"
44
edition = "2024"
55
rust-version = "1.90"
66
authors = ["lynn_tcp Contributors"]

README.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -208,13 +208,13 @@ Disconnecting reconnection mechanism
208208

209209
### Test results
210210

211-
platform: Debian12.9 (4H4G)
211+
platform: Debian12.12 (4H4G) - 2025.10.21
212212

213213
model-1: one request by one response
214214

215215
model-2: concurrent `send request` and `recv response`
216216

217-
total-time: 20s
217+
total-time: 15s
218218

219219
**version: lynn_tcp-v1.1.x**
220220

@@ -230,11 +230,11 @@ total-time: 20s
230230

231231
| client concurrency | model-1(Responses/Seconds) | model-2(Responses/Seconds) |
232232
| :----------------- | -------------------------- | -------------------------- |
233-
| 256 | 45,816 | 437,347 |
234-
| 512 | 182,296 | 259,459 |
235-
| 1024 | 163,307 | 140,934 |
236-
| 2048 | 131,346 | 59,427 |
237-
| 4096 | 124,645 | 37,034 |
233+
| 256 | 64,630 | 492,889 |
234+
| 512 | 182,296 | 300,550 |
235+
| 1024 | 163,307 | 158,056 |
236+
| 2048 | 131,346 | 71,263 |
237+
| 4096 | 124,645 | 52,163 |
238238

239239
### License
240240

README_ZH.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,7 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
192192

193193
### 测试结果
194194

195-
平台: Debian12.9 (4H4G)
195+
平台: Debian12.12 (4H4G)
196196

197197
model-1: one request by one response
198198

@@ -214,11 +214,11 @@ model-2: concurrent `send request` and `recv response`
214214

215215
| client concurrency | model-1(Responses/Seconds) | model-2(Responses/Seconds) |
216216
| :----------------- | -------------------------- | -------------------------- |
217-
| 256 | 45,816 | 437,347 |
218-
| 512 | 182,296 | 259,459 |
219-
| 1024 | 163,307 | 140,934 |
220-
| 2048 | 131,346 | 59,427 |
221-
| 4096 | 124,645 | 37,034 |
217+
| 256 | 64,630 | 492,889 |
218+
| 512 | 182,296 | 300,550 |
219+
| 1024 | 163,307 | 158,056 |
220+
| 2048 | 131,346 | 71,263 |
221+
| 4096 | 124,645 | 52,163 |
222222

223223
### 开源协议
224224

src/app/tcp_reactor/event.rs

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -67,16 +67,13 @@ impl EventManager {
6767
Vec::with_capacity(*server_max_reactor_taskpool_size);
6868
let mut stealers: Vec<Stealer<ReactorEvent>> =
6969
Vec::with_capacity(*server_max_reactor_taskpool_size);
70-
7170
for _ in 0..*server_max_reactor_taskpool_size {
7271
let worker = Worker::new_fifo();
7372
stealers.push(worker.stealer());
7473
local_queues.push(worker);
7574
}
76-
7775
let global_queue = self.global_queue.clone();
7876
let stealers_arc = Arc::new(stealers);
79-
8077
for (index, local_queue) in local_queues.into_iter().enumerate() {
8178
let global_queue_clone = global_queue.clone();
8279
let stealers_arc_clone = stealers_arc.clone();
@@ -85,14 +82,13 @@ impl EventManager {
8582
let reactor_event_sender = reactor_event_sender.clone();
8683
let tx = tx.clone();
8784
let lynn_router = lynn_router.clone();
85+
let mut idle_count: u16 = 0;
8886

8987
tokio::spawn(async move {
9088
let local_queue = local_queue;
9189
let global_queue = global_queue_clone;
9290
let stealers_arc = stealers_arc_clone;
9391
let clients = clients_clone;
94-
let mut idle_count = 0;
95-
9692
loop {
9793
if let Some(event) =
9894
get_event(&local_queue, &global_queue, &stealers_arc, index)
@@ -132,11 +128,14 @@ impl EventManager {
132128
}
133129
}
134130
} else {
135-
idle_count += 1;
136-
if idle_count < 64 {
131+
idle_count.saturating_add(1);
132+
if idle_count < 32 {
137133
// Temporarily relinquish control
138134
yield_now().await;
139-
} else if idle_count < 256 {
135+
} else if idle_count < 1024_0 {
136+
// A slightly longer wait
137+
tokio::time::sleep(Duration::from_millis(1)).await;
138+
} else if idle_count < 32767 {
140139
// A slightly longer wait
141140
tokio::time::sleep(Duration::from_millis(5)).await;
142141
} else {
@@ -149,7 +148,6 @@ impl EventManager {
149148
}
150149
}
151150

152-
#[inline(always)]
153151
pub(crate) fn get_global_queue(&self) -> ReactorEventSender {
154152
self.global_queue.clone()
155153
}
@@ -168,27 +166,29 @@ fn get_event(
168166
}
169167

170168
// 2. global
171-
match global_queue.steal_batch_and_pop(local_queue) {
172-
Steal::Success(event) => return Some(event),
173-
Steal::Empty => {}
174-
Steal::Retry => {}
169+
if let Steal::Success(event) = global_queue.steal_batch_and_pop(local_queue) {
170+
return Some(event);
175171
}
176172

177173
// 3. stealers
178174
let stealers_len = stealers_arc.len();
175+
179176
if stealers_len > 1 {
180177
let start_index = (worker_index + 1) % stealers_len;
181178

182179
for i in 0..stealers_len {
183180
let steal_index = (start_index + i) % stealers_len;
181+
184182
match stealers_arc[steal_index].steal() {
185183
Steal::Success(event) => return Some(event),
184+
186185
Steal::Empty | Steal::Retry => continue,
187186
}
188187
}
189188
} else if stealers_len == 1 {
190189
match stealers_arc[0].steal() {
191190
Steal::Success(event) => return Some(event),
191+
192192
Steal::Empty | Steal::Retry => {}
193193
}
194194
}

version.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@
1010

1111
### v1.2.x - rc
1212

13+
#### v1.2.0-release
14+
15+
Integrate v1.2.0-rc.1,rc.2
16+
1317
#### v1.2.0-rc.2
1418

1519
Optimize network handling performance(by ai-agent GLM4.6)
@@ -202,4 +206,4 @@ We are testing and using `AI agent-GLM4.6` for the first time to optimize and de
202206

203207
- Automatically clean sockets
204208

205-
- Routing service for synchronous tasks
209+
- Routing service for synchronous tasks

0 commit comments

Comments
 (0)