命令行java程序的磁盘I/O
我有一个简单的问题,我在网上读过,但找不到简单的解决方案: 我在命令行上运行一个java程序,如下所示,该程序访问数据库:命令行java程序的磁盘I/O,java,macos,performance,command-line,io,Java,Macos,Performance,Command Line,Io,我有一个简单的问题,我在网上读过,但找不到简单的解决方案: 我在命令行上运行一个java程序,如下所示,该程序访问数据库: java-jarmyprogram.jar 我想要一个简单的机制来查看这个程序(在OSX上)执行的磁盘I/O数量。 到目前为止,我遇到了iotop,但是如何让iotop测量myProgram.jar的磁盘I/O 我是否需要像JProfiler这样的探查器是否获取此信息?iotop是一个实用工具,它按IO消耗/利用率的降序为您提供前n个进程 最重要的是,它是一个实时监控实用程
java-jarmyprogram.jar
我想要一个简单的机制来查看这个程序(在OSX上)执行的磁盘I/O数量。
到目前为止,我遇到了iotop
,但是如何让iotop
测量myProgram.jar的磁盘I/O
我是否需要像
JProfiler这样的探查器
是否获取此信息?iotop是一个实用工具,它按IO消耗/利用率的降序为您提供前n个进程
最重要的是,它是一个实时监控实用程序,这意味着它的输出每n秒(或您指定的时间间隔)更改一次。虽然可以将其重定向到文件,但需要解析该文件,并在绘制图形后找到有意义的数据
我建议使用sar。你可以阅读更多关于它的内容
它是linux/unix中最低级别的监视实用程序。它将为您提供比iotop多得多的数据
sar最好的地方是,当程序运行时,您可以使用守护程序收集数据,然后使用
根据我的说法,你可以遵循以下方法
我希望这会有所帮助。您的Java程序最终将成为主机系统的进程,因此您需要为自己的进程id过滤掉监控工具的输出。请参阅本节的脚本 此外,即使您已经用OsX标记了这个问题,但请务必在问题中提到您正在使用OsX 如果您正在寻找脱机数据—这些数据是Unix基础系统中的文件系统提供的,但不幸的是,OSX中缺少这些数据,
您可能会选择编写一个小脚本,从磁盘和进程监视工具中转储进程id的数据。您可以按进程名称在脚本中获取进程id,将脚本放入循环中以查找该进程名称,并在执行Java程序之前启动脚本。当脚本找到所述进程时,它将继续以您决定的时间间隔从您选择的命令中转储相关数据。一旦程序结束,日志转储脚本也会终止 您的Java程序正在作为操作系统程序
Java
运行,因此使用iotop
iotop
监视当前正在运行的程序,对吗?那么,我怎样才能在之后检查这个统计数据呢?另外,我应该监控iotop
中的哪个字段?谢谢,这篇博文非常有用。我的一个问题是,这些命令似乎只报告正在运行的进程的i/O。因此,如果我的java程序很快就完成了,我该如何检查该程序的I/O统计数据?我的java程序的进程ID没有显示在中,例如iosnoop
。有什么建议吗?