Show Table of Contents
3.7. memory
memory 서브시스템은 cgroup의 작업에서 사용되는 메모리 리소스에 대한 보고서를 자동으로 생성하고 다른 작업을 사용하여 메모리 사용의 제한을 설정합니다:
- memory.stat
- 다음 표에서 볼 수 있듯이 광범위한 메모리 통계를 보고합니다:
표 3.1. 메모리 통계가 보고하는 값들
통계 설명 cachetmpfs(shmem)를 포함하는 페이지 캐시 (바이트 단위)rsstmpfs(shmem)를 포함하지 않는 익명 스왑 캐시 (바이트 단위)mapped_filetmpfs(shmem)를 포함한 메모리 맵핑된 파일의 크기 (바이트 단위)pgpgin메모리에 페이지된 페이지 갯수 pgpgout메모리에서 페이지아웃된 페이지 갯수 swap스왑 사용량 (바이트 단위) active_anontmpfs(shmem)를 포함한 활성화된 최근 최소 사용(LRU,least-recently-used) 목록에 있는 무명/스왑 캐시 (바이트 단위)inactive_anontmpfs(shmem)를 포함한 비활성 LRU 목록에서 익명의 스왑 캐시 (바이트 단위)active_file활성화된 LRU 목록에 있는 파일 기반 메모리(바이트 단위) inactive_file비활성화된 LRU 목록에 있는 파일기반 메모리 (바이트 단위) unevictable재활용할 수 없는 메모리 (바이트 단위) hierarchical_memory_limitmemorycgroup을 포함하는 계층의 메모리 제한 (바이트 단위)hierarchical_memsw_limitmemorycgroup을 포함하는 계층의 메모리와 스왑 제한 (바이트 단위)또한hierarchical_memory_limit및hierarchical_memsw_limit이외의 파일은 각각 cgroup 뿐만 아니라 모든 자식 그룹에도 보고하는total_접두사를 갖습니다. 예들 들어,swap은 cgroup에 의한 스왑 사용량을 보고하고total_swap은 cgroup과 자식 그룹에 의한 총 스왑 사용량을 보고합니다.memory.stat에 의해 보고된 값을 구문 분석할 때 다향한 통계가 서로 관련되어 있다는 점에 유의하십시오:active_anon+inactive_anon= 익명 메모리 +tmpfs파일 캐시 + 스왑 캐시따라서active_anon+inactive_anon≠rss가 됩니다. 이는rss에는tmpfs가 포함되지 않기 때문입니다.active_file+inactive_file= cache - size oftmpfs
- memory.usage_in_bytes
- cgroup에서 프로세스에 의해 현재 사용되는 전체 메모리 사용량을 보고합니다 (바이트 단위).
- memory.memsw.usage_in_bytes
- cgroup에서 프로세스에 의해 사용되는 현재 메모리 사용량과 스왑 영역 사용량의 합계를 보고합니다 (바이트 단위).
- memory.max_usage_in_bytes
- cgroup에서 프로세스에 의한 최대 메모리 사용량을 보고합니다 (바이트단위).
- memory.memsw.max_usage_in_bytes
- cgroup에서 프로세스에 의해 사용된 스왑 영역 및 최대 메모리 사용량을 보고합니다 (바이트 단위).
- memory.limit_in_bytes
- 최대 사용자 메모리양 (파일 캐시 포함)을 설정합니다. 단위가 지정되어 있지 않으면 값은 바이트 단위로 해석됩니다. 하지만, 더 큰 단위를 숫자 뒤에 사용할 수 도 있습니다.
k,K는 킬로바이트,m,M는 메가바이트,g,G는 기가바이트를 의미합니다.root cgroup을 제한하기 위해memory.limit_in_bytes는 사용할 수 없습니다. 계층에 있는 하위 그룹에만 값을 적용할 수 있습니다.memory.limit_in_bytes에-1을 작성하여 기존 제한을 제거합니다. - memory.memsw.limit_in_bytes
- 총 메모리와 스왑 사용량의 최대 크기를 지정합니다. 단위를 지정하지 않으면 값은 바이트 단위로 해석됩니다. 하지만 더 큰 단위를 숫자 뒤에 사용할 수 있습니다.
k,K는 킬로바이트,m,M는 메가바이트,g,G은 기가바이트를 의미합니다.root cgroup을 제한하기 위해memory.memsw.limit_in_bytes는 사용할 수 없습니다. 계층에 있는 하위 그룹에만 값을 적용할 수 있습니다.memory.memsw.limit_in_bytes에-1로 작성하여 기존 제한을 제거합니다. - memory.failcnt
memory.limit_in_bytes로 설정된 메모리 제한에 도달한 횟수를 보고합니다.- memory.memsw.failcnt
memory.memsw.limit_in_bytes에 설정된 메모리와 스왑 공간의 합계가 상한에 도달한 횟수를 보고합니다.- memory.force_empty
0으로 설정하면, cgroup의 작업에서 사용되는 모든 페이지의 메모리를 비웁니다. 이 인터페이스는 cgroup에 작업이 없는 경우에만 사용할 수 있습니다. 메모리를 해제할 수 없을 경우, 가능하면 부모 cgroup으로 이동됩니다. cgroup을 삭제하기 전memory.force_empty를 사용하여 사용되지 않는 페이지 캐시가 부모 cgroup에 이동되지 않게 합니다.- memory.swappiness
- 이 cgroup에 속한 작업이 사용중인 프로세스 메모리를 커널이 페이지 캐시에서 페이지를 재활용하지 하는 대신에 스왑 아웃하는 경향을 지정합니다. 이 값은
/proc/sys/vm/swappiness에 시스템 전체로 지정된 경향과 정확히 같은 방식으로 계산되는 경향 값입니다. 기본 값은60입니다. 이 값보다 더 낮은 값으로 지정하면 커널이 프로세스 메모리를 스왑아웃 하는 경향을 감소시키고,60보다 더 높은 값으로 지정하면 커널이 프로세스 메모리를 스왑 아웃하는 경향을 증가시킵니다.100보다 더 큰 값을 지정하면, 이 cgroup에 속한 프로세스의 주소 공간에 있는 페이지들을 커널이 스왑 아웃하는 것을 허용합니다.0의 값으로 설정하면 프로세스 메모리가 스왑 아웃되는 것을 막을 수 없다는 점에 유의하십시오. 글로벌 가상 메모리 관리 논리는 cgroup 값을 읽지 않기 때문에 시스템 메모리가 부족한 경우 여전히 스왑 아웃이 발생할 수 있습니다. 페이지를 완전히 잠금하려면 cgroup 대신mlock()을 사용합니다.다음과 같은 그룹의 swappiness는 변경할 수 없습니다:/proc/sys/vm/swappiness에 설정된 swappiness를 사용하는 root cgroup- 아래에 자식 그룹을 갖는 cgroup
- memory.use_hierarchy
- cgroup의 계층구조 전체에 대해 메모리 사용량이 계산되어야 할지를 지정하는 플래그(
0또는1)가 포함됩니다. 만약 활성화되면(1로 지정), 메모리 서브시스템은 메모리 제한을 넘어간 프로세스와 그 자식 프로세스로부터 메모리를 재활용하게 됩니다. 디폴트값(0)에서 서브시스템은 작업의 자식에서 메모리를 재활용하지 않습니다.

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.