如何测量在 ubuntu 上运行的 java 应用程序的 I/O 时间?

Posted

技术标签:

【中文标题】如何测量在 ubuntu 上运行的 java 应用程序的 I/O 时间?【英文标题】:How to measure I/O time for a java application running on ubuntu? 【发布时间】:2010-08-25 18:16:02 【问题描述】:

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

【问题讨论】:

你想要从 Java 端还是 Linux 端? 【参考方案1】:

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

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

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

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

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

【讨论】:

【参考方案2】:

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

【讨论】:

【参考方案3】:

使用strace 监视系统 I\O 调用。阅读man 页面了解简介。

【讨论】:

以上是关于如何测量在 ubuntu 上运行的 java 应用程序的 I/O 时间?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Windows 平台上测量应用程序的运行时内存需求?

如何在 Ubuntu 18.04.2 LTS 上使用 OpenJDK 8 运行 Java FX?

了解java垃圾收集中的足迹测量

如何测量我的算法消耗的功率?

Ubuntu上如何编译运行java程序

Ubuntu上如何编译运行java程序