我有一个 java 系统做很多 i/o 操作。我确实理解非 CPU 绑定的任务可以从线程数中受益,而不是从 #CPU 中受益。
由于 I/O 操作时间是不确定的(我不知道应该在池中初始化多少线程)。我想测量由于我在 java 程序中初始化的线程数而发生的上下文切换。
最后,由于上下文切换开销,我想调整线程池的大小。
我有一个 java 系统做很多 i/o 操作。我确实理解非 CPU 绑定的任务可以从线程数中受益,而不是从 #CPU 中受益。
由于 I/O 操作时间是不确定的(我不知道应该在池中初始化多少线程)。我想测量由于我在 java 程序中初始化的线程数而发生的上下文切换。
最后,由于上下文切换开销,我想调整线程池的大小。
您可以使用良好的分析工具(如appdynamics)来衡量您的程序在 IO 和 CPU 等待上花费了多少时间,并获得有关您的程序的许多有趣的见解,并相应地优化您的代码。一旦你对你的代码有了深入的了解,你就可以逐渐用不同大小的线程池进行测试,并在 Appdynamics 中查看效果并选择最佳大小,从而为您提供最佳性能。
注意:- Appdynamics 提供免费试用版并作为 SAAS 提供。我已经多次使用它并且非常喜欢它。