memory

    [Docker] Resource Limitation (자원 제한 하기)

    [Docker] Resource Limitation (자원 제한 하기)

    컨테이너는 기본적으로 리소스 제한이 없으며 호스트의 커널 스케쥴러에 의해 허용되는 주어진 리소스를 사용할 수 있습니다. 가끔 각 컨테이너 별로 리소스(CPU, Memory 등)를 제한할 필요가 생길 수 있습니다. 이런 경우를 위해 도커에서는 컨테이너 별로 어느 정도의 CPU, Memory 자원을 사용할 지에 대해 제한할 수 있는 방법을 제공하고 있습니다. 이 기능들이 지원되기 위해서는 커널이 필요로 합니다. 커널에서 지원하는 여부는 docker run 명령어를 사용하여 확인할 수 있습니다. sudo docker info [sudo] password for linuxias: Client: Debug Mode: false Server: Containers: 1 Running: 1 Paused: 0 Stopp..

    Memory Profiling

    메모리 분석에 사용할 수 있는 다양한 도구에 대해 정리한다. vmstat 가상 메모리 통계 정보를 제공한다. 현재 가용 메모리와 페이지 통계 등 메모리에 대한 다양한 정보를 제공한다. manual 페이지에는 아래와 같이 필드 설명이 되어 있다. Memory swpd: the amount of virtual memory used. free: the amount of idle memory. buff: the amount of memory used as buffers. cache: the amount of memory used as cache. inact: the amount of inactive memory. (-a option) active: the amount of active memory. (-a op..

    [cgroup] memory

    Cgroup (Control Group) Subsystem - memory memory 서브시스템은 cgroup에서 사용하는 메모리 자원에 대해 프로세스가 사용하는 메모리 양과 사용 가능한 메모리 자원을 컨트롤 할 수 있습니다. 또한 사용되는 메모리 자원에 대한 레포트도 자동으로 생성해주는 서브시스템입니다. memory 서브시스템은 시스템으로부터 태스크의 그룹의 메모리 접근등의 동작을 격리화시킵니다. 이 서브시스템이 사용되는 경우는 다음과 같습니다. 메모리 소모가 많은 어플리케이션을 격리하고 더 작은 어플리케이션으로 제한할 수 있습니다. mem=XXXX 설정을 통해 부팅하는 경우의 좋은 대안이 될 수 있습니다. 가상화 솔루션에서 원하는 메모리 양을 제어할 수 있습니다. 위 내용 외에도 여러 요소가 있을 ..

    NUMA BALANCING

    NUMA BALANCING

    NUMA BALANCING에 대해 정리해보고자 합니다. NUMA BALANCING에 대한 설정은 kernel 분석 시 Configure로 설정할 수 있습니다. 먼저 NUMA에 대해 정리해보고 NUMA BALANCING에 대해 정리하겠습니다. NUMA는 Non-Uniform Memory Access(불균일 기억장치 접근)의 약자입니다. 멀티프로세서 시스템에서 불균일 메모리 접근을 위한 설계 기법으로 개발되었습니다. NUMA 시스템에서 프로세서는 자신과 연결된 메모리를 가지고 있습니다. 프로세서와 메모리가 여러 노드를 구성하여 여러 노드가 모여 시스템을 이루고 있습니다. 노드 내 프로세서는 로컬메모리라하고 다른 노드의 메모리를 리모트 메모리라 합니다. 프로세서는 로컬메모리 뿐만 아니라 리모트메모리에도 접근할..

    [valgrind] Memory debugging & profiling tool

    [valgrind] Memory debugging & profiling tool

    Valgrind는 리눅스 실행파일(excutable)을 디버깅하고 프로파일링할 수 있는 툴입니다. 오픈소스이며 C/C++ 로 작성된 프로그램을 디버깅하는데 매우 유용하죠. 간단한 사용법과 몇 가지 기초적인 옵션에 대해 설명드리고자 합니다. 1. 설치$ sudo apt install valgrind$ sudo apt install massif-visualizer 2. 예제 프로그램valgrind를 이용해 프로파일링 하기 전에 예제 프로그램을 하나 작성하였습니다. 코드는 아래와 같습니다. 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455#include #include int t..