문제

API의 성능을 측정하는 C ++ 응용 프로그램을 실행하기 위해 쉘 스크립트를 실행 중입니다. API의 대기 시간 (주어진 매개 변수 세트의 값을 반환하는 데 걸리는 시간)을 캡처 할 수 있지만 5-10 초의 간격과 함께 CPU 및 메모리 사용량을 캡처하고 싶습니다.

시스템의 성능에 너무 많은 영향을 미치지 않고 동일한 스크립트 내 에서이 작업을 수행 할 수있는 방법이 있습니까? 나는 우리가 실행중인 대본의 밖에서 (독립적으로) 할 수있는 많은 예를 찾았다. 그러나 우리가 같은 스크립트 내에서 할 수있는 곳은 아닙니다.

도움이 되었습니까?

해결책

나는 사용하는 것이 좋습니다 '시각'명령과 또한'vmstat' 명령. 첫 번째는 CPU에 실행 가능한 실행을 사용하고 시스템의 CPU/메모리/IO의 두 번째주기 (예 : 초당 1 회) 덤프를 제공합니다.

예시:

time dd if=/dev/zero bs=1K of=/dev/null count=1024000
1024000+0 records in
1024000+0 records out
1048576000 bytes (1.0 GB) copied, 0.738194 seconds, 1.4 GB/s
0.218u 0.519s 0:00.73 98.6%     0+0k 0+0io 0pf+0w <== that's time result

다른 팁

전체 Linux 상자에 동적으로 CPU 및 MEM 이용을 캡처하려는 경우 다음 명령을 따르면 다음에 도움이 될 수 있습니다.

CPU

vmstat -n 15 10| awk '{now=strftime("%Y-%m-%d %T "); print now $0}'> CPUDataDump.csv &

vmstat CPU 카운터 수집에 사용됩니다

-n 지연 값의 경우이 경우 15 초마다 15 초마다 통계가 수집됩니다.

그 다음에 10 간격의 수입니다.이 예에서는 10 회 반복이 있습니다.

awk '{now=strftime("%Y-%m-%d %T "); print now $0}' 이것은 각 반복의 타임 스탬프를 버립니다

결국, 덤프 파일은 & 연속

메모리

free -m -s 10 10 | awk '{now=strftime("%Y-%m-%d %T "); print now $0}'> DataDumpMemoryfile.csv &

free Mem Stats Collection 용입니다

-m 이것은 MEM 단위를위한 것입니다 (당신은 사용할 수 있습니다. -b 바이트의 경우, -k 킬로 바이트의 경우 -g 기가 바이트 용)

그 다음에 10 간격 수입니다 (이 예에서는 10 회 반복이있을 것입니다)

awk'{now=strftime("%Y-%m-%d %T "); print now $0}' 이것은 각 반복의 타임 스탬프를 버립니다

결국, 덤프 & 연속

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top