내 질문
내가 작성 중인 bash 스크립트에 얼마나 많은 리소스가 필요한지 알아내야 합니다. 나는 주로 다음에 관심이 있습니다:
메모리
최대 디스크 사용량(디스크 공간)
CPU 시간: 여기서는 이것이 전체 CPU(물리적 + 가상 코어 포함)의 실행 시간을 의미하는지, 아니면 사용된 코어의 실행 시간만을 의미하는지 확실하지 않습니다. 예를 들어, 코어 수가 다른 CPU에 필요한 CPU 시간을 어떻게 알 수 있나요?
사용된 코어 수
그 이유는 클러스터에 작업을 제출할 것이기 때문입니다. 각 작업은 약간 변경된 매개변수를 사용하여 스크립트를 실행합니다.
내 계획은 다음과 같습니다. 내 컴퓨터에서 스크립트를 실행하여 위의 리소스에 대한 급증을 가져온 다음 필요한 양의 리소스가 준비된 클러스터 노드만 사용하도록 합니다.
아니면 스크립트를 실행하는 동안 필요한 내용을 일부 파일에 쓰는 것이 더 좋습니다.
시도해 볼 수 있는 솔루션
지금까지 내가 한 일:
RAM: 스크립트에서 호출된 프로그램의 최대 RAM을 측정합니다. 여기에서 최대 RAM 사용량이 있는 것 같습니다. (이것은 나중에 로그 파일에서 추출한 명령을 사용한 스크립트입니다 Mathematica
.)MaxMemoryUsed[]
디스크 공간 : 기본적으로 를 사용합니다 du -sb
. 또한 df
스크립트 전후에 사용합니다.
CPU 시간: 내가 설정한 스크립트의 시작 SECONDS=0
과 끝 부분 echo ${SECONDS}
(스크립트가 내가 실행하는 유일한 작업이므로 CPU 시간과 일치해야 합니까?!). 저도 date
대략적인 추정을 해봤습니다.
내 문제와 가능한 해결 방법에 대한 모든 팁, 의견 및 도구에 감사드립니다.
편집하다
나도 그런 말을 들었습니다 valgrind
. 누구든지 이것에 대한 경험이 있습니까? 내 목적에 맞게 사용할 수 있나요?
답변1
GNU에서 명령을 실행하면 됩니다 time
. 기본적으로 시간에는 real
(벽시계), user
(사용자 모드에서 사용된 CPU 시간) 및 sys
(커널 모드에서 사용된 CPU 시간) 데이터 항목이 표시됩니다. 그러나 RAM 및 디스크 사용량과 같은 다른 사항을 측정하도록 요청할 수도 있습니다.
/usr/bin/time -f "File system outputs: %O\nMaximum RSS size: %M\nCPU percentage used: %P" <command>
<command>
실행하려는 명령 으로 바꾸십시오. 출력은 다음과 유사합니다.
File system outputs: 18992
Maximum RSS size: 40056
CPU percentage used: 367%
여기서 "CPU 사용량 백분율"은 사용된 코어 3.6개를 나타내는 백분율이고, "최대 RSS 크기"는 킬로바이트로 표시되는 "사용된 최대 메모리"에 가장 가깝고, "파일 시스템 출력"은 킬로바이트로 표시됩니다. 단위는 피연산자(즉, 얼마나 많은 데이터가 기록되는지는 밝히지 않습니다.) 귀하가 제공한 du
및 명령이 df
도움이 될 것입니다.
참고: 당신필요/usr/bin/time
단순히 use보다는 사용하세요 time
. 많은 쉘이 이것을 내장 옵션으로 갖고 있지만 반드시 지원하지는 않기 때문입니다 -f
.
자세한 내용은 다음을 참조하세요.man time