getrusage 시스템 호출 : "최대 상주 세트 크기"


23

man getrusage 2 말한다

ru_maxrss (since Linux 2.6.32)
              This is the maximum resident set size used (in kilobytes). For RUSAGE_CHILDREN, this is the resident set size of the largest
              child, not the maximum resident set size of the process tree.

이 숫자는 정확히 무엇을 의미합니까?


ru_maxrssmac / BSD 컴퓨터에서 바이트 단위 의 메모입니다 .
Isaac Turner

1
작은 설명 : ru_maxssMac OS X (Darwin) 시스템에서는 바이트 단위이지만 BSD 시스템 및 Linux 시스템에서는 킬로바이트 단위입니다. stackoverflow.com/q/40773924/781723stackoverflow.com/q/12050913/781723을 참조하십시오 .
DW

답변:


27

프로세스의 상주 세트 크기는 해당 프로세스에 속하는 메모리의 양으로 현재 RAM (실제 RAM, 스왑되지 않거나 상주하지 않음)에 존재합니다.

예를 들어, 프로세스가 메모리 청크 (100Mb)를 할당하고 능동적으로 사용 (읽기 / 쓰기)하는 경우 상주 세트 크기는 약 100Mb (오버 헤드, 코드 세그먼트 등)가됩니다. 프로세스가 해당 메모리의 사용을 잠시 중단 한 후에도 해제하지 않으면 OS는 다른 프로세스 (또는 캐시)를위한 공간을 만들기 위해 스왑 할 메모리의 청크를 스왑하도록 선택할 수 있습니다. 그러면 상주 세트 크기는 커널이 스왑 아웃 한 양만큼 감소합니다. 프로세스가 깨어나 해당 메모리를 다시 사용하기 시작하면 커널은 스왑에서 데이터를 다시로드하고 상주 세트 크기가 다시 커집니다.

ru_maxrss의 필드 struct rusage상주 세트 크기의 '워터 마크 (water mark) "입니다. 이 프로세스에 대한 최대 RAM 사용을 나타냅니다 (사용시 RUSAGE_SELF).

프로세스의 상주 세트 크기를 제한하여 단일 응용 프로그램이 시스템의 모든 RAM을 "사용"하고 다른 응용 프로그램을 강제로 교환하지 못하도록합니다 (또는 메모리 부족 조건으로 완전히 실패).

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.