2017-04-24 2 views
1

Ich habe 85 Container erstellt, und alle Container laufen .net Kernapplikations-Image auf meinem Linux-Rechner. Mein REST-Aufruf für alle Container ist gleich, aber der von jedem Container verwendete Speicher ist unterschiedlich.Wie wird die Speichernutzung von Prozessen abgerufen, die im Andock-Container ausgeführt werden?

Dies ist, was ich nicht verstehe, warum der Speicher verwendet wird, ist anders, da alle Container laufen das gleiche Bild, und REST-Aufruf ist auch gleich.

ich in der Lage bin Speicher durch einen Behälter verwendet, zu erhalten, durch folgende Weise mit:

1) Docker Statistik

CONTAINER- 7827fe8127eb 

CPU - 0.00% 

MEM USAGE/LIMIT - 67.1MiB/7.666GiB 

MEM % - 0.85%  

NET I/O - 76.4kB/6.19kB  

BLOCK I/O - 42.7MB/0B 

Von oben Statistiken Ich weiß, die von meinem Behälter verwendeten Speicher ist 67,1 MB

2) Dann ging ich in den Container und versuchte herauszufinden, die laufenden Prozesse und Speicher von diesen Prozessen verwendet.

docker exec -i -t 7827fe8127eb /bin/bash 
top 

enter image description here

Jetzt von "Docker Statistiken" erhalten stats sagt, Container Speicher 67 MB, aber was ist dann der Speicher durch dotnet Prozess verwendet?

Bietet "RES" Spaltenwert Prozessspeicher? Wie RES Größe ist 92,70 MB, die größer als Container-Speicher ist.

3) Ich verwendete Docker Motor API, um Container-Statistiken zu erhalten. Aber mir ist nicht genau bekannt, welche Eigenschaft den Containerspeicher angibt.

"memory_stats": { 
    "usage": 72302592, 
    "max_usage": 84365312, 
    "stats": { 
     "active_anon": 47865856, 
     "active_file": 6664192, 
     "cache": 24477696, 
     "dirty": 4096, 
     "hierarchical_memory_limit": 9223372036854772000, 
     "inactive_anon": 8450048, 
     "inactive_file": 9318400, 
     "mapped_file": 16236544, 
     "pgfault": 118960, 
     "pgmajfault": 104, 
     "pgpgin": 120339, 
     "pgpgout": 105242, 
     "rss": 47824896, 
     "rss_huge": 8388608, 
     "total_active_anon": 47865856, 
     "total_active_file": 6664192, 
     "total_cache": 24477696, 
     "total_dirty": 4096, 
     "total_inactive_anon": 8450048, 
     "total_inactive_file": 9318400, 
     "total_mapped_file": 16236544, 
     "total_pgfault": 118960, 
     "total_pgmajfault": 104, 
     "total_pgpgin": 120339, 
     "total_pgpgout": 105242, 
     "total_rss": 47824896, 
     "total_rss_huge": 8388608, 
     "total_unevictable": 4096, 
     "total_writeback": 0, 
     "unevictable": 4096, 
     "writeback": 0 
    }, 
    "limit": 8231383040 
}, 

Wie ich nicht finden kann, 67,1 MB hier auch.

Erstens möchte ich wissen, durch den Speicher von jedem Container verwendet wird, ist anders, da sie dasselbe Bild ausgeführt werden, und REST-Vorgang durchgeführt wird, ist auch gleich.

Einige Container haben eine Kapazität von bis zu 93MB, also müssen Sie wissen, welcher Containerprozess tatsächlich den maximalen Speicher verbraucht?

Antwort

1

Wenn jeder Docker /proc/ wie üblich montiert hat (siehe proc(5) ...) Sie es verwenden könnten (zum Beispiel Laufen pmap(1), etc ...)

Verwandte Themen