
云计算与虚拟技术
文章平均质量分 72
rayylee
awk 'BEGIN{O="o"~"o";o="O"=="O";O+=+o;o_+=o""o;for(;++_o!=o_-O;)O_=O_"%c";printf(O_,o_*(o_-o)+O+O,o_*(o_-O)-O,o_*o_,o_*o_,o_*(o_-o)-O,o_*(o_-O)+O,o_*(o_-O)+O,o_-o)}'
展开
-
kvm-dmesg:从宿主机窥探虚拟机内核dmesg日志
kvm-dmesg是一个专门用于从KVM虚拟机中提取内核日志的工具。它提供了与传统的 dmesg 工具类似的功能,但其最大的亮点在于可以跨越虚拟化边界,直接从宿主机获取虚拟机内核的日志信息。原创 2024-11-19 20:48:52 · 793 阅读 · 1 评论 -
Red Hat大佬教你如何使用vhost-user-blk对接spdk或qemu
近期Stefan发布题为“vhost-user-blk:一个快速的用户空间块I/O接口”的视频讲座。讲座涵盖了如何在用户空间通过vhost-user-blk使用块I/O以及相对于网络传输的优势,并介绍一个称为libblkio的客户端库,提供了C和Rust接口。原创 2023-03-02 15:27:26 · 1102 阅读 · 0 评论 -
Linux内核中的c语言:likely()、unlikely()
在Linux内核中,会发现很多likely()和unlikely()的使用。原创 2023-02-23 08:30:36 · 741 阅读 · 0 评论 -
Linux 6.1 正式升级为 LTS 内核,支持到2026年或更长
Linux 6.1被普遍认为是一个长期支持(LTS)的内核,通常情况下,每年的最后一个主要发布系列通常会被提升到LTS状态。Greg Kroah-Hartman作为Linux的稳定维护者,正式承认Linux 6.1为2022年的LTS内核。原创 2023-02-08 21:33:07 · 1596 阅读 · 0 评论 -
dpdk无锁队列rte_ring实现分析
rte_ring的实质是FIFO的无锁环形队列,无锁队列的出队入队操作是rte_ring实现的关键。常用于多线程/多进程之间的通信。ring的特点:无锁出入队(除了cas(compare and swap)操作);多消费/生产者同时出入队。原创 2023-02-03 18:01:59 · 1457 阅读 · 0 评论 -
Linux下大页HugePages与透明大页Transparent HugePages
Linux下的大页分为两种类型:标准大页(Huge Pages)和透明大页(Transparent Huge Pages)。 Huge Pages有时候也翻译成大页/标准大页/传统大页,它们都是Huge Pages的不同中文翻译名而已,顺带提一 下这个,免得有人被这些名词给混淆、误导了。原创 2022-12-21 22:00:12 · 6249 阅读 · 0 评论 -
KVM Forum 2022应该关注的话题
第15届KVM论坛于2022年9月12日至9月14日在爱尔兰都柏林会议中心举行。KVM Forum2022有哪些指的关注的技术,KVM未来发展方向如何,有哪些激动人心的想法,让我们一睹为快。原创 2022-11-04 22:02:39 · 1262 阅读 · 0 评论 -
Virtio1.2 新功能介绍
新版本的virtio1.2规范已经发布了,在1.1版本发布后的三年里,已经积累了相当多的变化。下面列出其中的一些关键部分;关于细节,可以查看具体规范。原创 2022-10-29 22:07:19 · 1385 阅读 · 0 评论 -
Geek新鲜事-初版的Rust支持已合并到Linux内核
初始的 Rust 基础设施代码已合并到 Linux 6.1 内核的主线 Git 代码树中[1]。Linus 在几周前的内核峰会上就已表达过这样的计划 ,人们也普遍预计这会发生,但就在本周末,仍有一些 Linux 用户对 Rust 编程语言支持 Linux 内核的想法持不同意见。不过现在它已经落地了。转载 2022-10-15 16:44:30 · 1020 阅读 · 0 评论 -
Kvmclock存在的问题
Kvmclock是KVM下Linux虚拟机缺省的半虚拟化时钟源,其原理是通过TSC计算出当前的纳秒时间。原创 2022-09-08 19:34:38 · 973 阅读 · 0 评论 -
虚拟磁盘discard在qemu中的应用
对于SSD的操作人们提出了新的需求:需要在数据删除的时候通知硬盘,将数据立即清理掉,在这种需求下,trim指令[1]诞生了,trim指令允许操作系统在SSD上将不再使用的数据通知到SSD底层并在其内部将数据擦除掉。...原创 2022-06-24 22:52:24 · 3509 阅读 · 0 评论 -
ACPI规范概览-2
高级配置与电源接口(Advanced Configuration and Power Interface,ACPI)的应用已经广泛分布在计算机领略的各个细分市场。从手机、笔记本电脑、台式机到工作站和服务器上都可以找到它的身影。从体系架构上来看,不光X86阵营,ARM生态圈也加入进来。...原创 2022-06-23 11:24:04 · 1513 阅读 · 0 评论 -
ACPI规范概览-1
ACPI可以被理解为一个与体系结构无关的电源管理和配置框架,作为OS的一个子系统。这个框架建立了一个硬件寄存器集来定义电源状态(睡眠、休眠、唤醒等)。硬件寄存器集可以兼容专用硬件和通用硬件。标准ACPI框架的主要目的是无需直接从OS本地调用固件进行电源管理和系统配置。ACPI作为操作系统和系统固件之间的接口层。...原创 2022-06-23 11:16:41 · 1860 阅读 · 0 评论 -
x86_64及aarch64架构传参规则
x86_64及aarch64架构下c语言参数传递规则原创 2022-06-07 10:48:37 · 2854 阅读 · 0 评论 -
Harvester云计算超融合基础架构HCI软件
2020年12月17日,业界应用最为广泛的Kubernetes管理平台创建者Rancher Labs(以下简称Rancher)宣布推出全新开源软件Harvester,一个通过Kubernetes构建的超融合基础架构(HCI)软件。Harvester在裸机服务器上提供完全集成的存储和虚拟化功能,无需拥有Kubernetes相关知识,即可轻松上手。值得关注的是,Harvester是一个完全由Rancher中国研发团队设计和开发的开源软件,也是Rancher中国研发团队出色技术实力的有力佐证。原创 2022-04-02 11:21:25 · 3655 阅读 · 0 评论 -
Proxmox支持虚拟机和容器的虚拟化平台
Proxmox VE是可以运行在虚拟机和容器的虚拟化平台。Proxmox VE基于 Debian Linux开发,并且完全开源。出于灵活性的考虑,Proxmox VE同时支持两种虚拟化 技术:KVM 虚拟机和 LXC 容器。Proxmox VE的一个重要设计目标就是尽可能简化管理员的工作。用单机模式使用 Proxmox VE,也可以组建多节点 Proxmox VE集群。所有的管理工作都可以通过基于 web 页面的管理界面完成,即使是一个小白用户也可以在几分钟内上手安装使用 Proxmox VE。Pr.原创 2022-04-02 10:53:34 · 3807 阅读 · 0 评论 -
getrandom() 将在新内核中得到80倍以上的性能提升
随机数生成器代码最近在 WireGuard 的创建者 Jason Donenfeld 领导下进行了多项改进。在 Linux 5.17 中,SHA1 在随机代码中被替换为 BLAKE2,使其性能和安全性得到很大提升。在 Linux 5.18 中他对随机代码作出了更多的改进。Donenfeld 一直在进行更多随机数生成器增强功能,目标是在今年3月底内核合并窗口引入到 Linux 5.18。一个有趣的变化是 getrandom() 系统调用在新内核下可以更快。获取随机数的函数 getrandom() 使用.转载 2022-03-02 22:15:00 · 948 阅读 · 0 评论 -
ceph rbd 常用命令使用
ceph rbd常用命令总结原创 2022-02-24 17:37:08 · 1644 阅读 · 0 评论 -
Linux读写缓存Page Cache
一、 读写缓存Page CacheLinux对文件读写并不是每次都进行磁盘IO,而是将对应的磁盘文件缓存到内存上,之后对该文件的操作实际上也是对内存的读写。缓存俗称页缓存(page cache),而被修改过但还没写入磁盘的页缓存称为脏页(dirty page)。页缓存可以通过/proc/meminfo查看,页缓存为Cached,脏页为Dirty。上图中,红色部分为 Page Cache。Page Cache 的本质是由 Linux 内核管理的内存区域。通过 mmap 以及 buffered I/O原创 2022-02-23 09:51:53 · 2794 阅读 · 1 评论 -
通过qemu调试centos7内核
通过qemu-kvm调试内核/usr/libexec/qemu-kvm -kernel arch/x86/boot/bzImage -initrd initramfs.cpio.gz -s -S -append nokaslr -vnc :0-kernel bzImage:指定内核路径-initrd file:指定initramdisk路径-s:-gdb tcp::1234的缩写, 开启一个gdbserver, 可以通过TCP端口1234连接-S: 启动后立即暂停-append nokasl原创 2022-01-18 21:20:38 · 1004 阅读 · 0 评论 -
libvirt热迁移报Connection refused错误解决办法
通过virsh命令迁移虚拟机virsh migrate --live --verbose testvm qemu+ssh://192.168.10.215/system tcp://192.168.10. 215 --unsafe”–verbose 指迁移demo3虚拟机,192.168.10.215为节点2的IP地址,使用tcp协议连接–unsafe参数表示跳过安全检测提示下面的错误error: unable to connect to server at '192.168.10.215:16原创 2021-12-29 18:36:37 · 1472 阅读 · 0 评论 -
KVM中断虚拟化(二)
PIC虚拟化计算机系统有很多的外设需要服务,显然,CPU采用轮询的方式逐个询问外设是否需要服务,是非常浪费CPU的计算的,尤其是对那些并不是频繁需要服务的设备。因此,计算机科学家们设计了外设主动向CPU发起服务请求的方式,这种方式就是中断。采用中断方式后,在没有外设请求时,CPU就可以继续其他计算任务,而不是进行很多不必要的轮询,极大地提高了系统的吞吐[1] 在每个指令周期结束后,如果CPU关中断标识(IF)没有被设置,那么其会去检查是否有中断请求,如果有中断请求,则运行对应的中断服务程序,然后返回被中断原创 2021-12-01 10:12:38 · 1149 阅读 · 1 评论 -
KVM中断虚拟化(一)
中断是计算机系统中非常重要的部分,计算机基础理论书籍往往也会花上很多篇幅讨论中断,但是因为操作系统都替开发人员处理好中断了,所以除非是系统工程师,否则一般开发人员对中断很难有一个很直观的认识,因此理解如何通过软件的方式来模拟中断更是一个挑战。因此,在本章中,我们简单介绍硬件中断的基本原理,然后结合中断的基本原理讨论如何虚拟化中断芯片。我们从起初IBM PC为单核系统设计的PIC(8259A)机制开始,讨论到为多核系统设计的APIC,一直到绕开I/O APIC、从设备直接向LAPIC发送基于消息的MSI机制原创 2021-12-01 10:00:09 · 4686 阅读 · 0 评论 -
VDUSE(vDPA Device in Userspace)技术简介
VDUSE简介VDUSE(vDPA Device in Userspace)技术是字节跳动2020年10月向 Linux 内核社区正式开源的一项技术,通过VDUSE可以在一个用户进程实现一个软件定义的 vDPA 设备,并可以通过上述 vDPA 框架接入 virtio 或者 vhost 子系统,供容器或者虚机使用。此技术将在Linux 5.15 版本中首次引入。vDPA(virtio data path acceleration)设备是一个使用符合virtio规范的数据路径的设备,具有厂商特定的控制路径原创 2021-10-24 12:04:24 · 2542 阅读 · 0 评论 -
QEMU多进程(Multi-process QEMU)及vfio-user应用
1.Qemu现状-多线程锁竞争2.Qemu现状-项目依赖太多$ readelf -d /usr/bin/qemu-system-x86_64 | grep NEEDED | wc -l60$ ldd /usr/bin/qemu-system-x86_64 | wc -l1583.Qemu现状-代码太过于庞大,大多数是C代码并且增长飞快4.Qemu多进程最终目标5.Qemu多进程原理6.VFIO-User 原理7.VFIO-User通过DMA模拟设备流程8.Qemu多进程支原创 2021-10-22 16:19:15 · 1270 阅读 · 0 评论 -
kvm虚拟机性能调优
kvm虚拟机性能调优kvm性能优化,主要集中在cpu、内存、磁盘、网络,4个方面,当然对于这里面的优化,也是要分场景的,不同的场景其优化方向也是不同的,下面具体聊聊这4个方面的优化细节。1. CPUcpu优化需要搞清楚node、socket、core、logic processor的关系,知道内存、l3-cache、l2-cache、l1-cache和cpu的关系。针对kvm的优化,一般情况,都是通过pin,将vm上的cpu绑定到某一个node上,让其共享l3-cache,优先选择node上的内存,原创 2021-09-26 19:04:57 · 5498 阅读 · 0 评论 -
kvm网卡虚拟化之vdpa技术
以前提到过vdpa,只有mellanox connectx-5网卡,不支持vdpa,公司最近来了mellanox DPU,也就是bluefield-2,自带connectx-6网卡,硬件支持vdpa。1. 需求虚拟机cpu加速有intel vt-x,memory加速有intel ept技术,剩下就是网络和存储io加速,io路径长,网络io路径是虚拟机virtio-ovs-vxlan-host内核协议栈出物理机,存储io是虚拟机virtio-qemu-host内核存储栈到ceph,io大量占用host上的原创 2021-09-26 18:59:36 · 1522 阅读 · 0 评论 -
openvswitch patch port使用方法
一、前言patch port 说明: https://arthurchiao.github.io/blog/ovs-deep-dive-4-patch-port/netdev说明 : https://github.com/openvswitch/ovs/blob/master/Documentation/intro/install/userspace.rst二、OVS patch portovs里的不同bridge之间可以通过patch port进行连接,类似于linux的veth接口。原创 2021-07-20 10:49:32 · 550 阅读 · 0 评论 -
OpenstackNova-KVM性能调优
前言:请勿轻易调优,除非很清楚在干什么KVM 作为 Nova 的虚拟化 Driver,是真正意义上负责虚拟机生命周期管理虚拟化基础设施,所以,如果清楚 KVM 的某些调优参数和策略,就有可能为 Nova 提供调优的基础和入口。Qemu-KVM 负责虚拟机的 CPU、Memory、存储和网络的虚拟化,所以可从该四个方面进行调优。1. CPU Tuning1.1 Cache share tuning对于物理 CPU,同一个 core 的 threads 共享 L2 Cache,同一个 socket.原创 2021-06-17 10:52:29 · 1374 阅读 · 0 评论 -
Libvirt虚拟机的Qos与Cgroup
Linux Control Group 简介 一文介绍了如何使用 cgroup 限制进程的资源:cpu,memory,block IO 和 network IO。在宿主机看来,基于 qemu-kvm 的虚拟机就是一个进程,为了避免某些虚拟机占用过多的资源而影响了其它的虚拟机,业界常用 cgroup 限制虚拟机占用的资源。libvirt 是管理虚拟机的一个重要库,它同样依赖 cgroup 限制虚拟机的资源,本文介绍如何使用 libvirt 限制虚拟机的资源。Limit CPU<domain>原创 2021-06-17 10:32:06 · 1380 阅读 · 0 评论 -
x86构架之-Intel8042键盘控制器简介
1. Intel8042键盘8048芯片,本身就是一个小的处理器,它的内部有自己的处理器,有自己的 ram,有自己的寄存器。i8042 有 4 个 8 bits 的寄存器,他们是:Status Register(状态寄存器)Output Buffer(输出缓冲器)Input Buffer(输入缓冲器)Control Register(控制寄存器)他们使用两个 IO 端口,0x60 和 0x64。2. 各寄存器作用2.1 Status Register(状态寄存器)状态寄存器是一个8位原创 2021-04-29 18:59:05 · 2221 阅读 · 0 评论 -
x86构架之-8250串口寄存器地址及作用
//// 8250寄存器//-------------------------------------------------------------------------------------------//说明:当线路控制寄存器(LCR)的bit7=0 : DLAB=0,允许访问接收/发送及中断允许寄存器// 当线路控制寄存器(LCR)的bit7=1 : DLAB=1,允许访问波特率因子寄存器//---------------------------------------原创 2021-04-29 17:55:05 · 1751 阅读 · 0 评论 -
windows虚拟机qemu进程cpu占有率很高问题解决
1.1 现象在公有云平台,openstack计算节点上,如图Figure-1所示,一台windows虚拟机的qemu-kvm进程116%的占用cpu资源,如图Figure-2所示,该虚拟机仅有一个vcpu。Figure-1:Figure-2:1.2 分析步骤通过下面步骤的分析,了解qemu-kvm进程在忙什么,为什么这么忙?1.2.1 查看进程、线程的状态通过top -d 3 -Hp 5180查看进程,以及该进程的相关线程的状态,分析出哪个线程在忙。如图Figure-3所示: 线程51原创 2021-04-13 17:48:46 · 8854 阅读 · 0 评论 -
如何管理kvm虚拟机的时钟源
概述有很多时钟源可用于硬件虚拟机 (HVM) 实例,例如 Xen、时间戳计数器 (TSC)、高精度事件时间 (HPET) 或高级配置和电源接口规范 (ACPI)。对于windows虚拟机 ,最佳实践是使用 tsc 时钟源。1.列出宿主机时钟源,查看available_clocksource:cat /sys/devices/system/clocksource/clocksource0/available_clocksourcetsc hpet acpi_pm2.将当前时钟源设置为不同的值作原创 2021-04-13 17:00:12 · 2593 阅读 · 0 评论 -
Qemu之CPU mode介绍
1. custom模式KVM关于CPU型号的定义, libvirt对CPU的定义提炼出标准的几种类型在 /usr/share/libvirt/cpu_map/index.xml目录下可以查到, 包含了features和vendors的定义.主要是以下几种CPU型号:'486' 'pentium' 'pentium2' 'pentium3' 'pentiumpro' 'coreduo' 'pentiumpro' 'n270' 'coreduo' 'core2duo' 'qemu32' 'kvm32'原创 2021-03-15 11:33:22 · 5431 阅读 · 0 评论 -
QEMU/KVM原理概述
1. QEMU与KVM 架构qemu 和 kvm 架构整体上分为 3 部分,对应着上图的三个部分 (左上、右上和下),3 部分分别是 VMX root 的应用层,VMX no-root 和 VMX root 的内核层(分别对应着左上、右上和下)VMX root: 宿主机根模式,CPU 在运行包括 QEMU 在内的普通进程和宿主机的操作系统内核时,CPU 处在该模式。VMX no-root: 宿主机非根模式,CPU 在运行虚拟机中的用户程序和操作系统代码的时候处于 VMX no-root 模式注:原创 2021-02-02 14:50:50 · 6676 阅读 · 0 评论 -
CentOS 7虚拟机支持virsh console访问
CentOS 7虚拟机支持virtsh console访问方法:1. 在KVM(客户机)下开机启动并启动服务systemctl enable serial-getty@ttyS0.servicesystemctl start serial-getty@ttyS0.service2. 在宿主机下访问virsh console centos7 ## CentOS7是虚拟机名称提示:进去之后回车多次即可通过账号密码登录,退出执行Ctrl+]...原创 2020-12-22 13:38:12 · 818 阅读 · 0 评论 -
kvm 调试内核方法
1.制作rootfs通过alpine-minirootfs制作rootfs# dd if=/dev/zero of=rootfs.ext4 bs=1G count=20# mkfs.ext4 rootfs.ext4# mkdir -p /mnt/rootfs# mount rootfs.ext4 /mnt/rootfs && cd /mnt/rootfs# wget http://dl-cdn.alpinelinux.org/alpine/latest-stable/rele原创 2020-12-22 11:46:01 · 604 阅读 · 0 评论 -
多核CPU缓存一致性协议MESI
在计算机系统中,CPU高速缓存(英语:CPU Cache)是用于减少处理器访问内存所需平均时间的部件。在金字塔式存储体系中它位于自顶向下的第二层,仅次于CPU寄存器。其容量远小于内存,但速度却可以接近处理器的频率。当处理器发出内存访问请求时,会先查看缓存内是否有请求数据。如果存在(命中),则不经访问内存直接返回该数据;如果不存在(失效),则要先把内存中的相应数据载入缓存,再将其返回处理器。1. CPU高速缓存(Cache Memory)1.1 CPU为何要有高速缓存CPU在摩尔定律的指导下以每18个原创 2020-11-26 17:35:12 · 730 阅读 · 0 评论 -
通过QMP/QGA与虚拟机进行交互
1. QMP介绍qemu对外提供了一个socket接口,称为qemu monitor,通过该接口,可以对虚拟机实例的整个生命周期进行管理,通过该socket接口传递交互的协议是qmp,全称是qemu monitor protocol,基于json格式的协议,主要有如下功能状态查看、变更设备查看、变更性能查看、限制在线迁移数据备份访问内部操作系统2. QMP语法# 不带参数的指令{ "execute" : "XXX" }# 带参数的指令{ "execute" : "XXX", "原创 2020-11-17 10:22:28 · 2341 阅读 · 0 评论