2017-09-14 60 views
0

我已經完成了以下測試,發現我無法使用psutil來檢索有意義的數據。如何正確報告Docker容器中的可用RAM?

基本上我試圖運行這個命令來使用python來報告容器內的可用內存。

我已經運行有不同的內存參數每次測試三次:

下面是測試:

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分配較低,因此這是預期的。

但在第二和第三測試中,即使-m參數是8倍的差異,Python代碼返回或多或少相同的結果:1741164544和1739603968(即1741164544和1739603968)

爲什麼它是這種情況?

我的主機PC是一個mac,它有16G RAM。

回答

2

泊塢窗使用的cgroup來控制容器資源的使用,所以你應該檢查CGROUP文件:

$ docker run -m 800000000 -ti centos bash 
[[email protected]4b /]# 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

感謝您的回答。你知道任何可以提取此信息的Python庫嗎? –

相關問題