KVM CPU线程等学习记录
绝大多数操作系统调度单位是线程。线程是调度和分配的基本单位,进程是资源拥有的基本单位。
linux下fork的叫进程
pthread叫线程
创建进程比线程性能要差好多5-100倍,因进程不同而异。
进程之间共享数据较麻烦,耗费资源更多。进程之间的内存数据不可以直接访问。
同一进程内的线程之间数据是共享的。
多CPU之间通过主板的总线进行通信。
1个CPU内的多核之间通过CPU内部总线进行通信。
进程调度算法有时间片轮转调度、优先级调度、多级队列调度等
逻辑 cpu 既可能是 cores 的个数,也可能是 core 的倍数。当它和 core 的个数相等时,表示每一个 core 就是一个逻辑 CPU,若它时 core 的 2 倍时,表示每个 core 又 enable 了超线程(Hyper-Thread)。比如:一个双核的启用了超线程的物理 cpu,其 core id 分别为 1、2,但是 sibling 是 4,也就是如果有两个逻辑 CPU 具有相同的 "core id",那么超线程是打开的。
KVM关于CPU型号的定义在/usr/share/libvirt/cpu_map.xml可以查到,如果在virt-install的时候指定CPU的类型更好,KVM有部分针对性的CPU优化,部分应用需要特定的CPU。
CPU热添加是centos7的一个新特性,要求宿主机和虚拟机都是centos7
命令是virsh setvcpus vm01 5 --live #cpu增加为5个
KVM虚拟机嵌套和VMWare原理不同,VMWare第一层是用的硬件虚拟化技术,第二层就是完全软件模拟出来的,所以VMWare只能做两层嵌套。KVM是将物理CPU的特性全部传给虚拟机,所有理论上可以嵌套N多层。
检查是否打开nested嵌套功能 cat /sys/module/kvm_intel/parameters/nested
openstack对KVM虚机的CPU优化可以有以下几种:
CPU 绑核(pinning)将虚拟 CPU 和物理 CPU 逐一绑定起来
CPU隔离(isolate)将虚拟机使用的物理 CPU 从 Linux 隔离出来
CPU拓扑(Topology)CPU 分配尽量不要跨 NUMA
最新文章
- BZOJ 1799 同类分布
- python抓取某学院视频
- CentOs中mysql的安装与配置
- 内核中用于数据接收的结构体struct msghdr(转)
- paip.基于urlrewrite的反向代理以及内容改写
- JAVA基础学习day15--集合二 TreeSet和泛型
- 使用U盘安装mint
- Android installed app, never used, cannot receiver BroadcastReceiver
- Oracle 收集统计数据
- C#学习笔记-策略模式
- JVM读书笔记之OOM
- epoll源码分析
- JAVA_连接池、DataSource、JNDI
- spring boot 之热部署
- 前端基础----jquery
- 【BZOJ】2653: middle
- web普通项目映射为maven项目
- 使用maven命令进行打包,部署项目到远程仓库
- influxdb和boltDB简介——MVCC+B+树,Go写成,Bolt类似于LMDB,这个被认为是在现代kye/value存储中最好的,influxdb后端存储有LevelDB换成了BoltDB
- [POJ] The Triangle