gpt4 book ai didi

java - 运行许多 IO 线程是否会影响一些 CPU 密集型线程的性能?

转载 作者:行者123 更新时间:2023-11-30 06:31:00 24 4
gpt4 key购买 nike

假设我有一台带 12MB 缓存的 6 核机器。我将它用于具有几千兆字节堆(其中大部分是二级 Hibernate 缓存)的服务器应用程序。

我注意到大多数时候我有少数几个线程主动服务于客户端请求(消耗 CPU 并与数据库通信),还有大约 30-50 个线程只与客户端进行良好的同步网络 IO。

在学习 Java 内存模型时,我想知道这是否会影响性能。许多网络 IO 线程之一的上下文切换是否会破坏“Activity ”线程的线程/CPU 缓存?这种并发级别本身是否有害(内存缓存除外)?

考虑到 CPU 缓存相对于整个应用程序内存有多小,这真的很重要吗?如何确定边界在哪里?

最佳答案

Does context switching for one of the many network IO threads ruin thread/CPU cache of the "active" threads?

没有硬性保证,但我的直觉是,在实践中,CPU 缓存比调度程序切换线程更频繁地按数量级更新。如果是这种情况,那么与已经在进行的缓存更新相比,线程上下文切换所需的缓存更新开销非常小。

How can I determine where the boundary is?

通过试验和测量(分析),就像大多数与性能相关的问题一样。简单的理论近似值是行不通的,因为现代 PC 中真正的实际情况比任何合理的近似值都复杂。

关于java - 运行许多 IO 线程是否会影响一些 CPU 密集型线程的性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9990588/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com