getrusage()는 프로세스의 하위에서 사용하는 메모리 양을 표시 할 수 있습니다. 나는 여러 개의 하위 프로그램을 시작할 쉘을 만들고 있습니다. getrusage()는 이러한 모든 아이들이 사용하고있는 메모리의 총 합계를보고합니다. 이것은 내가 원하는 것이 아닙니다. 나는 각 어린이가 얼마나 많은 기억을 사용하고 있는지 알고 싶다. getrusage()는 개별 자식 프로세스에서 작동하지 않는다는 점을 제외하고는 사용하고자하는 것처럼 보입니다. 사용할 수있는 것은 무엇인가?C++에서 getrusage()와 비슷한 것을 찾으십시오.
답변
어쩌면 아이들을 한 번에 하나씩 처리 한 다음 getrusage(RUSAGE_CHILDREN...)
을 사용하여 각 자녀의 사용을 독립적으로 확인할 수 있습니다.
이 접근법의 가장 명백한 단점은 아이들을 동시에 실행해야하는 경우입니다. 이 경우 맞춤 제작 된 중개 프로그램이이를 수행 할 수 있습니다. 대신 직접 아이들을 실행, 프로그램을 실행 한 다음 nice
또는 time
명령의 스타일
- 포크
exec
의 요청 된 프로그램, 아마도 명령 행 인수 (프로그램 및 인수)로 전달
- 부모는 자식에 대해
getrusage()
을 실행합니다. 하나 밖에 없으므로 원하는 결과입니다. 그런 다음 몇 가지 메커니즘을 사용하여 정보를 주 프로그램 (상태 파일)으로 다시 전달하십시오.
그런 다음 필요한 것은 자식을 실행하고 메모리 사용을보고하도록 지시 된 중개자를 통해 마스터가 각 자식을 분기하는 것입니다.
요점은 getrusage()
을 호출하는 프로그램이 하나의 하위 만 가질 수 있도록 하위 프로세스의 계층을 다시 잡는 것입니다. 마스터 프로그램은 너무 많은 자식을 가지고 있고 pid에 의한 메모리 사용을 얻기위한 시스템 호출이 없기 때문에 그렇게 할 수 없습니다.
리눅스 나 호환이 가능하다면 /proc/<pid>/mem
에서도 주위를 스누핑 할 수 있습니다.
나는 fork를 사용한 다음 execv를 사용하여 초기에 자식을 만듭니다. 내가 포크를 다시 써서 아이들 한테 들어갈 수 있다고 말하는거야? –
@ z-buffer : 그런 식으로. 나는 그 대답을 명확히 할 것이다. – wallyk
아이가 처음 만들어 졌을 때만 작동할까요? 나는 주어진 시간에 아이들이 얼마나 많은 기억을 사용하고 있는지 볼 수 있기를 원한다. –
각 자식 프로세스가 fork()
일 때 부모는 PID
이됩니다. 이를 사용하여 /proc
파일 시스템을 쿼리 할 수 있습니다. 특히 /proc/{pid}/status
(이후 특정 메트릭에 따라 다름)을 쿼리 할 수 있습니다.
이
을 포함, 당신에게 다양한 정보를 제공합니다 : 당신은wait3
또는
wait4
을 사용할 수 있습니다
VmSize: 2788 kB
VmLck: 0 kB
VmRSS: 1280 kB
VmData: 252 kB
VmStk: 16 kB
VmExe: 268 kB
VmLib: 2132 kB
이 다른 SO 스레드에 설명 된대로 : CPU time after the process finished을.
- 1. C에서 비슷한 유형의 캐스팅 #
- 2. ui와 비슷한 것을 찾으신다면 :
- 3. gdb를 사용하여 C에서 알 수없는 함수를 찾으십시오.
- 4. 두 배열에 공통적 인 것을 찾으십시오
- 5. 찾기 Sprite보다 더 가벼운 것을 찾으십시오!
- 6. iPhone에서 Notes 응용 프로그램과 비슷한 것을 만들었습니다.
- 7. pageflakes와 비슷한 것을 만들 수 있습니다.
- 8. 스파크리스트는 mx리스트의 itemsChangeEffect와 비슷한 것을 가지고 있습니까?
- 9. mod_rewrite : 비슷한 URL이 같은 page.php로가는 것을 피하십시오
- 10. iPhone 캘린더 목록보기와 비슷한 것을 원하십니까?
- 11. NSPopup 또는 비슷한 것을 나타내는 진행
- 12. MAC의 objective-c에서 연결된 Iphone 장치의 UUID를 찾으십시오.
- 13. 비슷한 암호가 비슷한 암호를 사용합니까?
- 14. 이맥스는 vi의 "set number"와 비슷한 것을 가지고 있습니까?
- 15. IE는 firefox/chrome에서 -moz-border-radius와 비슷한 것을 가지고 있습니까?
- 16. Visual C# 2008 속성 창과 비슷한 것을 만드는 방법은 무엇입니까?
- 17. JSF에서 - "# {bean.run (3)}"과 비슷한 것을 얻으려고 시도했습니다.
- 18. WPF : 스타일이나 비슷한 것을 통해 바인딩을 추가하거나 수정할 수 있습니까?
- 19. 탐색 바를 사용하여 iPhone Safari 앱에서 피커와 비슷한 것을 얻으시겠습니까?
- 20. Silverlight 3/WP7에서 DynamicObject와 비슷한 것을 사용하는 방법은 무엇입니까?
- 21. drupal CCK와 비슷한 것을 찾고 있는데 Java (Java CMS) 에서요?
- 22. 스택 오버플로 태그의 위젯과 비슷한 것을 구현하는 방법은 무엇입니까?
- 23. 유니티는 Ninject 커스텀 프로 바이더와 비슷한 것을 제공합니까?
- 24. Mac OSX 용 LSP와 비슷한 것을 개발하는 방법
- 25. PHP를 사용하여 VistaPrint/CafePress/Zazzle과 비슷한 것을 재현하십시오. 어떤 아이디어?
- 26. NSTask를 사용하여 Tail -f와 비슷한 것을 얻는 방법
- 27. 나는 wpf에서 TFS 쿼리와 비슷한 것을 만들 필요가있다.
- 28. 파이어 폭스 애드온은 "배경 페이지"개념과 비슷한 것을 가지고 있습니까?
- 29. 아이폰 메시지 앱. 어떻게 비슷한 것을 만들 수 있습니까?
- 30. jQuery 타이밍 - 메서드에서 DoEvents()와 비슷한 것을 추가하려고합니다.
각 하위 프로세스에서 getrusage (RUSAGE_SELF, ..)를 호출 할 수 있습니까? –