【问题标题】:Measure context switching in java在java中测量上下文切换
【发布时间】:2017-07-31 07:47:15
【问题描述】:

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

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

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

【问题讨论】:

  • 您可以将System.currentTimeMillis() 添加到日志中,以测量完成任务所需的时间并简单地试验线程池大小。开始条件(输入)应该相同。

标签: java multithreading context-switching


【解决方案1】:

这里有两个选项:

  • 您从事“真实”分析。含义:您了解帮助您监控应用程序这些方面的工具。对于初学者,请参阅here;或 there 获取更多种类的工具。
  • 您只需进行实验。将您的池大小设置为 100、500、1000。看看会发生什么。您会看到,当您对使用您的系统的客户良好洞察力时,可能只需调整该参数并查看如何/如果它影响您的用户。

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

【讨论】:

    【解决方案2】:

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

    注意:- Appdynamics 提供免费试用版并作为 SAAS 提供。用过很多次,很喜欢。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-07
      • 2016-07-04
      • 1970-01-01
      • 2019-05-09
      • 2014-07-13
      • 1970-01-01
      相关资源
      最近更新 更多