使用vshere Mangement SDK6.5 查询虚拟机CPU利用率和内存利用率

本文介绍如何使用vSphere Management SDK 6.5来查询特定虚拟机的CPU利用率和内存利用率。通过示例代码展示了获取虚拟机配置信息、性能指标的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用vshere Mangement SDK6.5 查询虚拟机CPU利用率和内存利用率

public OssVm getVmByUuid(final String uuid, final String ip) throws Exception {
        final Connector conn = Connector.getConnector(ip);
        final ObjectRetriever objRef = new ObjectRetriever(conn);
        final ServiceContent serviceContent = objRef.getServiceContent();
        final OssVm ossVm = new OssVm();
        try {
            final ManagedObjectReference vmMor = VMwareUtil.getVmMor(uuid, objRef);
            final String vmUuid = VMwareUtil.composeObjectUuid(getIdByIp(ip), vmMor.getValue());
            ossVm.setUuid(vmUuid);
            ossVm.setName(objRef.getSingleProperty("name", vmMor));
            final VirtualMachineConfigInfo config = (VirtualMachineConfigInfo) objRef.getObjectProperty(vmMor, "config");
            final VirtualMachineSummary summary = (VirtualMachineSummary) objRef.getObjectProperty(vmMor, "summary");
            final VirtualMachineStorageSummary virtualMachineStorageSummary = summary.getStorage();
            final VirtualMachineGuestSummary guest = summary.getGuest();
            final ManagedObjectReference perfManger = serviceContent.getPerfManager();
            ossVm.setOs(guest.getGuestFullName());
            ossVm.setIp(guest.getIpAddress());
            ossVm.setVmToolStatus(VMwareUtil.getVmToolStatus(guest));
            ossVm.setUseSize(virtualMachineStorageSummary.getCommitted() / 1073741824L);
            ossVm.setFreeSize(virtualMachineStorageSummary.getUncommitted() / 1073741824L);
            ossVm.setSize(ossVm.getFreeSize() + ossVm.getUseSize());
            ossVm.setLongUuid(config.getUuid());
            ossVm.setVcpu(config.getHardware().getNumCPU());
            ossVm.setVmemory((long) config.getHardware().getMemoryMB());
            List<PerfQuerySpec> perfQuerySpecList = new ArrayList<>();
            PerfQuerySpec perfQuerySpec = createPerfQuerySpec(vmMor, 1, 20, "csv");
            perfQuerySpecList.add(perfQuerySpec);
            List<PerfEntityMetricBase> perfEntityMetricList = conn.getVimPort().queryPerf(perfManger, perfQuerySpecList);
            for (int i = 0; i < perfEntityMetricList.size(); i++) {
                PerfEntityMetricCSV perfEntityMetricCSV = (PerfEntityMetricCSV) perfEntityMetricList.get(i);
                List<PerfMetricSeriesCSV> perfMetricSeriesCSVList = perfEntityMetricCSV.getValue();
                List<Integer> perfCounterIdList = new ArrayList<>();
                for (PerfMetricSeriesCSV perfMetricSeriesCSV : perfMetricSeriesCSVList) {
                    perfCounterIdList.add(perfMetricSeriesCSV.getId().getCounterId());
                }
                List<PerfCounterInfo> perfCounterInfoList = conn.getVimPort().queryPerfCounter(perfManger, perfCounterIdList);
                for (int n = 0; n < perfMetricSeriesCSVList.size(); n++) {
                    String strName = perfCounterInfoList.get(n).getNameInfo().getKey();
                    String groupName = perfCounterInfoList.get(n).getGroupInfo().getKey();
                    if (null != groupName && groupName.equals("mem")) {
                        if (strName.equals("consumed")) {
                            long memoryUsage = (Integer.parseInt(perfMetricSeriesCSVList.get(n).getValue())/1024*100)/ossVm.getVmemory();
                            ossVm.setMemoryUsage((int)memoryUsage);
                        }
                    }else if (null != groupName && groupName.equals("cpu")){
                        if (strName.equals("usagemhz")){
                            ossVm.setCpuUsage(Integer.parseInt(perfMetricSeriesCSVList.get(n).getValue()));
                        }
                    }
                }
            }
            return ossVm;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return ossVm;
    }

其中一部分使用的是自定义的类,主要用来记录查询cpu利用率和内存利用率的代码
官方API地址

### AUTOSAR Classic Platform NVM Management Types AUTOSAR Classic Platform 中的 NVRAM 管理模块(NvM)负责处理非易失性数据存储的操作。这些操作主要包括写入、读取以及管理非易失性内存的数据对象。以下是基于 AUTOSAR 标准定义的主要 NVM 管理类型[^1]: #### 数据块类型 - **NvM Block**: 这是最基本的非易失性数据单元,表示一块可以被持久化到非易失性存储器中的数据区域。每一个 NvM 块都有其特定的功能属性配置参数。 #### 存储请求类型 - **Immediate Write Requests**: 请求立即执行写入操作至非易失性存储器中[^2]。这种类型的请求通常用于关键数据的快速保存。 - **Deferred Write Requests**: 推迟写入请求直到满足某些条件后再实际执行写入动作。这种方式有助于优化性能并减少频繁访问硬件带来的开销。 #### 错误恢复机制支持级别 - **No Error Recovery Support**: 不提供任何错误恢复功能,在发生故障时不尝试修复受损数据。 - **Limited Error Recovery Support with Redundancy Information Stored Separately from Main Data Area**: 提供有限度的错误恢复能力,并且冗余信息会被单独存放在主数据区之外的位置以便于检测与纠正可能存在的问题。 - **Full Error Recovery Support Including Cyclic Redundancy Check (CRC)**: 完整的支持包括循环冗余校验在内的多种技术手段来保障数据完整性及可靠性。 ```c typedef enum { NVM_BLOCK_TYPE_DEFAULT, /* Default block type */ NVM_BLOCK_TYPE_CONFIGURABLE /* Configurable block type */ } NvmBlockType; ``` 上述代码片段展示了如何通过枚举定义不同的 NvM 块类型。这允许开发者根据不同需求选择合适的实现方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值