Linux 系统下几种常用的CPU监控命令 cpu是整个操作系统的核心,整个操作系统的运行状态,跟cpu有着重要的关系。 我们可以通过一些常用工具和命令,获取cpu的监控信息。 从监控信息能看到 top mpstat sar –p perf pidstat uptime w ps /proc/cpuinfo top Linux的任务管理器 display Linux tasks 多核模式, 1/I: 切换smp模式,观察每个SMP CPU 的使用率 Tasks: 349 total, 1 running, 347 sleeping, 0 stopped, 1 zombie load average: 0.18, 0.26, 0.32 Cpu0 : 0.3%us, 0.3%sy, 0.0%ni, 99.3%id, 0.0%wa, 0.0%hi, 0.0%si,...
Read more程序员的自我修养-个人篇 不要做这三件事 有一位相声演员,他有三样爱好,抽烟,喝酒,烫头。 对于程序员原来,这三样都是不好的。(吁…) 抽烟会导致浑身烟味儿,影响旁边同事的心情,导致写代码不专心,考虑场景不全面。 喝酒会导致身材发胖,胃肠问题,同样会导致工作效率问题。 程序员需要烫头吗? 那怎么办? 可以嗑瓜子啊,就是小心点别吵到别人啊。
Read moreTCP TCP 是传输层的一个协议,用来提供可靠传输。 TCP 报文定义见下图: TCP 与 IP 协议一起工作,用于应用进程之间的通信。 TCP 的基本概念 三次握手与四次挥手 三次握手 由客户端发起连接请求,服务端相应请求并向客户端发起请求确认,客户端返回确认请求。 此时连接建立。 第一次握手:建立连接。客户端发送连接请求报文段,将SYN位置为1,Sequence Number为x;然后,客户端进入SYN_SEND状态,等待服务器的确认; 第二次握手:服务器收到SYN报文段。服务器收到客户端的SYN报文段,需要对这个SYN报文段进行确认,设置Acknowledgment Number为x+1(Sequence Number+1);同时,自己自己还要发送SYN请求信息,将SYN位置为1,Sequence Number为y;服务器端将上述所有信息放到一个报文段(即SYN+ACK报文段)中,一并发送给客户端,此时服务器进入SYN_RECV状态; 第三次握手:客户端收到服务器的SYN+ACK报文段。然后将Acknowledgment Number设置为y+1,向服务器发送ACK报文段,这个报文段发送完毕以后,客户端和服务器端都进入ESTABLISHED状态,完成TCP三次握手。 完成了三次握手,客户端和服务器端就可以开始传送数据。以上就是TCP三次握手的总体介绍。 假设不采用“三次握手”,那么只要server发出确认,新的连接就建立了。 采用“三次握手”的办法可以防止server由于重传导致的老的报文一直等待client发来数据。这样,server的很多资源就白白浪费掉了现象发生。例如刚才那种情况,client不会向server的确认发出确认。server由于收不到确认,就知道client并没有要求建立连接。”。主要目的防止server端一直等待,浪费资源。 四次挥手 TOOD Socket 各种状态分析 TODO TIME_WAIT …
Read moreTokyo summit vote url 您可以直接点击以下链接进行投票。 Towards Robust Live Migration in Dynamic Environments OpenStack Practice @ Intel IT: Let’s accelerate the design process of smart devices CI/CDaaS based on Magnum/Murano within Intel IT Private Cloud OpenStack DevOps in Intel IT: How to serve a private Cloud while continues contribute to community...
Read moreHacking magnum swarm node to add proxy I will talk about how to add proxy in magnum swarm framework Why I need proxy Because GFW, you know! Where to add proxy We need an http_proxy and https_proxy first! if you do not have that proxy, then you can leave now....
Read moreVhost 概述 Linux kernel 中的vhost driver提供了KVM在kernel环境中的virtio设备的模拟。vhost把QEMU模拟设备的代码放在了linux kernel里面,所以设备模拟代码可以直接进入kernel子系统,从而不需要从用户空间通过系统调用陷入内核,减少了由于模拟IO导致的性能下降。 vhost-net是在宿主机上对vhost 网卡的模拟,同样,也有vhost-blk,对block设备的模拟,以及vhost-scsi,对scsi设备的模拟。 vhost 在kernel中的代码位于 drivers/vhost/vhost.c Vhost 驱动模型 vhost driver创建了一个字符设备 /dev/vhost-net,这个设备可以被用户空间打开,并可以被ioctl命令操作。当给一个Qemu进程传递了参数-netdev tap,vhost=on 的时候,QEMU会通过调用几个ioctl命令对这个文件描述符进行一些初始化的工作,然后进行特性的协商,从而宿主机跟客户机的vhost-net driver建立关系。 QEMU代码调用如下: vhost_net_init -> vhost_dev_init -> vhost_net_ack_features 在vhost_net_init中调用了 vhost_dev_init ,打开/dev/vhost-net这个设备,然后返回一个文件描述符作为vhost-net的后端, vhost_dev_init 调用的ioctl命令有 r = ioctl(hdev->control, VHOST_SET_OWNER, NULL); Kernel 中的定义为: 1. /* Set current process as the (exclusive) owner of this file...
Read moreData flow of openstack request This post will talk about the data flow of an openstack request, I will take boot an instance and shelve an instance as example. Assume that you have setup an openstack environment already. Let’s start from nova client, you can put –debug option to nova...
Read more使用packstack部署openstack 本文将介绍如何使用Redhat提供的packstack部署openstack Openstack 简介 openstack 是一整套资源管理软件的集合,也是当前最热的开源虚拟化管理软件之一,有一个全球139个国家将近两万开发者参与的开源社区(www.openstack.org)作为支持。openstack项目的目的是快速建设一个稳定可靠的公有云或私有云系统。整个项目涵盖了计算,存储,网络以及前端展现等关于云管理的全部方面,包含了众多子项目。 主要包含了一下几个子项目: OpenStack Compute (code-name Nova) 计算服务 OpenStack Networking (code-name Neutron) 网络服务 OpenStack Object Storage (code-name Swift) 对象存储服务 OpenStack Block Storage (code-name Cinder) 块设备存储服务 OpenStack Identity (code-name Keystone) 认证服务 OpenStack Image Service (code-name Glance) 镜像文件服务 OpenStack Dashboard (code-name Horizon) 仪表盘服务 OpenStack Telemetry (code-name Ceilometer) 告警服务...
Read moreLinux 中断 中断硬件发起,外部设备与cpu通信的一种方式,相对于cpu轮询,中断是更好的方式。 中断设备与cpu的物理连接方式如下: 一般来说,外设并不直接与cpu相连接,而是通过一个叫’中断控制器’硬件连接。这个中断控制器是可被编程配置的。 所以又称它为’可编程中断控制器’(PIC)。外设向中断控制器发起中断,然后,’中断控制器’告诉cpu有中断到来。 cpu去读取中断控制器(PIC)产生的软中断号。 初始化需要配置PIC,配置内容包括: 中断触发的电信号类型(水平还是边沿触发) 将外设的引脚编号映射到cpu可见的软件中断号irq 屏蔽掉某些外部设备的中断触发 中断向量表 中断向量表是cpu的内部概念。当发生 ‘异常’ 或者 ‘内部中断’时,cpu会查看中断向量表该异常或者中断对应的处理函数地址。 通用中断处理函数 通常,当发生外部设备中断时,外设向中断控制器产生一个中断,中断控制器生成一个软件中断信号通知cpu。cpu发现是一个外部 中断,他会查询中断向量表中的某一表项去处理该中断。该表项对应的就是通用中断处理函数的入口地址。操作系统会提供这个通 用中断处理函数的定义。 通用中断处理函数的处理过程大致为: 获取软件中断号irq,一般使用汇编编写。 调用do_irq,c函数编写 所以,当一个外部设备产生中断后,到cpu响应该中断的流程如下: 外设触发一个中断 中断控制器(PIC)获取中断号并报告给cpu cpu得知这是一个外部中断,它去查找他的中断向量表,找到通用中断处理函数的地址 cpu调用中断处理函数,通过向PIC查询软中断号 中断处理函数通过软中断号找到该外设注册的中断处理子函数(由驱动提供,在irq_desc数组中) HARDIRQ 和 SOFTIRQ 当cpu在响应一个中断的时候,如果有新的中断到来了,如何处理呢? cpu为了处理这种情况,将中断处理分成了上半部和下半部。 HARDIRQ在中断关闭情况下执行,他的执行时间尽可能短 SOFTIRQ在中断开启的情况下执行。此时外部设备仍可以继续中断处理器,一般驱动程序可以将耗时部分放在此部分执行。
Read more如何在本地使用cloud镜像 fedora,ubuntu等发行版厂商提供了各自cloud的镜像文件,我们可以直接下载并将其运行为一个虚拟机实例。 但是这些cloud镜像文件默认磁盘分区大小可能无法满足我们的需求,而且,默认是不提供通过密码访问的方式访问虚拟机。 本文将介绍如何快速修该磁盘分区大小以及访问虚拟机。 本文中使用的环境为fedora 20,并且需要libguestfs-tools提供的工具,使用如下命令安装。 sudo yum install libguestfs-tools -y 首先获取image,使用国内163网站的镜像服务器下载fedora20的镜像文件: wget https://cloud.centos.org/centos/7/images/CentOS-7-x86_64-GenericCloud.qcow2.xz xz -v --decompress CentOS-7-x86_64-GenericCloud.qcow2.xz 因为libguestfs工具以来libvirt启动虚拟机来进行编辑镜像文件,所以我们要把镜像文件放在/var/lib/libvirt/images目录下。 查看镜像文件大小,并对其进行扩展 $ virt-filesystems --long --parts --blkdevs -h -a CentOS-7-x86_64-GenericCloud.qcow2 Name Type MBR Size Parent /dev/sda1 partition 83 1.9G /dev/sda /dev/sda device - 2.0G - $ virt-df -h CentOS-7-x86_64-GenericCloud.qcow2 Filesystem Size Used...
Read more