KVM进阶之(一)KVM性能监视与优化

为什么要性能监视

  1. 可以了解服务器的工作负荷以及对服务器资源的影响
  2. 可以了解性能的改变和性能趋势以便及采取措施
  3. 测试调整结果
  4. 诊断系统问题并确定优化措施

分析性能数据确定系统瓶颈(建立性能基线)

#服务器性能监视的最佳策略
    建立性能日志
    尽量减少性能监视本身对服务器所造成的影响
    分析监视结果,建立性能基线
    创建警报
    调整系统
        scale Up
        scale Out
    分析性能趋势,提前采取措施

#监视工具
    你熟悉的,容易得到的,针对四大资源子系统
    监视linux性能的18个命令行工具

#优化重点:存储 与 网络

CPU优化

#cpu有user 和sys两种状态(用户态和内核态)

    若是跑了虚拟机还分
    vm-user vm-sys      p-user p-sys
    #虚拟机用户态,内核态 物理机用户态,内核态

#用mpstat 进行查看

    NUMA
    centos7默认启用了numa
    限制某个虚拟机运行到某个cpu上,可以使用钉选功能,独占cpu

#优化思想(绑定)
    一般L2是在一个物理cpu的多个核上共享的,若是有多个物理cpu,为了避免qemu调度到其他物理CPU上导致缓存失效,延长中断时间,可以将为某个虚拟机的qemu进程绑定到某个指定的物理CPU上(为什么可以绑定,为什么绑定后可以提升性能,因为一个虚拟机就是一个qemu进程,所有可以绑定,为什么能提升性能,上面已经解释了)

    方法:taskset -cp 0 2016           #-p表示进程的pid,-c指定cpu的列表

MEM优化

DMA:直接内存访问
KSM:内存合并,他会周期地扫描内存,会将内存副本中一样的东西,合并只保留一份,多用在私有云上,跑的业务相近或相似的,当在共有云上建议关闭,因为公有云业务复杂,而且ksm扫描也会耗用cpu资源

1:不建议多分配内存(需要多少分多少)
2:大页内存和透明页内存

大页内存:大页内存是不会被交换出去的
    cat /proc/meminfo | grep HugePages  #查看内存信息(过滤大页内存)
    修改大页内存
        ????

减少对swap的使用
    cat /proc/sys/vm/swappiness     #查看swap的使用权重,默认是60,将其改小可以减少系统对swap的使用
    修改系统对swap的使用权重值
        vim /etc/sysctl.conf
        vm.swappiness=10

        刷新生效sysctl -p

网络优化

1:使用多个网络避免单一网络过载(多网分离,业务,管理,心跳,bond)
2:调整MTU,通过提高最大传输单元值,可以减少碎片(网络设备也需要调整)
3:使用arp_filter 阻止ARP Flux
    运行 echo 1 > /proc/sys/net/ipv4/conf/all/arp_filter
    或者编辑/etc/sysctl.conf让重启设置也能生效

4:virtio和vhost_net  (若是windows虚拟机,尽量不要使用rt8139)
    vhost_net将部分virtio驱动重用户空间移至kernel
    这将减少复制操作,降低延迟和CPU占用量

5:设备分配和Single Root -IOV(将物理网卡直接分配给虚拟机,但是设备迁移时会受限,不能分配给多个虚拟机)
    设备分配使整个设备在客户机中可用
    SR-IOV需要驱动和硬件中的支持,实现最低延迟(需要硬件支持)

6:桥接零复制传输(Bridge Zero Copy Transmit)

7:多队列virtio-net

存储优化(有磁盘文件和lvm块设备,这里的优化对磁盘文件来说更多些)

1:磁盘I/O节流
    避免虚拟机过度使用共享资源,并防止影响其他虚拟机性能
    可通过virtual-manager或virsh来进行配置 IO Tuning
    比如:将虚拟机中的vda节流至 I/O 每秒1000 ,吞吐量每秒50MB
        virsh blkdeviotune testvm vda --total-iops-sec 1000 --total-bytes-sec 52428800

2:缓存
    none
    writethrough
    writeback
    directsync
    unsafe
    default

3:I/O模式
    native
    threads
    default:centos7默认为线程模式

4:块I/O调整
    weight
    device-weights
    config
    live
    current

5:多队列 virtio-scsi
声明:本文为原创,作者为 辣条①号,转载时请保留本声明及附带文章链接:https://boke.wsfnk.com/archives/260.html
谢谢你请我吃辣条谢谢你请我吃辣条

如果文章对你有帮助,欢迎点击上方按钮打赏作者

最后编辑于:2022/12/4作者: 辣条①号

现在在做什么? 接下来打算做什么? 你的目标什么? 期限还有多少? 进度如何? 不负遇见,不谈亏欠!

暂无评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

arrow grin ! ? cool roll eek evil razz mrgreen smile oops lol mad twisted wink idea cry shock neutral sad ???

文章目录