自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 收藏
  • 关注

原创 Linux pid_max设置及内核源码处理分析

pid_max 内核源码处理分析以linux-3.2.6为例子分析init/main.c: asmlinkage void __init start_kernel(void) -> kernel/pid.c: void __init pidmap_init(void)void __init pidmap_init(void){ /* bump default and minimum

2017-05-12 09:44:08 5134

原创 Linux进程相关信息查询集合

查看进程内存占用情况查看进程的内存镜像信息pmap -d pid...mapped: 5252228K writeable/private: 5079956K shared: 24104K关注最后一行输出结果,mapped:表示进程的映射的虚拟地址空间大小,即预分配虚拟内存大小,同ps的vszwriteable/private:进程占有的私有地址空间大小,即进程实际使用的内存

2017-05-11 21:41:03 412

原创 Python import module 源码处理逻辑简记

总的入口是load_module导入的文件存在py文件,走load_source_module1. 获取py文件最新时间2. 尝试打开pyc,打开失败,则重新编译,打开成功,从pyc里面取出magic和时间戳,有一个不一样,就重新编译pyc。如果都一样,则从pyc读取代码段。3. pyc打开或者magic、时间戳校样失败,则重新编译pyc。    3.1 对

2017-04-05 21:47:38 1233

原创 ansible 变量优先级

ansible中变量的优先级extra vars (-e 选项指定的变量)最高 inventory 主机清单中定义的变量(ansible_ssh_user等)play剧本中vars、vars_files定义的变量系统的facts变量角色定义的默认变量 最低从上到下优先级逐渐降低,高优先级会覆盖掉低优先级的变量

2017-04-05 21:38:17 4811

原创 磁盘物理接口指令对应接口类型

ATA和SCSI指令提供的不同的物理接口ATAIDE PATA(并行ATA) IDE接口SATA Serial ATA(串行ATA) SATA接口SCSIParallel SCSI 并行SCSI接口Serial SCSI (Small Compute System Interface:小型计算机接口) 、SAS、 串行SCSI接口IBM private Serial SCSI (SSA

2017-04-04 15:42:35 550

转载 Linux常用性能调优工具索引

前段时间看到brendangregg的 Linux Performance Analysis and Tools PPT里面提到Linux常用性能调优工具, 见下图: 其中提到了的工具,大部分在我日常工具箱里或者在实践的案例里面使用过, 都有很高的价值,这里方便大家索引下: nicstat: 参见 这里 oprofile: 参见 这里 perf: 参见 这里 systemtap: 参见 这

2017-03-30 13:01:30 571

原创 十分钟快速上手tmux,实现高效多屏工作

先看一张多屏效果图 tmux的3级关系是:session:windows:panel安装macbrew install tmuxlinuxyum/apt-ge install tmux使用创建一个tmux sessiontmux new也可以直接输入tmux(这种情况下,会话名称是0、1、2…的数字),或者通过-s选项制定会话名称(个人没怎么使用名称这个功能)查看已经存在会话t

2017-03-29 22:01:34 6076

原创 ceph源代码分析之librados:1. AioCompletion回调机制分析

Aio即Async IO,AioCompletion即Async Io Completion,也就是Async IO完成时的回调处理制作,librados设计AioCompletion就是为了提供一种机制对Aio完成时结果码的处理。而处理函数则由使用者来实现。设计librados设计了两个类:AioCompletion、AioCompletionImpl 类的关系图如下: 从上面可以看出,Aio

2017-03-28 11:12:09 4150 2

原创 Ceph源码分析之Async模块:3. Async+posix的协议栈收发消息模型分析

ceph Async模块提供一种异步收发消息的机制,最底层的异步机制可以查看博文 Ceph源码分析之Async模块:1、异步通信核心模块EventCenter+Epoll,上层的收发消息机制可以查看博文Ceph源码分析之Async模块:2、上层通信模型。因此这里主要介绍的是整个异步消息机制的中间层,即ceph抽象网络协议栈。在L版的ceph中,支持3种Async类型的网络协议栈PosixNetwo

2017-03-28 08:27:46 3214

原创 Ceph源码分析之Async模块:2、上层通信模型

在博文Ceph源码分析之Async模块:1、异步通信核心模块EventCenter+Epoll 里面介绍了Async实现异步通信的底层核心模块。这次打算从上层应用来看ceph的通信模型模型。ceph通信模块的源代码定义在msg目录下,消息类型定义在message目录下面。概述ceph各个组件直接的通信以及和客户端直接的通信都依赖与ceph的通信模块,捋清楚通信模块对阅读源代码会有帮助。 先看一张简

2017-03-24 13:45:46 2164

原创 Ceph源码分析之Async模块:1、异步通信核心模块EventCenter+Epoll

概述EventCenter是Async异步消息通信的核心模块,通过事件/回调模型向上提供异步消息通信,每个Async下的worker线程负责处理一个EventCenter的事件集合。EventCenter针对不同类型的事件使用不同的事件监听来处理事件回调。详细设计事件类型目前EventCenter共支持4种类型的事件,每个worker线程在进入事件处理逻辑的时候,会分别对这4种事件类型的事件进行处理

2017-03-23 21:51:03 3431 1

原创 python源代码编译(基于centos7)

如何快速的搭建python源代码的开发环境?基础环境:centos7.11、获取源代码git镜像python官方ftp服务器以2.7.5为例子wget https://www.python.org/ftp/python/2.7.5/Python-2.7.5.tgz2、生成编译目录你可用直接在解压的源码里面里面构建编译模块,也可用自己创建编译目录,推荐

2016-12-19 13:54:06 2008

原创 cpio制作initramfs

1、制作find . | cpio -o -H newc | gzip > ../rootfs.cpio.gz2、解压zcat rootfs.cpio.gz | cpio -i -d -H newc --no-absolute-filename3、内核逻辑编译内核的时候会有一个GEN initramfs_data.cpio.gz如果有文件,就编译

2016-12-08 17:51:55 3477

原创 python字符串切割:str.split()和re.split()对比

1、str.split不支持正则及多个切割符号,不知切割符号左右边的各个数量。>>> s1="aa bb cc">>> s1.split(' ')['aa', 'bb', '', 'cc']因此split只适合简单的字符分割2、re.split,支持正则及多个字符切割>>> print lineabc aa;bb,cc | dd(xx).xxx 12.12' xxxx

2016-12-08 14:50:48 134973 7

原创 openstack热迁移机制分析(libvirt热迁移模型、nova热迁移控制逻辑、调试方法)

前段时间在解决大内存热迁移失败的时候,查阅了下openstack热迁移相关知识,有了一些记录跟大家分享下。以基于L版openstack+qemu/kvm,跟大家分享下API库libvirt的热迁移机制和nova控制逻辑的一些记录。注:这篇博客我同步发布在我司的公众号上:openstack热迁移机制分析。一、libvirt热迁移原理libvirt的迁移主要分为两个层面:网络数据传

2016-12-06 08:04:51 11731 8

原创 深入openstack rpm打包原理(openstack cinder rpm打包完全分析)

在这篇博文openstack软件包管理我已经介绍了下openstack打包原理最核心的原理和问题,但是并没有以实际的例子来介绍,因此这篇博文主要是通过cinder的spec文件来深入的讲解如何通过rpmbuild工具打出自己的版本,顺带对涉及到rpmbuild相关的知识做讲解,本次博文的主要笔记直接记录在spec文件里中。我的rpmbuild的测试环境:RPM 版本 4.11.3rpm

2016-12-02 16:53:52 4053 2

原创 深入理解python 命令行解析模块optparse(optparse源代码解读)

optparse是python用来解析命令行参数的,最早是getopt,option比getopt更强大和灵活。最新的命令行解析使用argparse,因此optparse今后将不会再被开发,optparse在python的源代码位置是Lib/optparse.py。optparse.py模块主要类结构简介optparse里面包含了几个主要的类:OptionParser解析类、Option定义类、Va

2016-12-02 16:24:10 7131 1

原创 openstack软件包管理(rpm编译分析+distutils+setuptools+pbr)

openstack是用python语言编写的,遵循标准的python的软件包管理形式,更具体的说openstack的项目都是通过setuptools+pbr来管理发布软件包。setuptools是distutils增强版,因此下面我们先通过简单的介绍下distutils的工作原理,然后再说下openstack的组件是如何通过setuptools+pbr来管理,最后说下openstack是如何编译成r

2016-11-30 16:58:47 1871

原创 how to download rpm spec source tarball

一般我们在写spec的时候,会定义形如下面的: Source0: http://tarballs.openstack.org/%{pypi_name}/%{pypi_name}-%{upstream_version}.tar.gz这时候,我们就可以通过spectool这个工具来下载这个tarball spectool -g -R spec/xxxx.spec更具体的时候

2016-11-29 08:11:59 773

原创 rpm 宏定义(macros.in)

宏定义文件:跟宏定义相关的文件可分为两类:直接定义类 /usr/lib/rpm/macros、/usr/lib/rpm/macros.d、/usr/lib/rpm/redhat/macros、/etc/rpm/、~/.rpmmacros 直接定义顾名思义就是直接写在文件里面的,这四个文件的优先级为:用户自定义相关:~/.rpmmacros > 系统相关的配置:/etc/rpm/ > 全局扩

2016-11-28 16:31:29 8002

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除