OpenStack中的CPU与内存超分详解
目录
什么是超分
CPU超分
查看虚拟机虚拟CPU运行在哪些物理CPU上
内存超分
内存预留
内存共享
如何设置内存预留和内存共享
全局设置
临时设置
什么是超分
超分通常指的是CPU或者GPU的分区或者分割,以在一个物理CPU或GPU内模拟多个逻辑CPU或GPU的功能。这种技术通常被称为虚拟化,允许多个操作系统或者应用程序在同一物理硬件上同时运行,从而提高了资源利用率和系统性能。
在CPU超分方面,一种常见的技术是使用硬件虚拟化,例如Intel的虚拟化技术(VT-x)或AMD的虚拟化技术(AMD-V)。这些技术可以允许多个虚拟机在同一物理CPU上运行,并为每个虚拟机提供虚拟化的CPU、内存和I/O设备。
在GPU超分方面,也有类似的技术,例如Nvidia的虚拟GPU(vGPU)和AMD的虚拟化GPU(vGPU),允许多个虚拟机共享一块物理GPU,并为每个虚拟机提供虚拟化的GPU资源。
CPU超分
在OpenStack中,CPU超分比例(CPU overcommit ratio)是指将虚拟机虚拟CPU核心的数量设置为物理主机实际CPU核心数量的倍数。这允许多个虚拟机共享物理CPU资源。您可以在OpenStack中的nova.conf配置文件中设置CPU超分比例。默认情况下,该值设置为1.0,这意味着每个虚拟CPU内核将映射到物理主机的一个CPU内核。您可以通过修改以下行来更改CPU超分比例的值:
cpu_allocation_ratio = <ratio>
其中<ratio>是您要设置的CPU超分比例值。例如,如果您希望将CPU超分比例设置为2.0,则应将此值设置为2.0。请注意,将此值设置得太高可能会导致虚拟机之间的CPU竞争,从而导致性能下降。因此,建议在设置CPU超分比例时谨慎行事。
查看虚拟机虚拟CPU运行在哪些物理CPU上
virsh vcpuinfo <VM ID>
[root@bj05-compute-s6-10e33e18e78 ~]# virsh vcpuinfo 2ce42431-aba8-47d9-bc78-1be47f2b93a4
VCPU: 0
CPU: 80
State: running
CPU time: 11029.1s
CPU Affinity: ------------------------yyyyyyyyyyyyyyyyyy------------------------------yyyyyyyyyyyyyyyyyy------VCPU: 1
CPU: 84
State: running
CPU time: 11776.3s
CPU Affinity: ------------------------yyyyyyyyyyyyyyyyyy------------------------------yyyyyyyyyyyyyyyyyy------VCPU: 2
CPU: 37
State: running
CPU time: 12852.5s
CPU Affinity: ------------------------yyyyyyyyyyyyyyyyyy------------------------------yyyyyyyyyyyyyyyyyy------VCPU: 3
CPU: 84
State: running
CPU time: 13374.2s
CPU Affinity: ------------------------yyyyyyyyyyyyyyyyyy------------------------------yyyyyyyyyyyyyyyyyy------
内存超分
在OpenStack中也存在内存超分的概念,它允许您在虚拟机中分配超过物理主机可用内存的虚拟内存。内存超分的实现方式类似于CPU超分,它基于内存预留和内存共享两种技术。
内存预留
在内存预留模式下,每个虚拟机被分配一定数量的内存,该内存在虚拟机创建时就被分配并保留,即使虚拟机并未使用该内存。
内存共享
在内存共享模式下,多个虚拟机共享相同的物理内存,这可以使您在不损害性能的情况下更好地利用物理主机的内存资源。
如何设置内存预留和内存共享
全局设置
在OpenStack中,您可以通过编辑nova.conf配置文件来进行全局设置,以配置内存预留和内存共享选项。以下是相关配置项的说明:
- 内存预留:
要设置全局内存预留选项,请在nova.conf配置文件中添加以下行:
ram_allocation_ratio = <ratio>
其中<ratio>是您要设置的内存超分比例值。默认值为1.5,这意味着虚拟机可以分配的内存量可以超过物理主机可用内存的一半。
- 内存共享:
要设置全局内存共享选项,请在nova.conf配置文件中添加以下行:
ram_allocation_policy = <policy>
其中<policy>可以是"dedicated"(表示禁用内存共享)或"shared"(表示启用内存共享)。默认值为"dedicated",这意味着内存共享是禁用的。
请注意,全局设置将适用于所有虚拟机,但在创建或编辑虚拟机时,您可以覆盖这些设置并设置特定的内存预留和内存共享选项。
临时设置
- 内存预留:
在创建或编辑虚拟机时选择“预留”内存的选项,并指定要为虚拟机预留的内存数量。您还可以使用OpenStack的API或命令行工具设置虚拟机的内存预留。例如,在nova命令行工具中,您可以使用以下命令将虚拟机的内存预留设置为2 GB:
nova flavor-key <flavor-name> set "hw:mem_reservation"=2048
其中<flavor-name>是您要设置的虚拟机规格的名称。
- 内存共享:
在创建或编辑虚拟机时选择“共享”内存的选项。您还可以使用OpenStack的API或命令行工具设置虚拟机的内存共享。例如,在nova命令行工具中,您可以使用以下命令将虚拟机的内存共享设置为True:
nova flavor-key <flavor-name> set "hw:mem_shared"=True
注意,内存共享模式可能会影响虚拟机的性能,因此建议在设置内存共享时谨慎行事。
相关文章:

OpenStack中的CPU与内存超分详解
目录 什么是超分 CPU超分 查看虚拟机虚拟CPU运行在哪些物理CPU上 内存超分 内存预留 内存共享 如何设置内存预留和内存共享 全局设置 临时设置 什么是超分 超分通常指的是CPU或者GPU的分区或者分割,以在一个物理CPU或GPU内模拟多个逻辑CPU或GPU的功能。这…...

main.m文件解析--@autoreleasepool和UIApplicationMain
iOS 程序入口UIApplicationMain详解,相信大家新建一个工程的时候都会看到一个main.m文件,只不过我们很少了解它,现在我们分析一下它的作用是什么? 一、main.m文件 int main(int argc, char * argv[]) {autoreleasepool {return …...

C语言复习之顺序表(十五)
📖作者介绍:22级树莓人(计算机专业),热爱编程<目前在c阶段>——目标C、Windows,MySQL,Qt,数据结构与算法,Linux,多线程,会持续分享…...

学系统集成项目管理工程师(中项)系列10_立项管理
1. 系统集成项目管理至关重要的一个环节 2. 重点在于是否要启动一个项目,并为其提供相应的预算支持 3. 项目建议 3.1. Request for Proposal, RFP 3.2. 立项申请 3.3. 项目建设单位向上级主管部门提交的项目申请文件,是对拟建项目提出的总体设想 3…...

电视盒子哪个好?数码小编盘点2023电视盒子排行榜
随着网络剧的热播,电视机又再度受宠,电视盒子也成为不可缺少的小家电。但面对复杂的参数和品牌型号,挑选时不知道电视盒子哪款最好,小编根据销量和用户评价整理半个月后盘点了电视盒子排行榜前五,对电视盒子哪个好感兴…...

flink动态表的概念详解
目录 前言🚩 动态表和持续不断查询 stream转化成表 连续查询 查询限制 表转化为流 前言🚩 传统的数据库SQL和实时SQL处理的差别还是很大的,这里简单列出一些区别: 尽管存在这些差异,但使用关系查询和SQL处理流并…...

ArcGIS Pro用户界面
目录 1 功能区 1.1 快速访问工具栏 1.2 自定义快速访问工具栏 1.3 自定义功能区选项 1.3.1 添加组和命令 1.3.2 添加新选项卡 2 视图 3 用户界面排列 编辑 4 窗格 4.1 内容窗格 4.2 目录窗格 4.3 目录视图(类似ArcCatalog) 4.4 浏览对话框…...

HDCTF 2023 Pwn WriteUp
Index 前言Pwnner分析EXP: KEEP_ON分析EXP: Minions分析EXP: 后记: 前言 本人是菜狗,比赛的时候只做出来1题,2题有思路但是不会,还是太菜了。 栈迁移还是不会,但又都是栈迁移的题,真头大。得找时间好好学学…...

【 Spring 事务 】
文章目录 一、为什么需要事务(简单回顾)二、MySQL 中的事务使⽤三、Spring 中事务的实现3.1 Spring 编程式事务(手动事务)3.2 Spring 声明式事务(自动事务)3.2.1 Transactional 作⽤范围3.2.2 Transactional 参数说明3.2.3 Transactional 不进行事务回滚的情况3.2.4 Transactio…...

【刷题之路】LeetCode 203. 移除链表元素
【刷题之路】LeetCode 203. 移除链表元素 一、题目描述二、解题1、方法1——在原链表上动刀子1.1、思路分析1.2、代码实现 2、方法2——使用额外的链表2.1、思路分析2.2、代码实现 一、题目描述 原题连接: 203. 移除链表元素 题目描述: 给你一个链表的…...

关于Open Shift(OKD) 中 用户认证、权限管理、SCC 管理的一些笔记
写在前面 因为参加考试,会陆续分享一些 OpenShift 的笔记博文内容为 openshift 用户认证和权限管理以及 scc 管理相关笔记学习环境为 openshift v3 的版本,有些旧这里如果专门学习 openshift ,建议学习 v4 版本理解不足小伙伴帮忙指正 对每个…...

活动文章测试(勿删)
大家好! 我是CSDN官方博客! 恭喜你正式加入CSDN博客,迈上技术成神之路~~ 路漫漫其修远兮——身为技术人,求索之路道阻且艰,但一万次的翘首却比不过一次的前行。 现在,就来开启你的个人博客,发布…...

Windows下 批量重命名文件【bat实现】
目录 前言 一、Windows简单实现重命名 二、使用命令行和Excel实现重命名 前言 在实际应用中,我们经常会遇到将指定文件夹下的文件重命名,以便程序读写。 本文介绍了两种方式,都是在Windows系统中自带的重命名方式。 一、Windows简单实现…...

从 Milvus 2.2 到 2.2.6,我们是如何持续稳定升级的
最近,Milvus 发布了 2.2.6 版本,在修复了一些 bug 后,Milvus 变得越发稳定。 事实上,自 Milvus 升级至 2.X 版本以来,我们一直在努力改进及优化,推出了诸如从文件中批量导入数据、基于磁盘的近似最近邻&…...

自学python有推荐的么
大学生自学那必然是首推B站大学哇能称之为大学不是没有道理的,看看各个领域的学习分享都是非常多的,关键是看着弹幕就感觉像是在和一帮志同道合的小伙伴一起学习,自学的道路也不再孤单了,遇见不会的没准还能在弹幕和评论区找到答案…...

设计模式 --- 行为型模式
一、概述 行为型模式用于描述程序在运行时复杂的流程控制,即描述多个类或对象之间怎样相互协作共同完成单个对象都无法单独完成的任务,它涉及算法与对象间职责的分配。 行为型模式分为类行为模式和对象行为模式,前者采用继承机制来在类间分…...

防御式编程
防御式编程是提高软件质量技术的有益辅助手段。就是一开始不要在代码里引入错误。使用迭代式设计、编码前写伪代码,写测试用例,助于防止引入错误。 断言 断言是用来检查永远不应该发生的非正常情况,处理这些错误的代码 错误处理技术ÿ…...

导出pdf Puppeteer 和 wkhtmltopdf区别
您可以使用第三方的 PDF 生成库来将动态页面导出为 PDF 文件。目前比较常见的是使用 Headless Chrome 或 Puppeteer 这类工具将页面转换为 PDF 文件,具体步骤如下: 安装 Headless Chrome 或 Puppeteer。 使用框架调用后端接口获取数据,渲染出…...

sequelize + Nodejs + MySQL 的简单用法
How to Use Sequelize ORM in NodeJS - Tutorial 1 Sequlize 简介 Sequelize 是最流行的可以与 Nodejs 一起使用的一种关系数据库 ORM (Object-relational mapping 对象关系映射),Mongoose 是 MongoDB 的 ORM. Sequelize 的作用,简单地说,就…...

Android Jetpack - Navigation 组件:进行应用程序导航
一. Navigation 组件的介绍 1.1 什么是 Navigation 组件 Navigation 组件是一种 Android Jetpack 库,它可以帮助开发者轻松地实现应用程序中的导航功能。导航组件包含多个类和组件,包括导航图、目的地、导航控制器等,可以帮助我们管理应用程…...

MySQL的binlog原理和它的几种使用方法
MySQL中的二进制日志(binlog)是一种用于记录数据库操作的日志文件,它可以记录MySQL服务器接收到的所有修改数据库的语句,例如INSERT、UPDATE和DELETE等语句。二进制日志对于备份和恢复数据库、复制数据库和进行数据分析等操作非常…...

40岁以上的程序员还容易找到工作吗?聊聊我自己的亲身经历
今天我们来讨论一个比较热门的话题,那就是程序员。如果到了40岁以上还容易找到工作吗?这个问题呢,其实是一个非常现实的问题,也是我们程序员非常关心的一个问题。因为我们每一个程序员,他都会有到40岁的那一天。 首先…...

Class类
package com.hspedu.reflection.class_;import com.hspedu.Cat;import java.util.ArrayList;/*** author 韩顺平* version 1.0* 对Class类特点的梳理*/ public class Class01 {public static void main(String[] args) throws ClassNotFoundException {//看看Class类图//1. Cla…...

Python小姿势 - 可选知识点:
可选知识点: 列表推导式 列表和字典推导式 字典推导式 生成器表达式 带条件的生成器表达式 解析XML 解析JSON 使用Requests和BeautifulSoup爬虫 Python并发编程 Python多线程编程 Python多进程编程 Python异步编程 Python装饰器 Python闭包 Python模块化 Python类和…...

Javaee Spring的AOP简介
一.Spring的AOP简介 1.1 什么是AOP AOP 为 Aspect Oriented Programming 的缩写,意思为面向切面编程,是通过预编译方式和运行期动态代 理实现程序功能的统一维护的一种技术。AOP 是 OOP 的延续,是软件开发中的一个热点,也是…...

基于ansible初始化linux服务器基础环境。
大家好,今天我要和大家分享一个关于搭建centos环境的新方法。 以前我们经常会看到一些文章介绍如何搭建centos环境,但很多时候都会出现一些问题。不过现在有了一种新的方法,就是使用ansible脚本来实现。 虽然这种方法仅适用于centos7&#…...

leetcode-数据库题
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 175. 组合两个表176. 第二高的薪水177. 第N高的薪水178. 分数排名181. 超过经理收入的员工182. 查找重复的电子邮箱183. 从不订购的客户 175. 组合两个表 select p…...

[元来学NVMe协议] NVMe IO 指令集(NVM 指令集)| Flush 命令
声明 主页:元存储的博客_CSDN博客 依公开知识及经验整理,如有误请留言。 个人辛苦整理,付费内容,禁止转载。 内容摘要 前言 NVMe2.0 定义的三类命令集: 管理命令集、IO命令集、Fabrics命令集 Admin Command Set (管理命令集):用于控制器的管理,如创建/销毁IO提交队列…...

信息的相关性和冗余度:信息在整个文明中的作用
文章目录 I 古埃及的象形文字1.1 罗塞塔石碑1.2 古埃及文字音节和希腊字母的对应表1.3 破解古埃及文字 I 古埃及的象形文字 1.1 罗塞塔石碑 这个石碑是在公元前196年埃及国王托勒密五世加冕一周年的诏书。 在此前大约一百年,埃及已经被来自希腊北方城邦的亚历山大…...

python数据结构与算法-动态规划(最长公共子序列)
一、最长公共子序列问题 1、问题概念 一个序列的子序列是在该序列中删去若干元素后得 到的序列。 例如:"ABCD”和“BDF”都是“ABCDEFG”的子序列。 最长公共子序列(LCS) 问题: 给定两个序列X和Y,求X和Y长度最大的公共子字列。 例:X"ABBCBDE”…...