2017-09-14 1 views
0

다음 테스트를 수행했는데 psutil을 사용하여 의미있는 데이터를 검색 할 수 없습니다.도커 컨테이너 내에서 사용 가능한 RAM을 올바르게보고하는 방법은 무엇입니까?

기본적으로이 명령을 사용하여 파이썬을 사용하여 컨테이너 내부에서 사용 가능한 메모리를보고하려고합니다.

내가 시험을 세 번하고 다른 메모리 매개 변수마다 실행 한

: 여기

docker run -m 10000000 -ti python:2.7 bash 
docker run -m 100000000 -ti python:2.7 bash 
docker run -m 800000000 -ti python:2.7 bash 

먼저에서 결과

> docker run -m 10000000 -ti python:2.7 bash                          
[email protected]:/# pip install psutil && python -c "import psutil; print psutil.virtual_memory().available" 
Killed 

> docker run -m 100000000 -ti python:2.7 bash                          
[email protected]:/# pip install psutil && python -c "import psutil; print psutil.virtual_memory().available" 
Collecting psutil 
    Downloading psutil-5.3.1.tar.gz (397kB) 
    100% |████████████████████████████████| 399kB 2.8MB/s 
Building wheels for collected packages: psutil 
    Running setup.py bdist_wheel for psutil ... done 
    Stored in directory: /root/.cache/pip/wheels/bc/00/68/b4cbf1017e55880ef2afd1a248a1c88311f38a574c8929d687 
Successfully built psutil 
Installing collected packages: psutil 
Successfully installed psutil-5.3.1 
1741164544 

> docker run -m 800000000 -ti python:2.7 bash                         
[email protected]:/# pip install psutil && python -c "import psutil; print psutil.virtual_memory().available" 
Collecting psutil 
    Downloading psutil-5.3.1.tar.gz (397kB) 
    100% |████████████████████████████████| 399kB 2.8MB/s 
Building wheels for collected packages: psutil 
    Running setup.py bdist_wheel for psutil ... done 
    Stored in directory: /root/.cache/pip/wheels/bc/00/68/b4cbf1017e55880ef2afd1a248a1c88311f38a574c8929d687 
Successfully built psutil 
Installing collected packages: psutil 
Successfully installed psutil-5.3.1 
1739603968 

됩니다 : 여기

는 테스트입니다 테스트, 일자리는 곧바로 살해 당한다. RAM 할당이 낮기 때문에 예상됩니다. 이 경우 왜 1741164544 및 1739603968 (즉, 1741164544 및 1739603968)

:

그러나 두 번째와 세 번째 테스트에서

-m 매개 변수는 8 배의 차이에도 불구하고, 파이썬 코드는 더 많거나 적은 동일한 결과를 반환 ?

제 호스트 PC는 Mac이고 16G RAM입니다.

답변

2

고정 표시기 용기에 의한 자원 사용을 제어 cgroup을를 사용, 그래서 당신은 cgroup에 파일을 확인해야합니다

$ docker run -m 800000000 -ti centos bash 
[[email protected] /]# cat /sys/fs/cgroup/memory/memory.limit_in_bytes 
799997952 

psutil 가능성이 시스템이 아닌 용기, 능력을 보여줍니다 /proc/meminfo 파일을 사용합니다.

참고 : https://serverfault.com/questions/680963/lxc-container-shows-hosts-full-ram-amount-and-cpu-count

+0

답변 해 주셔서 감사합니다. 이 정보를 추출 할 수있는 파이썬 라이브러리를 아십니까? –

관련 문제