메모리 사용량을 기록 할 수있는 도구가 있습니까? 데이터를 기록하려고합니다. 그러한 도구가 있습니까?

프로세스의 메모리 사용량을 모니터링하고이 데이터를 기록하려고합니다. 그러한 도구가 있습니까?



답변

나는 이것을 정확하게하기 위해 스크립트를 작성 했다 . 기본적으로 ps특정 간격 으로 샘플링 하여 특정 프로세스의 프로파일을 작성합니다. 프로세스는 모니터링 도구 자체에서 시작하거나 독립적 인 프로세스 (pid 또는 명령 패턴으로 지정) 일 수 있습니다.


답변

때때로 필요가 생길 때 나는 단지 :

$ top -d 1 -b |grep <process> >>somefile

그것은 우아한 해결책은 아니지만 가설을 검증하기 위해 빠른 원유 가치를 원한다면 작업을 수행합니다.


답변

sarsysstat 패키지의 ( System Activity Reporter )는 다음과 같은 경우 친구입니다.

또 다른 방법은 Munin, pnp4nagios, rrdtools 등과 같은 기록 데이터와 결합 된 모니터링입니다.


답변

상기 특별 행정구 외에도, 내가 권하고 싶습니다 꼭대기 . 나중에 사용할 수있는 이진 로그를 저장하고 메모리 외에 다른 많은 정보도 저장합니다.


답변

Valgrind 시도해 볼 수 있습니다.

Valgrind는 동적 분석 도구를 구축하기위한 계측 프레임 워크입니다. 많은 메모리 관리 및 스레딩 버그를 자동으로 감지하고 프로그램을 자세하게 프로파일 링 할 수있는 Valgrind 도구가 있습니다. Valgrind를 사용하여 새로운 도구를 만들 수도 있습니다.

Valgrind 배포판에는 현재 메모리 오류 감지기 , 2 개의 스레드 오류 감지기, 캐시 및 분기 예측 프로파일 러, 콜 그래프 생성 캐시 및 분기 예측 프로파일 러 및 힙 프로파일 러 등 6 가지 프로덕션 품질 도구가 포함되어 있습니다.


답변

나는 Sridhar의 간단한 대답을 좋아하지만 시도하기 전에 내 자신을 굴렸다.

import json, psutil, datetime, time

with open('log.txt', 'w') as f:
  while True:
    json.dump((datetime.datetime.now().isoformat(),
               psutil.Process(7274).memory_info()._asdict()), f)
    f.write('\n')
    f.flush()
    time.sleep(1)

기본적으로 구조적 출력을 원하는 경우에만 유용합니다. 7274를 적절하게 변경하십시오. 또한 Python 3.5.something이 중단 _asdict()되었으므로 Python 2를 사용하십시오.

출력 파일은 다음과 같습니다.

["2019-03-19T11:21:53.784670", {"rss": 220389376, "vms": 538984448, "shared": 15724544, "text": 303104, "lib": 0, "data": 221364224, "dirty": 0}]
["2019-03-19T11:21:54.786136", {"rss": 220438528, "vms": 539119616, "shared": 15724544, "text": 303104, "lib": 0, "data": 221499392, "dirty": 0}]
["2019-03-19T11:21:55.787555", {"rss": 220495872, "vms": 539119616, "shared": 15724544, "text": 303104, "lib": 0, "data": 221499392, "dirty": 0}]
["2019-03-19T11:21:56.788754", {"rss": 220528640, "vms": 539119616, "shared": 15724544, "text": 303104, "lib": 0, "data": 221499392, "dirty": 0}]