如何确定程序的工作负载类型



假设以下场景:开发人员为您提供了他的 Java 应用程序,而您希望确定该应用程序的资源需求:

  • 它是否消耗大量 CPU?
  • 它是否分配了大量内存?
  • 它是否对磁盘进行大量读/写?
  • 它是否消耗网络带宽?

应该寻找哪些指标来了解应用程序的要求?可以根据需要多次运行给定的应用程序。

我发现的是Linux上的perf工具。它可以测量所有内容(CPU 周期、缓存未命中、页面错误、分支未命中,不同的磁盘操作,内存分配...

是否有任何可以应用的方法?

谢谢!

  1. 通常,您应该使用像YourKit或JProfiler这样的分析工具,这样您不仅可以测量CPU/RAM/网络/磁盘消耗,还可以检测"重型"方法,最大对象等。

  2. 如果你没有探查器工具,你可以使用JConsole或JVisualVM,它们提供基本相同的功能,但与特殊的分析工具相比,输出将受到限制。

  3. 您可以使用操作系统中内置的监视工具,如 Windows 性能监视器或 nmon for Linux

  4. 最后但并非最不重要的一点是,您可以考虑sigar,它是免费的开源系统信息收集和监控器。收集和绘制 sigar 指标的最简单方法是 PerfMon

最新更新