当前位置: 首页 > news >正文

深圳俄语网站建设小白学编程应该从哪里开始学

深圳俄语网站建设,小白学编程应该从哪里开始学,百度打广告怎么收费,wordpress安全者转载自#xff1a;http://smilejay.com/2012/08/kvm-vcpu-binding/ 通常情况下#xff0c;在SMP系统中#xff0c;Linux内核的进程调度器根据自有的调度策略将系统中的一个进程调度到某个CPU上执行。一个进程在前一个执行时间 是在cpuM#xff08;M为系统中的某CPU的IDhttp://smilejay.com/2012/08/kvm-vcpu-binding/ 通常情况下在SMP系统中Linux内核的进程调度器根据自有的调度策略将系统中的一个进程调度到某个CPU上执行。一个进程在前一个执行时间 是在cpuMM为系统中的某CPU的ID上运行而在后一个执行时间是在cpuNN为系统中另一CPU的ID上运行。这样的情况在Linux中是 很可能发生的因为Linux对进程执行的调度采用时间片法则即进行用完自己的时间片即被暂停执行而默认情况下一个普通进程或线程的处理器亲和性 是在所有可用的CPU上有可能在它们之中的任何一个CPU包括超线程上执行。 进程的处理器亲和性Processor Affinity即是CPU的绑定设置是指将进程绑定到特定的一个或多个CPU上去执行而不允许调度到其他的CPU上。Linux内核对进程的调 度算法也是遵守进程的处理器亲和性设置的。设置进程的处理器亲和性带来的好处是可以减少进程在多个CPU之间交换运行带来的缓存命中失效cache missing从该进程运行的角度来看可能带来一定程度上的性能提升。换个角度来看对进程亲和性的设置也可能带来一定的问题如破坏了原有SMP 系统中各个CPU的负载均衡load balance这可能会导致整个系统的进程调度变得低效。特别是在多处理器、多核、多线程技术使用的情况下在NUMANon-Uniform Memory Access[3]结构的系统中如果不能基于对系统的CPU、内存等有深入的了解对进程的处理器亲和性进行设置是可能导致系统的整体性能的下降而非提升。 每个vCPU都是宿主机中的一个普通的QEMU线程可以使用taskset工具对其设置处理器亲和性使其绑定到某一个或几个固定的CPU上去调 度。尽管Linux内核的进程调度算法已经非常高效了在多数情况下不需要对进程的调度进行干预不过在虚拟化环境中有时却有必要对客户机的QEMU进 程或线程绑定到固定的逻辑CPU上。下面举一个云计算应用中需要绑定vCPU的实例。 作为IAASInfrastructure As A Service类型的云计算提供商的A公司如Amazon、Google、阿里云、盛大云等为客户提供一个有2个逻辑CPU计算能力的一个客户 机。要求CPU资源独立被占用不受宿主机中其他客户机的负载水平的影响。为了满足这个需求可以分为如下两个步骤来实现。   第一步启动宿主机时隔离出两个逻辑CPU专门供一个客户机使用。在Linux内核启动的命令行加上“isolcpus”参数可以实现CPU的 隔离让系统启动后普通进程默认都不会调度到被隔离的CPU上执行。例如隔离了cpu2和cpu3的grub的配置文件如下 title Red Hat Enterprise Linux Server (3.5.0) root (hd0,0) kernel /boot/vmlinuz-3.5.0 ro rootUUID1a65b4bb-cd9b-4bbf-97ff-7e1f7698d3db isolcpus2,3 initrd /boot/initramfs-3.5.0.img 系统启动后在宿主机中检查是否隔离成功命令行如下 [rootjay-linux ~]# ps -eLo psr | grep 0 | wc -l 106 [rootjay-linux ~]# ps -eLo psr | grep 1 | wc -l 107 [rootjay-linux ~]# ps -eLo psr | grep 2 | wc -l 4 [rootjay-linux ~]# ps -eLo psr | grep 3 | wc -l 4 [rootjay-linux ~]# ps -eLo ruser,pid,ppid,lwp,psr,args | awk ‘{if($52) print $0}’ root        10     2    10   2 [migration/2] root        11     2    11   2 [kworker/2:0] root        12     2    12   2 [ksoftirqd/2] root       245     2   245   2 [kworker/2:1] [rootjay-linux ~]# ps –eLo ruser,pid,ppid,lwp,psr,args | awk ‘{if($53) print $0}’ root        13     2    13   3 [migration/3] root        14     2    14   3 [kworker/3:0] root        15     2    15   3 [ksoftirqd/3] root       246     2   246   3 [kworker/3:1] 从上面的命令行输出信息可知cpu0和cpu1上分别有106和107个线程在运行而cpu2和cpu3上都分别只有4个线程在运行。而且根 据输出信息中cpu2和cpu3上运行的线程信息也包括进程在内分别有migration进程用于进程在不同CPU间迁移、两个kworker 进程用于处理workqueues、ksoftirqd进程用于调度CPU软中断的进程这些进程都是内核对各个CPU的一些守护进程而没有其 他的普通进程在cup2和cpu3上运行说明对其的隔离是生效的。 另外简单解释一下上面的一些命令行工具及其参数的意义。ps命令显示当前系统的进程信息的状态它的“-e”参数用于显示所有的进程“-L”参 数用于将线程LWPlight-weight process也显示出来“-o”参数表示以用户自定义的格式输出其中“psr”这列表示当前分配给进程运行的处理器编号“lwp”列表示线程的 ID“ruser”表示运行进程的用户“pid”表示进程的ID“ppid”表示父进程的ID“args”表示运行的命令及其参数。结合ps和 awk工具的使用是为了分别将在处理器cpu2和cpu3上运行的进程打印出来。 第二步启动一个拥有2个vCPU的客户机并将其vCPU绑定到宿主机中两个CPU上。此操作过程的命令行如下 #启动一个客户机 [rootjay-linux kvm_demo]# qemu-system-x86_64 rhel6u3.img -smp 2 -m 512 -daemonize VNC server running on ‘::1:5900’   #查看代表vCPU的QEMU线程 [rootjay-linux ~]# ps -eLo ruser,pid,ppid,lwp,psr,args | grep qemu | grep -v grep root      3963     1  3963   0 qemu-system-x86_64 rhel6u3.img -smp 2 -m 512 -daemonize root      3963     1  3967   0 qemu-system-x86_64 rhel6u3.img -smp 2 -m 512 -daemonize root      3963     1  3968   1 qemu-system-x86_64 rhel6u3.img -smp 2 -m 512 –daemonize   #绑定代表整个客户机的QEMU进程使其运行在cpu2上 [rootjay-linux ~]# taskset -p 0×4 3963 pid 3963′s current affinity mask: 3 pid 3963′s new affinity mask: 4 #绑定第一个vCPU的线程使其运行在cpu2上 [rootjay-linux ~]# taskset -p 0×4 3967 pid 3967′s current affinity mask: 3 pid 3967′s new affinity mask: 4 #绑定第二个vCPU的线程使其运行在cpu3上 [rootjay-linux ~]# taskset -p 0×8 3968 pid 3968′s current affinity mask: 4 pid 3968′s new affinity mask: 8   #查看QEMU线程的绑定是否生效如下的第5列为处理器亲和性 [rootjay-linux ~]# ps -eLo ruser,pid,ppid,lwp,psr,args | grep qemu | grep -v grep root      3963     1  3963   2 qemu-system-x86_64 rhel6u3.img -smp 2 -m 512 -daemonize root      3963     1  3967   2 qemu-system-x86_64 rhel6u3.img -smp 2 -m 512 -daemonize root      3963     1  3968   3 qemu-system-x86_64 rhel6u3.img -smp 2 -m 512 –daemonize #执行vCPU的绑定后查看在cpu2上运行的线程 [rootjay-linux ~]# ps -eLo ruser,pid,ppid,lwp,psr,args | awk ‘{if($52) print $0}’ root        10     2    10   2 [migration/2] root        11     2    11   2 [kworker/2:0] root        12     2    12   2 [ksoftirqd/2] root       245     2   245   2 [kworker/2:1] root      3963     1  3963   2 qemu-system-x86_64 rhel6u3.img -smp 2 -m 512 -daemonize root      3963     1  3967   2 qemu-system-x86_64 rhel6u3.img -smp 2 -m 512 -daemonize #执行vCPU的绑定后查看在cpu3上运行的线程 [rootjay-linux ~]# ps –eLo ruser,pid,ppid,lwp,psr,args | awk ‘{if($53) print $0}’ root        13     2    13   3 [migration/3] root        14     2    14   3 [kworker/3:0] root        15     2    15   3 [ksoftirqd/3] root       246     2   246   3 [kworker/3:1] root      3963     1  3968   3 qemu-system-x86_64 rhel6u3.img -smp 2 -m 512 -daemonize 由上面的命令行及其输出信息可知CPU绑定之前代表这个客户机的QEMU进程和代表各个vCPU的QEMU线程分别被调度到cpu0和cpu1 上。使用taskset命令将QEMU进程和第一个vCPU的线程绑定到cpu2将第二个vCPU线程绑定到cpu3上。绑定之后即可查看到绑定的结 果是生效的代表两个vCPU的QEMU线程分别运行在cpu2和cpu3上即使再过一段时间后它们也不会被调度到其他CPU上去。 对taskset命令解释一下此处使用的语法是taskset -p [mask] pid 。其中mask是一个代表了处理器亲和性的掩码数字转化为二进制表示后它的值从最低位到最高位分别代表了第一个逻辑CPU到最后一个逻辑CPU进 程调度器可能将该进程调度到所有标为“1”的位代表的CPU上去运行。根据上面的输出taskset运行之前QEMU线程的处理器亲和性mask值是 0×3其二进制值为0011可知其可能会被调度到cpu0和cpu1上运行而运行“taskset -p 0×4 3967”命令后提示新的mask值被设为0×4其二进制值为0100所以该进程就只能被调度到cpu2上去运行即通过taskset工具实 现了vCPU进程绑定到特定的CPU上。 上面命令行中根据ps命令可以看到QEMU的线程和进程的关系但如何查看vCPU与QEMU线程之间的关系呢可以切换 “CtrlAlt2”快捷键到QEMU monitor中进行查看运行“info cpus”命令即可还记得3.6节中运行过的“info kvm”命令吧其输出结果如下 (qemu) info cpus * CPU #0: pc0xffffffff810375ab thread_id3967 CPU #1: pc0xffffffff812b2594 thread_id3968 从上面的输出信息可知客户机中的cpu0对应的线程ID为3967cpu1对应的线程ID为3968。另外“CPU #0”前面有一个星号*是标识cpu0是BSPBoot Strap Processor系统最初启动时在SMP生效前使用的CPU。 总的来说在KVM环境中一般并不推荐手动地人为设置QEMU进程的处理器亲和性来绑定vCPU但是在非常了解系统硬件架构的基础上根据实际应用的需求是可以将其绑定到特定的CPU上去从而提高客户机中的CPU执行效率或者实现CPU资源独享的隔离性。转载于:https://www.cnblogs.com/zhangzhang/archive/2013/01/27/2878662.html
http://www.zqtcl.cn/news/550027/

相关文章:

  • 用国外网站 图片做自媒体seo诊断a5
  • 广州市南沙建设局网站优改网logo设计
  • 网站建设亿玛酷知名公司网站首页如何做
  • 教育网站 php网络服务公司
  • net域名做网站怎么样建站公司 转型经验
  • 赣州网站建设哪家公司好上海市建设安全协会网站
  • 网站排名优化软件有哪些西宁网站建设官网
  • 支付宝手机网站签约迪庆公司网站开发方法
  • 唐山网站关键词优化网站开发公司推荐
  • 福建响应式网站制作市工商局网站建设情况
  • 深圳网站运营托管罗伯特清崎说的网络营销是什么
  • 太仓市质监站网址百度关键字推广费用
  • 为您打造高端品牌网站pageadmin wordpress
  • 中小型网站建设的基本流程简约网站欣赏
  • 设备上哪个网站做外贸推广网络服务类型及其所采用的网络协议
  • 学习前端开发的网站动漫设计属于什么大类
  • 十堰秦楚网 十堰新闻门户网站报修网站模板
  • 家居小程序源码下载自动seo系统
  • 动态效果的网站建设技术老闵行是指哪里
  • 电商网站开发面临的技术问题做闪图的网站
  • 怎么查看网站开发语言的类型东莞哪些地方是风险区
  • 不用购买域名做网站广州网站建设培训学校
  • 城市轨道建设规范下载网站古网站典模板
  • 关于实验室建设的英文网站深圳企业网站制作公司怎样
  • wordpress全站背景音乐中山网站搜索排名
  • 搭建网站的过程透明主题wordpress
  • 丰台网站建设公司电话深圳微信商城网站设计公司
  • 做淘宝要用的网站吗上海微信网站
  • 佛山高端网站制作公司wordpress 发送邮件插件
  • 类似站酷的设计类网站网站建设需要待摊吗