在java中测量上下文切换

时间:2017-07-31 07:47:16

标签: java multithreading context-switching

我有一个java系统在进行大量的i / o操作。 我确实理解非CPU绑定任务可以从超过#CPU的线程数中受益。

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

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

2 个答案:

答案 0 :(得分:0)

这里有两个选项:

  • 您参与“真实”分析。含义:您了解可帮助您监控应用程序此类方面的工具。首发见here;或there获取更多种类的工具。
  • 你只是试验。将池大小设置为100,500,1000。看看会发生什么。您可以看到,当您使用系统客户端 时,可能足以调整该参数,看看它是如何/如果它会影响您的用户。

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

答案 1 :(得分:0)

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

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