docker stats 输出与 top 输出有何关系?

Tom*_*don 6 top memory-usage docker

我有一个进程在 Linux 上的 Docker 容器中运行,内存限制为 2GByte。(容器以 开头docker run --memory=2g。)

以下是top它运行一段时间后的情况。

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
 9016 root      20   0 7342132 4.652g 4.224g S 100.0  7.4  18828:28 blah
Run Code Online (Sandbox Code Playgroud)

这是输出docker stats

CONTAINER           CPU %               MEM USAGE/LIMIT     MEM %               NET I/O
d7032e5928b6        100.02%             2.076 GB/2.147 GB   96.68%              345 MB/199.1 MB
Run Code Online (Sandbox Code Playgroud)

然后,重新启动后top

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
 5653 root      20   0 2787800 1.328g 1.030g S 100.0  2.1   0:37.57 blah
Run Code Online (Sandbox Code Playgroud)

docker stats:

CONTAINER           CPU %               MEM USAGE/LIMIT     MEM %               NET I/O
10cefdce241f        99.97%              320.4 MB/2.147 GB   14.92%              36.34 kB/22.48 kB
Run Code Online (Sandbox Code Playgroud)

所以这与(非常粗略地)匹配RES-SHR,这对我来说有一定意义 - 但长期运行容器的输出的等效计算并不以相同的方式匹配。

Docker 到底在算什么?top我可以将其与或其他工具的输出进行匹配吗 ?

小智 0

docker stats 还包括文件缓存内存。它将根据请求被释放,但被计为已使用。