获取安全内存信息

为满足普通侧运维需要,扩展了libvirt virsh命令,支持通过virsh命令查看TEE侧安全内存使用情况。

  1. 执行以下命令通过libvirt获取安全内存信息。
    • 获取粗粒度安全内存信息。
      virsh tmm tmm_memory_info

      获取的信息包含:

      • 有安全内存的NUMA节点数。
      • 具体的节点。
      • 对应节点的总安全内存。
      • 对应节点的空闲安全内存。
      • 对应节点的元数据占用的内存。
      • 对应节点的cVM使用的内存。
    • 获取细粒度安全内存信息。
      virsh tmm tmm_memory_info --detail

      1. 获取的信息:除了粗粒度安全内存信息外,新增对应NUMA节点的各种元数据总数和空闲数以及每个NUMA节点的空闲页表数量。
      2. 每级页面的内存大小对应如下:

      3. 元数据是用来存放机密虚机运行时的必要信息数据对象,其分为预留元数据和拓展元数据。在预留元数据消耗完毕后,会进行元数据拓展,以获得新的元数据使用。
    表1 参数说明

    元数据类型

    消耗规则

    每次拓展大小

    td

    每个虚机消耗1个

    2M

    tec

    每个虚机消耗对应vcpu数量个

    2M

    ttt

    每个虚机消耗66个

    2M

  2. 通过cat内核字符串文件系统获取安全内存信息。
    1. 打印各NUMA安全内存使用情况。
      cat /sys/kernel/tmm/memory_info
    2. 打印各NUMA元数据总数和空闲数。
      cat /sys/kernel/tmm/slab_info
    3. 打印各NUMA空闲页表数。
      cat /sys/kernel/tmm/buddy_info