问题描述
在安全容器终端中执行 free -h 或 lscpu 命令,查询到的内存和CPU值与容器实际规格不一致(CPU值不一致仅会在X86架构环境中出现)。
问题原因
首先,在安全容器终端中只能查询其所在容器实例的所有容器的内存和CPU资源情况。其次,安全容器存在虚拟机隔离层,其默认规格为1C2G。所以,在安全容器终端中查询到的值,包含所在容器实例中所有容器的实际配置值和隔离层默认规格。
- 当安全容器实例中仅有一个容器时,容器终端查询值=隔离层默认规格+容器实际配置规格。
- 当安全容器实例中有多个容器时,容器终端查询值=隔离层默认规格+所有容器实际配置规格。
例如:在一个安全容器实例中,仅创建一个1C2G的安全容器。在该容器终端中,执行 lscpu 命令查询到的CPU值应该为2(容器实际规格1+隔离层默认规格1),执行 free -h 命令查询到的内存值应该为4(容器实际规格2+隔离层默认规格2)。但是,由于对容器的资源使用已做限制,所以其可用资源仍为1C2G,即容器创建时实际配置的规格。