自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 STT协议解析

STT协议全称是Stateless Transport Tunneling Protocol,是nicira.com给ietf提交的一个隧道协议的drafthttp://tools.ietf.org/html/draft-davie-stt-01STT是一种mac over ip的协议,和vxlan, nvgre类似,都是把二层的帧封装在一个ip报文的payload中,在ip报文的

2012-09-04 15:11:02 8886

原创 linux内核网络协议栈学习笔记:关于GRO/GSO/LRO/TSO等patch的分析和测试

TSO,全称是TCP Segmentation Offload,我们知道通常以太网的MTU是1500,除去TCP/IP的包头,TCP的MSS (Max Segment Size)大小是1460,通常情况下协议栈会对超过1460的TCP payload进行segmentation,保证生成的IP包不超过MTU的大小,但是对于支持TSO/GSO的网卡而言,就没这个必要了,我们可以把最多64K大小的TC

2012-09-02 21:23:24 32419 2

原创 open vswitch研究:ovs的安装和使用

通过git clone git://openvswitch.org/openvswitch下载ovs代码到本地,运行boot.sh,如果遇到提示autoconf版本过低,可以去找最新的autoconf m4等rpm包安装或者通过yum update更新,也可以去下一个较新的包自己装下,e.g. http://ftp.gnu.org/gnu/autoconf/autoconf-2.69.

2012-08-28 21:08:36 47801 6

原创 关于xen的杂七杂八(build dom0)

今天尝试了在RHEL6上重新build了xen和dom0,按照xen.org的wiki上的步骤来做基本没啥问题,xend在build的时候貌似会绑定到build环境的python版本,之后如果在其他的python环境下xend会起不起来build可以参考这篇 http://wiki.xen.org/wiki/RHEL6_Xen4_Tutorial1. src.rpm的下载地址:

2012-08-24 15:30:22 3061

原创 linux内核网络协议栈学习笔记(4)

本篇不关注交换机相关的如BPDU,STP之类的实现,如果可能后续会在研究ovs的文章中跟进这块,本文只关注linux内核中的bridge模块在数据包收发链中的角色我们知道内核的net_device的结构后面一般会跟一块内存作为私有数据,不同的网卡驱动会利用这块内存存放自己的私有结构,如intel驱动的ixgbe_q_vector。bridge驱动的私有结构为net_bridgestruct

2012-08-17 00:38:30 5182

原创 linux内核网络协议栈学习笔记(3)

这篇主题是内核二层包的接受发送,先来看接收:首先关注下几个状态值__QUEUE_STATE_FROZEN:发送队列被锁__QUEUE_STATE_XOFF:发送队列发送功能关闭__LINK_STATE_START:设备是否开启__LINK_STATE_PRESENT:设备是否存在,如驱动未安装就不存在__LINK_STATE_NOCARRIER:设备是否接收到载波,

2012-08-07 22:42:09 9841

原创 linux内核网络协议栈学习笔记(2)

这篇主要介绍net_device设备的注册,初始化等流程如今的网卡无论是千兆卡还是万兆卡,基本都是pci设备(万兆卡基本上都是pcie设备),我们首先来看下pci设备相关的操作struct pci_device_id {      __u32 vendor, device;       /* Vendor and device ID or PCI_ANY_ID*/    __u

2012-07-29 18:09:17 3926

原创 linux内核网络协议栈学习笔记(1)

这个系列内容会有点杂,会涉及tcp/ip, netfilter, lvs, 网卡驱动等各个方面。。下半年准备把内核网络这一块好好研究下。。好吧从第一篇开始这篇介绍内核网络中最重要的数据结构,大部分可以在understanding linux network internal里找到struct sockstruct sock首先包含一个struct sock_common结构,主

2012-07-16 15:27:17 6070 2

原创 vim bible

PS以下内容都是从互联网和平时收集下来插件篇:1. minibuf下载地址http://www.vim.org/scripts/script.php?script_id=159版本6.3.2安装将下载的 minibufexpl.vim文件丢到 ~/.vim/plugin 文件夹中即可手册在minibufex

2012-06-19 16:24:17 1087

原创 linux通过tc控制网络QoS(1)

tc是linux traffic control的简称,原理是在协议栈出包的时候,通过qdisc (Queue Discipline)和 filter 机制把不同规则定义的流放到不同class的子qdisc中(对于classful qdisc是这样,对于classless qdisc只有一个root qdisc)。网上关于tc的资料很多,本篇不去讨论tc的各种qdisc, class, filte

2012-06-07 18:32:58 10037

原创 在ubuntu12.04下build自己的openjdk

一个流水帐的记录,好多是参考了别人的blog,由于下面会做一些jvm的研究和jdk的hack,经常性build jdk那是必不可少的了。我的系统是ubuntu12.04,之前先装了jdk1.6.0_31build openjdk之前,需要做一些依赖的准备工作Common UNIX Printing System (CUPS) Headers (Solaris & Linux)S

2012-04-26 18:50:42 2702

原创 linux的qos机制 - cgroup篇 (4)

下面来看各个子系统对cgroup的支持,第一篇先研究blkio子系统blkio子系统支持三种类型的QoS控制:blkio.weight, blkio.weight_device:这些是基于设备权重值的控制方式blkio.throttle.read_bps_device,blkio.throttle.write_bps_device:这些是基于带宽的控制方式blkio.throttl

2012-04-24 17:31:26 3675

原创 关于xen的杂七杂八 (DomU安装)

DomU就是guest domain,安装一个domU基本上是个体力活,我自己好久不做了几乎都忘了,最近要测试几个系统所以又捡起来,这里把流程记录下,以后用脸滚键盘就行了。。。DomU分为两种:para-virtualization 和 hardware-virtualization,具体的解释去xen.org上看去。这两种DomU安装方法是不同的。Para-Virtualizatio

2012-04-18 13:29:00 13239

原创 linux的CFQ调度器解析(3)

static struct elevator_type iosched_cfq = {.ops = {.elevator_merge_fn = cfq_merge,.elevator_merged_fn =cfq_merged_request,.elevator_merge_req_fn =cfq_merged_requests,.elevator_allow_merge_

2012-04-18 12:52:12 2579

原创 linux的CFQ调度器解析(2)

cfq_queue的属性中,包括workload priority:IDLE, BE, RT,包括workload type:ASYNC, SYNC_NOIDLE, SYNC。同时cfq_queue虽然基于CFQ调度器,但其内部的算法还是基于dead-line的cfq_group包含了多个红黑树service tree,对应不同workload priority, workload type

2012-04-18 12:51:52 10925

原创 linux的CFQ调度器解析(1)

CFQ调度器是四种IO Scheduler中最复杂的一个,redhat有个文档可以做为入门的文档先了解下 red-hat-enterprise-linux-5-io-tuning-guide.pdfThe cfq scheduler maintains a maximum of 64 internal request queues; each process running on th

2012-04-18 12:51:12 12648

原创 screen bible

每次用screen总会忘记一些用法,然后去网上查,后来干脆就不用了。。不过现在发现screen真的很好用,现在把网上有用的关于screen的东西整理如下screen -S xxxx:新建一个screenscreen -ls:查看当前运行的screenscreen -d -r xxxx:重新attach到某个screen(如有必要可以先detach)screen -r xxxx:at

2012-03-19 18:22:05 934

原创 linux的qos机制 - cgroup篇 (3)

从这篇开始介绍cgroup的原理,这两篇文章很不错先放这里http://blog.csdn.net/ustc_dylan/article/details/4030824http://blog.csdn.net/ustc_dylan/article/details/4030831/* The default css_set - used by init and its c

2012-03-08 22:43:00 2121

原创 linux的qos机制 - dm-ioband篇 (4)

这篇延续上一篇的内容,通过几个典型场景来分析dm-ioband的工作流程。第一个场景是 http://sourceforge.net/apps/trac/ioband/wiki/dm-ioband/man/examples 中的example 1,首先调用命令创建两个ioband device,# echo "0 $(blockdev --getsize /dev/sda1) ioba

2012-03-06 20:32:07 1375

原创 linux的qos机制 - dm-ioband篇 (3)

这一篇讲解 ioband 的机制ioband的原理很简单:ioband设备设置了许多group,每个group有自己的权重和阀值,ioband驱动对于这些group的IO请求进行QoS控制。ioband设备基于token来进行控制,根据group的权重分配不同的token。而策略也包括基于request的和基于sector的token控制dm-ioband涉及到几个重要的数据结构:st

2012-03-05 23:09:22 1643

原创 linux的qos机制 - dm-ioband篇 (1)

dm-ioband并没有集成在mainstream kernel里,需要打patch才能用,而且,必须是kernel社区的源码,像我用红帽子的kernel打patch是会报错的。。。http://sourceforge.net/apps/trac/ioband/wiki/dm-ioband下载patch完了之后打上,然后make menuconfig,这时在lvm/raid/devic

2012-02-28 02:16:50 2470

原创 linux的qos机制 - cgroup篇 (2)

这篇重点讲述cgroup如何控制blkio子系统的qos,首先看下设置blkio.weight blkio.weight_device 我的理解是blkio.weight是整个io子系统的权重值,而blkio.weight_device是针对特定的 major:minor 设备的权重blkio.throttle.read_bps_device blkio.throttle.write_bp

2012-02-16 20:28:52 3388 1

原创 linux的qos机制 - cgroup篇 (1)

cgroups全称control groups,在RHEL6的2.6.32内核中已经包括了cgroup的patch。这里强烈建议安装RHEL6(CentOS6)来使用cgroups,如果没有的话,只能升级内核了 ( > 2.6.26版本) 下面的例子通过对cgroups的blkio, cpuset, memory三个子系统的实现来演示如何应用cgroups,我们这里不使用红帽子的libcgro

2012-02-16 01:21:00 6460

原创 linux aio (1)

首先推荐这篇文章 http://hi.baidu.com/_kouu/blog/item/e225f67b337841f42f73b341.html准备分三部分来讲,内核的aio,glibc也就是用户空间的aio,内核aio如何通知用户空间内核的aio是通过用户态的libaio库开放出去的,libaio其实啥也没做,只是封装了一些系统调用,去调用aio.h/

2011-12-18 20:56:45 5136

原创 vmware环境下的kgdb环境配置和模块调试示例 (2)

这一篇用一个简单的例子来说明调试kernel module的过程,例子是ldd3书上的hellp模块首先需要在目标机上编出hellop.ko出来,然后把 hello.ko 和 hellop.c 拷贝到开发机上。OK,下面在目标机上 insmod hellop.ko whom="dude" howmany=5这时候可以 echo g > /proc/sysrq-trigger,从而挂起ker

2011-11-15 03:31:18 1225

原创 vmware环境下的kgdb环境配置和模块调试示例 (1)

linux下的模块开发,不可避免要用到kgdb来调试,kgdb的调试环境需要一台开发机,一台目标机,其中代码运行在目标机上,开发机通过串口来调试目标机上的模块代码。用vmware可以方便的使用管道来代替真正的串口,而且只用一台笔记本就可以玩起来,非常简单粗暴 1. 开发机和目标机通过vmware的命名管道建立串口设备,其中开发机作为管道的client,目标机作为管道的server,如图所示

2011-11-14 12:47:51 3385

原创 xen块设备体系结构 - tapdisk2 (4)

tapdisk vbd重新回到 tapdisk2 的进程,这里我们重点研究下 tapdisk-vbd.c 中的重要函数tapdisk2 进程初始化会调用 tapdisk2_open_device 打开通过配置项目指定的 vbd 设备,e.g.  vhd:xxxxx

2011-10-08 01:59:12 2302

原创 xen块设备体系结构 - tapdisk2 (3)

tapdisk vhd block device driverstruct tap_disk tapdisk_vhd = {.disk_type          = "tapdisk_vhd",.flags              = 0,.priva

2011-10-07 15:09:00 1734

原创 xen块设备体系结构 - tapdisk2 (2)

tapdisk2 logtapdisk2 的log 分为两部分 /var/log/messages , /tmp/tapdisk.log.${PID} tapdisk syslog 以 tapdisk[1231] 开头,这里1231是进程号tapdisk log 一般

2011-10-04 17:39:08 5151

原创 xen块设备体系结构 - tapdisk2 (1)

tapdisk2struct tap_disk {const char                  *disk_type;td_flag_t                    flags;int

2011-09-29 17:13:27 3286

原创 xen块设备体系结构(7)

tapdisk恭喜,我们又回到tapdisk2进程上面来。我们已经知道 tapdevXXX 的块设备的读写,最终要落到实际的物理磁盘上,是要经过blktapXXX 字符设备,以及 tapdisk2进程的。我们首先来看 tapdisk2 进程是如何获取IO request,

2011-09-21 00:05:30 2163

原创 xen块设备体系结构(6)

blktap 续blktap_deviceblktap_device的结构很简单:struct blktap_device {spinlock_t                     lock;struct gendisk

2011-09-12 22:36:49 1678

原创 关于xen的杂七杂八(xm)

xm vcpu-pin / xm vcpu-set  今天做演示时在dom0执行 xm vcpu-pin 0 1 1,结果总是报错 -22 Invalid argument  最后怀疑可能由于启动xen时,指定了dom0_max_vcpus dom0_vcpus_pin参数。

2011-09-06 22:56:20 1651

转载 Linux的RCU锁机制

看了一堆RCU的文档,总结一下,这玩意儿实际编程用得不多,权当自娱自乐https://www.ibm.com/developerworks/cn/linux/l-rcu/LDD3rd中 linux同步机制 章节有对RCU比较透彻的介绍htt

2011-08-27 23:21:56 4414

原创 xen块设备体系结构(5)

blktap又回到那个问题,I/O请求从前端到后端blkback之后,如何从blkback到大tapdisk2进程?pvops/Drivers/Xen/Blktap/ 下面是blktap的驱动代码,其中blktap的设备结构如下:struct

2011-08-26 03:13:17 3158

原创 xen块设备体系结构(4)

blkback/blktaplinux-2.6-kernel/drivers/xen/blkbacklinux-2.6-kernel/drivers/xen/blktap里面都是dom0里后端块设备的驱动代码。后端块设备驱动初始化函数如下,这个是最

2011-08-21 17:25:13 4069 1

原创 xen块设备体系结构(2)

xenbushttp://wiki.xen.org/xenwiki/XenBushttp://apps.hi.baidu.com/share/detail/30800929http://hi.baidu.com/mars208/blog/ite

2011-08-15 21:21:19 4703

原创 xen块设备体系结构(1)

序:看代码顺手写的备忘,如有错误之处请各位大侠多多指教blktap2blktap2的README里有这段话,讲述了blktap2的原理:Working in conjunction with the kernel blktap2 driver, all dis

2011-08-13 23:29:59 5116

转载 深入Windows 7的Virtual Hard Disk (VHD) 技术

(这篇文章放这里,省得每次都去baidu,哼哼)VHD入门:http://blogs.technet.com/b/fyu/archive/2009/01/21/windows-7-virtual-hard-disk-vhd.aspxhttp://blogs.tec

2011-08-09 01:37:12 1428

转载 Mounting images in Dom0 using the blktap2 driver

Tap (and blkback) disks are also mountable in Dom0 without requiring anactive VM to attachThe syntax is - tapdisk2 -n :

2011-08-02 22:44:11 1041

空空如也

空空如也

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

TA关注的人

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