3

我想收集我的应用程序等待 I/O 的时间。我在 ubuntu/linux 上运行这个 java 应用程序。我正在使用 yourkit 分析器。建议是否有其他用于测量 I/O 时间的分析工具。

4

3 回答 3

2

Youtkit 非常适合在您的应用程序中使用变焦显微镜。在这些情况下,通常还需要从外部查看宏观视图并进行一些非常粗略的测量以查看您是否受 CPU 限制或 IO 限制。

如果您的应用程序在“空”的情况下全速运行仅使用 10% 的 CPU(并且通过扩展它大约有 90% 等待 IO),那么如果您想调查您可以在 IO 端做什么就很有意义增加吞吐量。另一方面,如果您的所有内核都运行在 90% 以上,您将不会获得太多收益,因为我们的应用程序受 CPU 限制。top、iostat 和 vmstat 命令可以给出这些粗略的估计。

strace 可以深入了解打开和关闭文件的次数、执行的读取操作等……在这种情况下,还可以学习使用 grep 或 perl 来筛选该工具产生的大量数据。

密切关注内存的使用效率并了解您的基础架构。如果您在 vmstat 中看到大量块被换入和换出,则重新调整内存直到降至零或所有其他努力相对无用。

从您的问题中不清楚您的重点是否是延迟、抖动、吞吐量……但这些相对快速的粗略估计有助于确定用显微镜观察的位置。

于 2010-08-25T18:35:59.117 回答
1

您可以使用RotateRight/ZoomLTProf。或者,如果您不追求高精度,您可以使用lsstack获取 10 或 20 个堆栈样本,然后查看 I/O 中的百分比,或者在 Java 中执行相同的操作。

于 2010-08-25T19:44:08.063 回答
0

用于strace监视系统 I\O 调用。阅读man页面以获取介绍。

于 2010-08-25T18:26:56.373 回答