文章目录
为什么要性能监视
- 可以了解服务器的工作负荷以及对服务器资源的影响
- 可以了解性能的改变和性能趋势以便及采取措施
- 测试调整结果
- 诊断系统问题并确定优化措施
分析性能数据确定系统瓶颈(建立性能基线)
#服务器性能监视的最佳策略
建立性能日志
尽量减少性能监视本身对服务器所造成的影响
分析监视结果,建立性能基线
创建警报
调整系统
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
如果文章对你有帮助,欢迎点击上方按钮打赏作者
暂无评论