다른 프로그램이 실행되는 동안 프로그램의 실제 실행 시간을 기록하는 방법은 무엇입니까? [복사]

다른 프로그램이 실행되는 동안 프로그램의 실제 실행 시간을 기록하는 방법은 무엇입니까? [복사]

다른 프로그램이 실행되는 동안 Linux에서 OpenMP 프로그램의 실제 실행 시간을 측정할 때 실제 실행 시간을 어떻게 얻습니까?

답변1

부르다 time myprogram.

벽시계 시간, 사용자 시간 및 시스템 시간을 보고합니다. 사용자 시간은 프로세스가 컴퓨팅에 소비하는 시간입니다. 프로그램이 다중 스레드이고 시스템에 다중 프로세서가 있는 경우 모든 프로세서에 소요된 시간이 합산됩니다(따라서 충분히 병렬 프로그램인 경우 사용자 시간이 벽시계 시간보다 길어질 수 있음). 시스템 시간은 커널에서 입력/출력을 수행하는 데 소요되는 시간입니다.

이는 "실행 중인 다른 프로그램의 간섭을 계산하지 않는 시간"에 매우 가깝습니다. 동시 프로그램이 없으면 프로그램에 걸리는 실제 시간을 알 수 있는 유일한 방법은 다른 동시 프로그램 없이 프로그램을 실행하는 것입니다.

답변2

얻을 수 있는지 또는 배경지식 여부에 따라 다음 에서 찾을 수 있으므로 pid어렵지 않습니다 .ps/proc/self$!

/proc/$pid/stat:

          utime %lu   (14) Amount of time that this process has been
                      scheduled in user mode, measured in clock ticks
                      (divide by sysconf(_SC_CLK_TCK)).  This includes
                      guest time, guest_time (time spent running a
                      virtual CPU, see below), so that applications that
                      are not aware of the guest time field do not lose
                      that time from their calculations.

          stime %lu   (15) Amount of time that this process has been
                      scheduled in kernel mode, measured in clock ticks
                      (divide by sysconf(_SC_CLK_TCK)).

          cutime %ld  (16) Amount of time that this process's waited-for
                      children have been scheduled in user mode,
                      measured in clock ticks (divide by
                      sysconf(_SC_CLK_TCK)).  (See also times(2).)  This
                      includes guest time, cguest_time (time spent
                      running a virtual CPU, see below).

          cstime %ld  (17) Amount of time that this process's waited-for
                      children have been scheduled in kernel mode,
                      measured in clock ticks (divide by
                      sysconf(_SC_CLK_TCK)).

프로세스 ID를 얻으려면 다음을 수행할 수 있습니다.

prog ./and/args &
pid=$!

{ prog ./and/args & true ; } && ps -C prog

prog ./and/args

CTRL-Z

jobs -l ; fg %1

방법은 다양합니다.

관련 정보