8.21
Launch an instance from an image
$ openstack server create --flavor 1 --image 397e713c-b95b-4186-ad46-6126863ea0a9 \ --security-group default --key-name KeyPair01 --user-data cloudinit.file \ myCirrosServer
Launch an instance from a volume
$ openstack volume create --size 8 my-volume
$ openstack server create --flavor 2 --image 98901246-af91-43d8-b5e6-a4506aa8f369 \ --block-device source=volume,id=d620d971-b160-4c4e-8652-2513d74e2080,dest=volume,shutdown=preserve \ myInstanceWithVolume #附加新卷 官网的不支持$ nova boot --flavor FLAVOR --block-device source=SOURCE,id=ID,dest=DEST,size=SIZE,shutdown=PRESERVE,bootindex=INDEX \ NAME #对应界面创建 id是前面的openstack server create
--flavor 42
--image 66baed9d-1c7d-457c-a422-5117da1caa0d
--block-device source=ee7d42f1-8df2-4272-b5b4-f302e0713a2a
--nic net-id=e15fac1f-c3e3-4b69-996e-170b50442634
myInstanceWithVolume
nova boot
--flavor 42
--image 66baed9d-1c7d-457c-a422-5117da1caa0d
--block-device source=volume,id=ee7d42f1-8df2-4272-b5b4-f302e0713a2a,dest=volume,shutdown=preserve
--nic net-id=e15fac1f-c3e3-4b69-996e-170b50442634
myInstanceWithVolume
————————————————
https://blog.csdn.net/Jmilk/article/details/80816827 大佬的文章
仅仅需要指定 Guest NUMA nodes 的个数,然后由 Nova 根据 Flavor 设定的虚拟机规格平均将 vCPU/Mem 分布到不同的 Host NUMA nodes 上(默认从 Host NUMA node 0 开始分配)
- 限制实例nume
openstack flavor set FLAVOR-NAME \
--property hw:numa_nodes=FLAVOR-NODES \ 设定 Guest NUMA nodes 的个数
--property hw:numa_cpus.N=FLAVOR-CORES \ N取值范围在 [0, FLAVOR-NODES-1] 单个分配到 Guest NUMA node N 上运行的 vCPUs 列表
--property hw:numa_mem.N=FLAVOR-MEMORY 单个设定分配到 Guest NUMA node N 上 Memory Size
例子:
EXAMPLE:定义虚拟机有 4 vCPU,4096MB Mem,设定 Guest NUMA topology 为 2 Guest NUMA node:
Guest NUMA node 0:vCPU 0、Mem 1024MB
Guest NUMA node 1:vCPU 1/2/3、Mem 3072MB
openstack flavor set aze-FLAVOR \
--property hw:numa_nodes=2 \
--property hw:numa_cpus.0=0 \ 这玩意不是使用0个cpu,而是使用编号0的cpu
--property hw:numa_cpus.1=1,2,3 \
--property hw:numa_mem.0=1024 \
--property hw:numa_mem.1=3072 \
————————————————
e.g.
glance image-update --property \
hw_numa_nodes=2 \
hw_numa_cpus.0=0 \
hw_numa_mem.0=1024 \
hw_numa_cpus.1=1,2,3 \
hw_numa_mem.1=3072 \
image_name
————————————————
注意,当镜像的 NUMA 约束与 Flavor 的 NUMA 约束冲突时,以 Flavor 为准。
大佬写了例子,额机子只有一个nume,没有必要了
- 发送api策略
api https://www.cnblogs.com/goldsunshine/p/8119209.html 这也是大佬
/etc/libvirt/qemu devstack xml地址
- 调整cpu
virsh
vcpuinfo 使用情况
emulatorpin ID 0-1(物理核) #在线调整cpu
<cputune>
<shares>1024</shares>
<emulatorpin cpuset='0-1'/>
</cputune>
dumpxml ID #查看调整的.xml 文件
vcpupin 1 0 1(虚拟机id,vcpu,cpu) #绑定cpu qemu不支持
实现技术:CGroup绑定虚拟机进程
- 在线添加cpu(改小不支持)
cat /proc/interrupts cpu核数
virsh setvcpus 虚拟机名 cpu数 --live 在openstack 无法在线添加cpu 因为vcpu会有限制
virsh setvcpus instance-00000007 5 --live
echo 1>/sys/devices/system/cpu/cpu4/online 激活
验证 : cat /proc/interrupts
cat /proc/cpuinfo | grep processor | wc -l
- cpu 模式
cat /usr/share/libvirt/cpu_map.xml
主要的几种模式
<cpu mode='custom' match='exact'>
<cpu mode='host-model'> 默认模式,寻找最靠近的cpu
<cpu mode='host-passthrough'> 暴露给cpu用,不同cpu的迁移需注意
- 内存运行情况
内存压缩,ksm技术,默认打开
阻止内存压缩,
<memoryBacking> <nosharepages/> </memorybacking>
/sys/kernal/mm/ksm
- balloon 两种操作
内存被置换到虚拟机和还给宿主机
1.须在.xml配置文件
<memballoon model='virtio'>
<alias name='balloon0'></memballoon>
2.内存大小
qemu-monitor-command instance-00000007 --hmp --cmd info balloon
qemu-monitor-command instance-00000007 --hmp --cmd balloon 30 限制内存大小
- 内存技术写入文件
virsh memtune virtual_machine --parameter size 限制内存的方法
memtune instance-00000007 --hard-limit 65535 --config 最大(不加swap)
memtune instance-00000007 --min_guarantee 35840 --live 最小
偶尔看到https://blog.51cto.com/10983441/2426287
- 巨型页
如果在系统中使用了huge page ,则内存页的数量就是减少,从而要更少的页表,节约了页表所占用的内存数量,并且所需的地址转换,也减少了,TLB缓存失效的次数就减少了,从而提高了内存访问的性能,另外,由于地址转换所需的信息,一般保存在cpu的缓存中,huge page 的使用让地址转换信息减少,从而减少了cpu缓存的使用,减轻了cpu缓存的压力,让cpu缓存能更多地用于应用程序的数据缓存,也能够在整体上提示系统的性能。
cat /sys/kernel/mm/transparent_hugepage/enabled 定义开启巨页
cd /sys/kernel/mm/transparent_hugepage/khugepaged/ 监控 ( grep Huge /proc/meminfo)
.xml 配置巨页 <memoryBacking> <hugepages/></memoryBacking>
使用情况:grep Huge /proc/meminfo
修改大小: echo 25000 > /proc/sys/vm/nr_hugepages(定义巨页大小)
或者sysctl vm.br_hugepages=N mount -t hugetlbfs hugetlbfs /dev/hugepages
重启libvirtd
关闭巨页:sysctl vm.br_hugepages=0 umount hugetlbfs
69