我的Perl程序Stas

我的Perl程序Stas,perl,statistics,cpu,profile,Perl,Statistics,Cpu,Profile,我需要您的帮助来实现一些东西,以便在perl程序执行期间或执行结束时监视CPU/MEM的使用情况 假设一个程序每N分钟运行一次,由另一个Perl程序启动,后者的执行时间从几秒到1分钟不等。如何获得执行此程序所产生的CPU/MEM使用率 其中一些要求是: 监测应尽可能少地干预 在执行 节目 监控应至少使用 系统资源 操作系统尽可能独立。应该 在Linux、Win32、HP-UX、Solaris、, AIX。好的,但让我们先集中注意力 Linux 我用一些方法思考: 实现我自己的Devel::M

我需要您的帮助来实现一些东西,以便在perl程序执行期间或执行结束时监视CPU/MEM的使用情况

假设一个程序每N分钟运行一次,由另一个Perl程序启动,后者的执行时间从几秒到1分钟不等。如何获得执行此程序所产生的CPU/MEM使用率

其中一些要求是:

  • 监测应尽可能少地干预 在执行 节目
  • 监控应至少使用 系统资源
  • 操作系统尽可能独立。应该 在Linux、Win32、HP-UX、Solaris、, AIX。好的,但让我们先集中注意力 Linux
我用一些方法思考:

  • 实现我自己的Devel::MyProfiler 并用-d运行程序 “选择权”。(例如:$perl-dMyProfiler) (program.pl)
  • 实现一个获取统计信息的包装器 每N秒从/proc/pid或“$ ps aux”,并获得平均统计数据 节目结束时
  • 实现一个并行程序 每N秒生成一个“$ps aux”
  • 使用过程跟踪工具
  • 任何提示都会有帮助

    注意:这个问题也发布在

    Tks


    gulden

    探查器或跟踪工具可能是解决此问题的错误方法,因为它会对正在运行的程序的性能(和内存使用)产生影响。可能不是你想要的

    大多数UNIX-y操作系统支持系统调用,如
    getrusage()
    ,这将使您能够获取当前进程或子进程的资源利用率统计数据。在
    Unix::Getrusage
    中有一个Perl接口;或者,大多数UNIX系统都有一个
    time
    实用程序和/或shell内置程序,用于收集子进程的统计信息


    Windows对我来说是一个黑匣子,所以我不确定它是否有任何等价物。

    如果您想查看分析,请查看

    开销是合理的。内存映射非常有用。

    交叉发布到Perlmonks: