tree 1bf5ceab31f059f1de5138daa9f2de8965f91627
parent f3775a1c3aaad494017330f837f7694c850e6dd0
author RickyMa <rickyma@tencent.com> 1710833023 +0800
committer GitHub <noreply@github.com> 1710833023 +0800
gpgsig -----BEGIN PGP SIGNATURE-----
 
 wsFcBAABCAAQBQJl+T1/CRC1aQ7uu5UhlAAA3tAQAK10Bo4S0kLePEOnb6mxaGD2
 P33pogF9xUZL6FkzgCYy3lCtZb29fMG+b/1rmKePuYGobQzNP5+Vt6tznEtHq/p8
 z7Acn57qCM9aIWPr9tWB4jqr7I9HdnIjzLs6jxUpVYdVneAq0UATtFb3iNdqE10L
 bef69WdE6R0LiZ9G9AftCWxWRMk3tHhgVCEF1mdCmpGu6GZZZd7/Zltyk8rkHT3g
 KOWkfHuf0NgPuqexy/9LtqrmRhHIeD/yNFJ2IBL99uZmN6kwNpuC+QptxQ36zuQ8
 M0TBOno/R4t/v9lWzvEAXB4//QvE6ZFppBz8rSMmWDYwqALkj8aqYfOVUYyNBDe7
 Xnmrjpn0snuLA1eM9NtqTL1iekGOt9CtP0wrSjeF2HfntNT9O9dd2V7vEOUBidp8
 h5IhPKXimNgXnu2wN7XIwHo/vvTXFE0oSBKaN/lCut5l3RrGXnB0IaUJnpbOLZWu
 Jl0lrab70H+hJuUUaPxaDt+D3KG1JX3BmC0YHzs15vCNH2BxZVghRuLXM8WMW9/8
 mI5jet0fLwoDiq6woEjf49pA4/kNfefjchUYfoJN4wxRKm/v2j0C+attKyn6feBT
 RM5TPn4jsRd18KQrpCVfbx6Z2L6Asow/DoPY+aLxiBXeary67Mg3yEkCKeF10YgT
 ome9cBp6MUmsAhrvqU+z
 =XNJ+
 -----END PGP SIGNATURE-----
 

[#1586] improvement(netty): Allow Netty Worker thread pool size to dynamically adapt to the number of processor cores (#1587)

### What changes were proposed in this pull request?

Allow Netty Worker thread pool size to dynamically adapt to the number of processor cores.
We will have a more reasonable default value and better performance in most cases.

### Why are the changes needed?

For https://github.com/apache/incubator-uniffle/issues/1586.

### Does this PR introduce _any_ user-facing change?

No.

### How was this patch tested?

Existing UTs.