54 KVM工具使用指南-vmtop使用指南

news2024/11/24 2:03:19

文章目录

    • 54 KVM工具使用指南-vmtop使用指南
      • 54.1 概述
        • 54.1.1 多架构支持
        • 54.1.2 显示项说明
          • 54.1.2.1 AArch64和x86_64架构公共显示项
          • 54.1.2.2 仅AArch64架构的显示项
          • 54.1.2.3 仅x86_64架构的显示项
      • 54.2 使用方法
        • 54.2.1 语法格式
        • 54.2.2 选项说明
        • 54.2.3 快捷键
      • 54.3 示例

54 KVM工具使用指南-vmtop使用指南

54.1 概述

vmtop 是运行在宿主机host上的用户态工具。使用vmtop可以实时动态地查看虚拟机资源的使用情况,例如CPU占用率、内存占用率、vCPU陷入陷出次数等。因此,可以使用vmtop作为虚拟化问题定位和性能调优的工具。

54.1.1 多架构支持

当前vmtop支持AArch64和x86_64处理器架构。

54.1.2 显示项说明

不同处理器架构的操作系统,vmtop的显示项存在差异,这里给出各个显示项的含义及其是否在对应架构呈现。 说明:以下采样差是指指定时间间隔内获取的两次数据的差值。

54.1.2.1 AArch64和x86_64架构公共显示项
  • VM/task-name: 虚拟机/进程名称
  • DID: 虚拟机id
  • PID: 虚拟机qemu进程的pid
  • %CPU: 进程的CPU占用率
  • EXTsum: kvm exit总次数(采样差)
  • S: 进程状态
  • P: 进程所占用的物理CPU号
  • %ST: 被抢占时间与cpu运行时间的比
  • %GUE: 虚拟机内部占用时间与CPU运行时间的比
  • %HYP: 虚拟化开销占比
54.1.2.2 仅AArch64架构的显示项
  • EXThvc: hvc-exit次数(采样差)
  • EXTwfe: wfe-exit次数(采样差)
  • EXTwfi: wfi-exit次数(采样差)
  • EXTmmioU: mmioU-exit次数(采样差)
  • EXTmmioK: mmioK-exit次数(采样差)
  • EXTfp: fp-exit次数(采样差)
  • EXTirq: irq-exit次数(采样差)
  • EXTsys64: sys64 exit次数(采样差)
  • EXTmabt: mem abort exit次数(采样差)
54.1.2.3 仅x86_64架构的显示项
  • PFfix: 缺页次数(采样差)
  • PFgu: 向guest OS注入缺页次数(采样差)
  • INvlpg: 冲刷tlb某项次数(tlb其中一项,并不固定)
  • EXTio: io VM-exit次数(采样差)
  • EXTmmio: mmio VM-exit次数(采样差)
  • EXThalt: halt VM-exit次数(采样差)
  • EXTsig: 信号处理引起的VM-exit次数(采样差)
  • EXTirq: 中断引起的VM-exit次数(采样差)
  • EXTnmiW: 处理不可屏蔽中断引起的VM-exit次数(采样差)
  • EXTirqW: interruptwindow机制,开启中断使能时exit,以便注入中断(采样差)
  • IrqIn: 注入irq中断次数(采样差)
  • NmiIn: 注入nmi中断次数(采样差)
  • TLBfl: 冲刷整个tlb次数(采样差)
  • HostReL: 重载主机状态次数(采样差)
  • Hyperv: 模拟Guest操作系统辅助虚拟化调用hypercall的处理次数(采样差)
  • EXTcr: 访问CR寄存器退出次数(采样差)
  • EXTrmsr: 读msr退出次数(采样差)
  • EXTwmsr: 写msr退出次数(采样差)
  • EXTapic: 写apic次数(采样差)
  • EXTeptv: Ept缺页退出次数(采样差)
  • EXTeptm: Ept错误退出次数(采样差)
  • EXTpau: Vcpu暂停退出次数(采样差)

54.2 使用方法

vmtop是一款命令行工具,直接以命令行的方式运行 vmtop 即可。 另外,vmtop还提供了不同可选选项,用于查询不同信息。

54.2.1 语法格式

# vmtop [选项]

54.2.2 选项说明

  • -d: 设置显示刷新的时间间隔,单位:秒
  • -H: 显示虚拟机的线程信息
  • -n: 设置显示刷新的次数,刷新完成后退出
  • -b: Batch模式显示,可以用于重定向到文件
  • -h: 显示帮助信息
  • -v: 显示版本
  • -p: 监控指定id的虚拟机

54.2.3 快捷键

在vmtop运行状态下使用的快捷键

  • H: 显示或关闭虚拟机线程信息,默认显示该信息
  • up/down: 向上/向下移动显示的虚拟机列表
  • left/right: 向左/向右移动显示的信息,从而显示因屏幕宽度被隐藏的列
  • f: 进入监控项编辑模式,选择要开启的监控项
  • q: 退出vmtop进程

54.3 示例

在host上直接以命令行的方式运行vmtop

# vmtop

输出如下:

vmtop - 2022-09-14 09:54:48 - 1.0
Domains: 1 running

  DID  VM/task-name     PID  %CPU    EXThvc    EXTwfe    EXTwfi  EXTmmioU  EXTmmioK     EXTfp    EXTirq  EXTsys64   EXTmabt    EXTsum    S    P   %ST  %GUE  %HYP
    2       example 4054916  13.0         0         0      1206        10         0       144        62       174         0      1452    S  106   0.0  99.7  16.0

可以看到,host上只有一台名称为“example”的虚拟机,ID为2,CPU占用率是13.0%,在1秒内的陷入陷出总次数是1452,虚拟机进程占用的物理CPU为106号CPU,虚拟机内部占用时间与CPU运行时间的比是99.7%。

1.显示虚拟机线程信息 按下‘H’后可以显示线程信息:

# vmtop - 2022-09-14 10:11:27 - 1.0
Domains: 1 running

  DID  VM/task-name     PID  %CPU    EXThvc    EXTwfe    EXTwfi  EXTmmioU  EXTmmioK     EXTfp    EXTirq  EXTsys64   EXTmabt    EXTsum    S    P   %ST  %GUE  %HYP
    2       example 4054916  13.0         0         0	   1191        17         4       120        76       147         0      1435    S  119   0.0 123.7   4.0
   |_      qemu-kvm 4054916   0.0         0         0         0         0         0         0         0         0         0         0    S  119   0.0   0.0   0.0
   |_      qemu-kvm 4054928   0.0         0         0         0         0         0         0         0         0         0         0    S  119   0.0   0.0   0.0
   |_  signalfd_com 4054929   0.0         0         0         0         0         0         0         0         0         0         0    S  120   0.0   0.0   0.0
   |_  IO mon_iothr 4054932   0.0         0         0         0         0         0         0         0         0         0         0    S  117   0.0   0.0   0.0
   |_     CPU 0/KVM 4054933   3.0         0         0       280         6         4        28        19        41         0       350    S  105   0.0  27.9   0.0
   |_     CPU 1/KVM 4054934   3.0         0         0       260         0         0        16        12        36         0       308    S   31   0.0  20.0   0.0
   |_     CPU 2/KVM 4054935   3.0         0         0       341         0         0        44        20        26         0       387    R  108   0.0  27.9   4.0
   |_     CPU 3/KVM 4054936   5.0         0         0       310        11         0        32        25        44         0       390    S  103   0.0  47.9   0.0
   |_   memory_lock 4054940   0.0         0         0         0         0         0         0         0         0         0         0    S  126   0.0   0.0   0.0
   |_    vnc_worker 4054944   0.0         0         0         0         0         0         0         0         0         0         0    S  118   0.0   0.0   0.0
   |_        worker 4143738   0.0         0         0         0         0         0         0         0         0         0         0    S  120   0.0   0.0   0.0

example虚拟机有11个线程,其中包括vCPU线程、vnc_worker、IO mon_iotreads等等,每个线程同样会显示详细CPU占用、陷入陷出等信息。

2.选择监控项 按下‘f’进入监控项编辑模式:

field filter - select which field to be showed
Use up/down to navigate, use space to set whether chosen filed to be showed
'q' to quit to normal display

 * DID
 * VM/task-name
 * PID
 * %CPU
 * EXThvc
 * EXTwfe
 * EXTwfi
 * EXTmmioU
 * EXTmmioK
 * EXTfp
 * EXTirq
 * EXTsys64
 * EXTmabt
 * EXTsum
 * S
 * P
 * %ST
 * %GUE
 * %HYP

当前所有监控项都默认显示,通过up/down键选择,用space键来设置对应显示项是否显示/隐藏,按‘q’键退出。 将%ST、%GUE、%HYP设置为隐藏后,输出如下:

vmtop - 2022-09-14 10:23:25 - 1.0
Domains: 1 running

  DID  VM/task-name     PID  %CPU    EXThvc    EXTwfe    EXTwfi  EXTmmioU  EXTmmioK     EXTfp    EXTirq  EXTsys64   EXTmabt    EXTsum    S    P
    2       example 4054916  12.0         0         0	   1213        14         1       144        68       168         0      1464    S  125
   |_	   qemu-kvm 4054916   0.0         0         0         0         0         0         0         0         0         0         0    S  125
   |_	   qemu-kvm 4054928   0.0         0         0         0         0         0         0         0         0         0         0    S  119
   |_  signalfd_com 4054929   0.0         0         0         0         0         0         0         0         0         0         0    S  120
   |_  IO mon_iothr 4054932   0.0         0         0         0         0         0         0         0         0         0         0    S  117
   |_     CPU 0/KVM 4054933   2.0         0         0       303         6         0        29        10        35         0       354    S   98
   |_     CPU 1/KVM 4054934   4.0         0         0       279         0         0        39        17        49         0       345    S    1
   |_     CPU 2/KVM 4054935   3.0         0         0       283         0         0        33        20        40         0       343    S  122
   |_     CPU 3/KVM 4054936   3.0         0         0       348         8         1        43        21        44         0       422    S  110
   |_   memory_lock 4054940   0.0         0         0         0         0         0         0         0         0         0         0    S  126
   |_    vnc_worker 4054944   0.0         0         0         0         0         0         0         0         0         0         0    S  118
   |_        worker    1794   0.0         0         0         0         0         0         0         0         0         0         0    S  126

%ST、%GUE、%HYP将不会出现在显示界面上。

👍 点赞,你的认可是我创作的动力!

⭐️ 收藏,你的青睐是我努力的方向!

✏️ 评论,你的意见是我进步的财富!

image-20230409094038788

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/671627.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MSP432学习笔记10:串口接收字符串命令并执行任务

今日终于得以继续我的MSP432电赛速通之路: 串口通信是单片机需要学习深入的一个很重要的板块,通过串口,我们可以实现许多数据收发与调试工作,可谓是非常方便快捷。 今日就跟随我的脚步,逐步扎实地学习如何编程MSP432…

2023-06-21:redis中什么是BigKey?该如何解决?

2023-06-21:redis中什么是BigKey?该如何解决? 答案2023-06-21: 什么是bigkey bigkey是指存储在Key-Value数据库中的键对应的值所占用的内存空间较大。举个例子,如果值是字符串类型,它可以达到最大512MB的…

堆体系结构概述

1、逻辑概述 2、堆会出现的异常 3、物理上划分 (1)新生区 新生区是类的诞生、成长、消亡的区域,一个类在这里产生,应用,最后被垃圾回收器收集,结束生命。新生区又分为两部分: 伊甸区&#xff0…

Goby 漏洞发布|WordPress User Post Gallery 插件 upg_datatable 远程代码执行漏洞(CVE-2022-4060)

漏洞名称:WordPress User Post Gallery 插件 upg_datatable 远程代码执行漏洞(CVE-2022-4060) English Name:WordPress plugins User Post Gallery upg_datatable RCE Vulnerability (CVE-2022-4060) CVSS core: 9.8 影响资产数…

Observability:如何把 Elastic Agent 采集的数据输入到 Logstash 并最终写入到 Elasticsearch

在之前的文章 “安装独立的 Elastic Agents 并采集数据 - Elastic Stack 8.0”,我们详述了如何使用 No Fleet Server 来把数据写入到 Elasticsearch 中。在今天的文章中,我们来详述如下使用 Elastic Agents 在独立(standalone)模式…

Gradio Blocks:自定义交互式Web应用和演示

❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️ 👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博…

GitPySearch: 全局Python代码搜索工具

一 、背景 在某些情况下,我们需要快速了解哪些项目包含特定的配置,例如使用了fastjson库或数据库的连接配置。然而,在GitLab上逐个代码仓库进行搜索是非常耗时的。为了提高效率,我们开发了一个Python脚本工具,用于实现…

PostgreSQL的优势:为何它成为主流数据库管理系统

PostgreSQL的优势:为何它成为主流数据库管理系统 Stack Overflow 2023年报告PostgreSQL和MySQL同异我们在开发中如何选择PostgreSQL和MySQL呢? 摘要:本文主要比较了PostgreSQL和MySQL这两个流行的关系型数据库管理系统。我们首先介绍了它们的…

屏蔽箱的材质结构和使用事项介绍

屏蔽箱是一种用于屏蔽机电波干扰的设备,通常用于电磁兼容测试、天线测试、短波收发等需要屏蔽电磁辐射噪声的场合。这种箱子通常由导电或者导磁材料制成,内部配备高效屏蔽材料,能够在一定范围内有效地屏蔽电磁波辐射,避免电磁波干…

详细介绍mysql索引类型

目录 Normal 普通索引Unique 唯一索引Full Text 全文索引SPATIAL 空间索引btree索引和hash索引的区别在实际操作过程中,应该选取表中哪些字段作为索引? Normal 普通索引 表示普通索引,大多数情况下都可以使用 Unique 唯一索引 表示唯一的&…

Linux内核内存管理源码分析之init-mm.c(2)

接前一篇文章:Linux内核内存管理源码分析之init-mm.c(1) 本文内容参考:https://www.cnblogs.com/mysky007/p/12317831.html 上回说到了swapper_pg_dir和init_top_gpt。再次给出内核源码中init_top_gpt的说明,在Documen…

【基础】MQTT -- MQTT 特性:QoS、Retained 消息、LWT 以及 Keepalive

MQTT -- MQTT 特性:QoS、Retained 消息、LWT 以及 Keepalive QoS 及其最佳实践MQTT 协议中的 QoS 等级QoS 0QoS 1PUBACK 数据包 QoS 2PUBREC 数据包PUBREL 数据包PUBCOMP 数据包 实际的订阅者 QoSQoS 的最佳实践QoS 与会话QoS 的选择 Retained 消息LWT 遗嘱消息Keep…

FPGA_学习_12_IP核_FIFO

FIFO(Frist Input Frist Output),即先入先出,也是一种存储器,一般做数据缓冲。FIFO和 RAM的共同点在于都能存储数据、都有控制写和读的信号;不同点在于 FIFO 没有地址,所以不能任意指定读取某一个数据,数据只能按照数据…

一个女孩从软件测试工程师到主管的成长

说实话,我做测试工作的时间不是很长,学完软件测试工程师的课程后,到现在也就是一年多的时间吧,不过,我愿意自己学习和工作中积累起的这些点滴与大家分享。 如果你想学习自动化测试,我这边给你推荐一套视频…

C语言之程序环境和预处理(1)

本章主要以图片和文字的形式给大家讲解 程序的翻译环境和程序的执行环境 在ANSI C的任何一种实现中,存在两个不同的环境。 第1种是翻译环境,在这个环境中源代码被转换为可执行的机器指令。 第2种是执行环境,它用于实际执行代码 2. 详解编译…

东南亚骑行类目热销品出炉!Shopee/Lazada跨境卖家有哪些优势产品可做?

菲律宾/巴西是Lazada/Shopee骑行品类卖家体量最大的2个站点,新加坡/越南/马来西亚紧随其后. 体量:在东南亚,菲律宾与新加坡对骑行的需求最强烈,其次是越南,三地总订单占总体70%以上,在南美地区&#xff0c…

Revit碰撞检查:Navisworks“复合对象碰撞”的使用

一、Navisworks 中碰撞检查中“复合对象碰撞”有什么用? 通常情况下我们使用 Revit 做好了模型,然后使用 Navisworks这款软件进行碰撞检查等优化工作。因为 Navisworks 相对于 Revit的软件数据要“轻”很多,可以让多专业的模型都在一起导入来进行全专业…

对接口进行限流?

在高并发的情况下,我们可以把消息放入队列,在从队列消费,达到限流的目的。但这里说的限流指的是当我们请求其他服务器接口,防止高并发下把对面服务器压垮,于是对我们要求每秒限制在100QPS。 如果使用springCloud可以用…

准备换工作跳槽面试人一定要看的的18条忠告

1、如果想好要跳槽就别犹豫,不用纠结太多外在因素,很多事情只有去做了才知道。(当然,如果你是非某家公司不可的话,那可以慢慢等待机会) 2、关于跳槽的渠道,主要有四种:直接被公司挖…

测试自动化的演进,从录制回放到对象映射

概要:在短时间的市场化和短期冲刺的文化中,测试人员通过使用测试自动化实践和工具保持同步是至关重要的。本文跟踪从基于脚本的测试与硬编码数据到自动化框架的转变,探索测试自动化的开始和到今天的演变 - 并且可能的未来走向。 今天的软件市…