grpc/test/core/event_engine/windows
AJ Heller 3fb738b9b1
[EventEngine] Implement work-stealing in the EventEngine ThreadPool (#32869)
This PR implements a work-stealing thread pool for use inside
EventEngine implementations. Because of historical risks here, I've
guarded the new implementation behind an experiment flag:
`GRPC_EXPERIMENTS=work_stealing`. Current default behavior is the
original thread pool implementation.

Benchmarks look very promising:

```
bazel test \
--test_timeout=300 \
--config=opt -c opt \
--test_output=streamed \
--test_arg='--benchmark_format=csv' \
--test_arg='--benchmark_min_time=0.15' \
--test_arg='--benchmark_filter=_FanOut' \
--test_arg='--benchmark_repetitions=15' \
--test_arg='--benchmark_report_aggregates_only=true' \
test/cpp/microbenchmarks:bm_thread_pool
```

2023-05-04: `bm_thread_pool` benchmark results on my local machine (64
core ThreadRipper PRO 3995WX, 256GB memory), comparing this PR to
master:


![image](https://user-images.githubusercontent.com/295906/236315252-35ed237e-7626-486c-acfa-71a36f783d22.png)

2023-05-04: `bm_thread_pool` benchmark results in the Linux RBE
environment (unsure of machine configuration, likely small), comparing
this PR to master.


![image](https://user-images.githubusercontent.com/295906/236317164-2c5acbeb-fdac-4737-9b2d-4df9c41cb825.png)

---------

Co-authored-by: drfloob <drfloob@users.noreply.github.com>
2023-05-08 13:38:23 -07:00
..
BUILD [EventEngine] WindowsEndpoint (#31735) 2022-11-28 14:13:10 -08:00
create_sockpair.cc [EventEngine] WindowsEndpoint (#31735) 2022-11-28 14:13:10 -08:00
create_sockpair.h [EventEngine] WindowsEndpoint (#31735) 2022-11-28 14:13:10 -08:00
iocp_test.cc [EventEngine] Implement work-stealing in the EventEngine ThreadPool (#32869) 2023-05-08 13:38:23 -07:00
win_socket_test.cc [EventEngine] Implement work-stealing in the EventEngine ThreadPool (#32869) 2023-05-08 13:38:23 -07:00
windows_endpoint_test.cc [EventEngine] Implement work-stealing in the EventEngine ThreadPool (#32869) 2023-05-08 13:38:23 -07:00