3

我有一个 java 系统做很多 i/o 操作。我确实理解非 CPU 绑定的任务可以从线程数中受益,而不是从 #CPU 中受益。

由于 I/O 操作时间是不确定的(我不知道应该在池中初始化多少线程)。我想测量由于我在 java 程序中初始化的线程数而发生的上下文切换。

最后,由于上下文切换开销,我想调整线程池的大小。

4

2 回答 2

1

这里有两个选项:

  • 你从事“真正的”分析。含义:您了解帮助您监控应用程序这些方面的工具。初学者请看这里;或者那里有更广泛的工具。
  • 您只需进行实验。将您的池大小设置为 100、500、1000。看看会发生什么。您会看到,当您对使用您的系统的客户端有很好的了解时,只需调整该参数并查看它如何/是否影响您的用户就足够了。

显然,选项 1 可以更好地理解 - 但它也需要更多的工作。

于 2017-07-31T07:52:53.913 回答
0

您可以使用良好的分析工具(如appdynamics)来衡量您的程序在 IO 和 CPU 等待上花费了多少时间,并获得有关您的程序的许多有趣的见解,并相应地优化您的代码。一旦你对你的代码有了深入的了解,你就可以逐渐用不同大小的线程池进行测试,并在 Appdynamics 中查看效果并选择最佳大小,从而为您提供最佳性能。

注意:- Appdynamics 提供免费试用版并作为 SAAS 提供。我已经多次使用它并且非常喜欢它。

于 2017-07-31T07:52:59.253 回答