stressin पर इस nice post से लिंक करना जी कंटेनर स्मृति उपयोग।
$ sudo docker -m 512M -it ubuntu /bin/bash
root# apt-get update && apt-get install -y build-essential
निम्नलिखित
#include <stdlib.h>
#include <stdio.h>
int main(void) {
int i;
for (i=0; i<65536; i++) {
char *q = malloc(65536);
printf ("Malloced: %ld\n", 65536*i);
}
sleep(9999999);
}
साथ कंटेनर के अंदर एक फ़ाइल
foo.c
बनाएं: एक स्मृति सीमा के साथ
लॉन्च कंटेनर: यहाँ सारांश है, सामान्य LXC के बजाय डोकर के लिए काम करने के लिए एक सा संशोधित
फ़ाइल संकलित करें
gcc -o foo foo.c
एक नया टेर खोलें मीनल कंटेनर स्मृति के उपयोग पर नजर रखने के:
$ cd /sys/fs/cgroup/memory/lxc/{{containerID}}
$ while true; do echo -n "Mem Usage (mb): " && expr `cat memory.usage_in_bytes`/1024/1024; echo -n "Mem+swap Usage (mb): " && expr `cat memory.limit_in_bytes`/1024/1024; sleep 1; done
कंटेनर
$ ./foo
में स्मृति की खपत शुरू अब अपने कंटेनर अधिकतम देखना। नोट: जब आप स्मृति malloc की विफल होने की शुरुआत से बाहर होते हैं, लेकिन अन्यथा कंटेनर अकेला छोड़ दिया जाता है। आम तौर पर कंटेनर के अंदर सॉफ़्टवेयर असफल मैलॉक्स के कारण क्रैश हो जाएगा, लेकिन लचीला सॉफ़्टवेयर
अंतिम नोट: डॉकर का फ़्लैग स्वैप और रैम को अलग-अलग नहीं मानता है। यदि आप -m 512M
का उपयोग करते हैं तो उस 512 में से कुछ स्वैप होंगे, रैम नहीं। आप केवल राम चाहते हैं तो आप सीधे LXC विकल्पों का उपयोग करने की आवश्यकता होगी, तो
# Same as docker -m 512m
sudo docker run --lxc-conf="lxc.cgroup.memory.limit_in_bytes=512M" -it ubuntu /bin/bash
# Set total to equal max RAM (e.g. don't use swap)
sudo docker run --lxc-conf="lxc.cgroup.memory.max_usage_in_bytes=512M" --lxc-conf="lxc.cgroup.memory.limit_in_bytes=512M" -it ubuntu /bin/bash
के हिस्से के रूप स्वैप का उपयोग कर के बीच एक उल्लेखनीय अंतर नहीं है (यदि आप libcontainer के बजाय LXC निष्पादन ड्राइवर के साथ डोकर चलाने की आवश्यकता होगी, जिसका मतलब है) कुल और नहीं - ऊपर से 450 डिग्री तक पहुंचने वाले फू कार्यक्रम को स्वैप करें और फिर धीरे-धीरे शेष का उपभोग करें, जबकि केवल रैम के साथ यह तुरंत मेरे लिए 511 एम तक पहुंच जाएगा।जैसे ही मैं कंटेनर दर्ज करता हूं, कंटेनर की मेमोरी खपत ~ 60 एम पर स्वैप के साथ चिह्नित की जाती है - यह मूल रूप से स्वैप को "उपयोग" के रूप में गिना जाता है। स्वैप के बिना मेरी स्मृति उपयोग जब मैं कंटेनर
एक इसके लिए अनुवर्ती, मैं वर्चुअलाइज्ड सर्वर पर डॉकराइज्ड ऐप्स के बीच कुछ रोचक अंतर देख रहा हूं, जिसमें नंगे-धातु बॉक्स हैं। उदाहरण के लिए, ओओएम जावास्क्रिप्ट को वर्चुअलाइज्ड यूबंटू सर्वर में कंटेनर में जावा सेवा चलाएगा। हालांकि, धातु पर - जावा डॉकर के माध्यम से सेट मेमोरी सीमा का सम्मान कर रहा है। [मुझे अभी तक अच्छे निष्कर्षों के लिए दोनों के बीच कार्यान्वयन विवरण के बारे में पर्याप्त जानकारी नहीं है, बस साझा करना चाहता था] – nerdwaller