最近入职到了新的公司,工作重心和方向也慢慢偏向系统性能测试和优化,当然还是以虚拟化环境为主。目前公司产品遇到一些数据库性能方面的问题,针对这些内容做一个统一的研究分析。
libvirt&QEMU 热迁移
迁移虚拟机对云平台来说是一个非常基础的功能,但是虚拟机的迁移中包含了很多细节和限制条件,这些问题都由云平台为我们解决了。想要深入了解虚拟机迁移的过程,那就需要掌握这些细节。
QEMU 迁移 mt 压缩
1 |
|
使用 mt 压缩吞吐量降低。
文件名 | R/W | 用途 |
---|---|---|
Release_agent | RW | 删除分组时执行的命令,这个文件只存在于根分组 |
Notify_on_release | RW | 设置是否执行 release_agent。为 1 时执行 |
Tasks | RW | 属于分组的线程 TID 列表 |
Cgroup.procs | R | 属于分组的进程 PID 列表。仅包括多线程进程的线程 leader 的 TID,这点与 tasks 不同 |
Cgroup.event_control | RW | 监视状态变化和分组删除事件的配置文件 |
QEMU 迁移 xbzrle 压缩
xbzrle 技术可以减少 VM 停机和热迁移的时间,当 VM 存在密集型写内存的工作负载时这种优化尤其明显。对于大型的企业应用如:SAP 和 ERP 系统,或者说任何使用稀疏内存模型的系统来说都有很好的优化作用。
libvirt vm boot 信息重定向
这篇博客要做的事情是,将虚拟机启动时的启动信息传到宿主机上的一个文件中。这个工作本身并不复杂,难点在于 virsh 中对串口设备的封装处理,以及 grub2 中的配置。
若想要好好理解 qemu 重定向串口的做法背后的原理和思想,非常建议先阅读第一章的预备知识。
conserver
Conserver 是一个允许多个用户同时使用一个 serial console 的应用。它能够保存日志,允许用户获取对 console 的写权限(每次一个)。它的思想是记录你 serial 上所有的通信,使得你能够返回去查看是否有什么东西崩溃了。支持多用户的功能,使得你能够和其他人一起工作。
东西是个好东西,但是配置实在是太让人迷惑了。。网上示例还巨少。
Centos7 内核构建
因为工作需求,要修改一下 Centos7 的内核,然后替换原有的内核。因为 Centos7 采用 rpm 包进行管理,因此内核源码也采用这种方式获取,并且编译后的内核也可以打成 rpm 包发布。注:本文参考wiki.centos中构建内核相关的步骤。
网卡多队列
本篇博文介绍一些有关网卡多队列的内容,该文为 zstack 培训 - 性能分析课程笔记 1 的扩展阅读。
网卡多队列源自于网络 QoS 问题,网络 QoS 问题提出的队列模型,对 I/O 的开发以及网络性能的调优具有很大的指导意义。
第一节的网络 QoS 给出原理及算法的指导;
第二节讲诉在驱动和内核中是如何调度这些队列的。
性能分析课程笔记 1
zstack 最近想要在性能优化上有所动作,所以大牛们给我们这些小渣渣搞了的个性能分析的培训课程。这篇博客是我自己对课程内容的思考和总结,其中还包括了一些扩展内容。注:本文内容主要来自于ZStack内部的性能分析课程。
第一节课并没有涉及到具体的性能分析操作或者实践,所讲的东西比较形而上学,比较抽象。但是却能够为我们提供一些新的思维方式,对我们之后的生活学习都会有一些帮助。
搭建 Debian 仓库
Debian 仓库本质上就是把一堆*.deb 包放到一个文件夹,在此基础上,为了方便 apt 工具的管理,将这些 deb 包按照一定的规则存放,并额外提供一些元数据文件来协助 apt 工具快速地访问 deb 包。
Debian 仓库支持通过不同的协议访问,如 http 协议、ftp 协议或者普通的 file 访问。所有访问的目录只需要满足debian 仓库格式即可。