>

저는 "성능 테스트"를하기 위해 리눅스 도구를 찾고 있습니다. 두 가지 이상의 버전의 프로그램이 있습니다. 버전을 서로 비교하기 위해 특정 시간 (30 ~ 5m 사이)에 대해 실행 한 다음 전체 시간 동안 실행중인 시스템에서로드 평균을 확인하려고합니다 (예 : 내 프로그램 foo는 2 분 안에 시스템의 약 30 % 필요 시각). 여러 가지 버전이 프로그램 모음이 아닌 하나의 ID를 가진 하나의 프로그램으로 구성되어 있지 않기 때문에 편안한 방법으로 전체 평균 시스템을 보는 것이 좋습니다. 따라서 로그 파일로 출력 할 수 있다면 흥미로운 프로그램을 수동으로 검색 할 수 있습니다.

누구나 그러한 프로그램을 알고 있으며 그 작업 방법을 알려줄 수 있습니까?

  • 답변 # 1

    프로세스 별 통계는

    /proc/$PID/stat
    
    

    man proc 를 실행하여 설명서를 읽을 수 있습니다 /proc/[pid]/stat 검색 :

    man -P'less +/\\\/proc\\\/\\\[pid\\\]\\\/stat' proc
    
    
    와이즈 비즈

    참고 :도구에서 많은 하위 프로세스 (자식)를 생성하는 경우 샘플의 경우 다른 필드가 중요 할 수 있습니다.

    샘플의 경우이 작업을 수행하는 빠른 펄이 있지만 고정 지연 시간은 1 초입니다.

    ...

    (14) utime %lu 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.

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

    #!/usr/bin/perl -w my ( $lut, $lst ) = ( 0, 0 ); my $pid = $ARGV[0] or die "No pid"; open FH, "</proc/$pid/stat" or die "Can't open \`\`/proc/$pid/stat''"; open UT, "</proc/uptime" or die "Can't open \`\`/proc/uptime''"; sub getvals { seek FH, 0, 0; seek UT, 0, 0; my $st = <FH>; my $ut = <UT>; my $out = $lut; my $ost = $lst; $lut = ( split " ", $ut )[0] * 100; $lst = eval( join( "+", ( split " ", $st )[ 13, 14 ] ) ); return $lut - $out, $lst - $ost; } getvals; $| = 1; while (1) { sleep 1; printf "%7.2f%%\n", eval sprintf "100/%s*%s", getvals; };

  • 이전 linux - Windows와 Ubuntu를 이중 부팅하려고하지만 설치 프로그램에서 드라이브를 찾을 수 없습니다
  • 다음 bash - 완전한 키 값 쌍