简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
开发多线程的应用系统,是在日常的软件开发中经常会遇到的需求。现在的编程语言都为多线程开发提供了很好的支持,无论是通过库的支持还是将多线程机制内建在语言之中。Python 也为多线程系统的开发提供了很好的支持。同样身为动态语言,Ruby 也提供了多线程的支持,但是在Ruby 1.9 之前的多线程机制是在语言的实现中模拟了线程及线程调度机制,而并没有使用操作系统本身的线程机制(在以后的描述中,我们称为
我们以RHEL6的xen netfront前端驱动为例。RHEL5的前端驱动,有一个acceleration的特性,是由一家叫solarflare的公司为其网卡定制的plugin,基本架构就是直接从网卡拿了包扔给虚拟机,不经过网桥,当然这需要前端后端都要支持这个acceleration feature。感兴趣的可以去看这篇文章http://www.tecnologika.co.uk/wp-co
以konrad的dom0 tree ( http://git.kernel.org/cgit/linux/kernel/git/konrad/xen.git/ ) 为base tree,分析下netback这两年的代码变化和相应patch首先一个比较大的变化在于netback不再依赖xen foreign page这个feature。我之前的文章 http://blog.csdn.net/ma
本篇讨论IP包的收发(暂不包括路由)先来看inet_init,首先是调用proto_register,注册了tcp_prot, udp_prot, raw_prot,其中proto_register前半部分是初始化各种slab_cache,后半部分把这些struct proto结构链到proto_list里其次调用sock_register,内核有一个全局的net_proto_fami
这篇是我临时加的,本来不打算放在整个内核协议栈分析的系列里的,但我现在觉得vlan还是蛮重要的,而且讨论vlan源码的文章很少,不知道我这篇算不算第一篇 :Dvlan的代码都在net/8021q/的内核目录下,首先我们来看8021q模块 (net/8021q/vlan.c)vlan_proto_init , vlan_cleanup_module 是模块的init/exit函数,我们来看v
tc是linux traffic control的简称,原理是在协议栈出包的时候,通过qdisc (Queue Discipline)和 filter 机制把不同规则定义的流放到不同class的子qdisc中(对于classful qdisc是这样,对于classless qdisc只有一个root qdisc)。网上关于tc的资料很多,本篇不去讨论tc的各种qdisc, class, filte
TSO,全称是TCP Segmentation Offload,我们知道通常以太网的MTU是1500,除去TCP/IP的包头,TCP的MSS (Max Segment Size)大小是1460,通常情况下协议栈会对超过1460的TCP payload进行segmentation,保证生成的IP包不超过MTU的大小,但是对于支持TSO/GSO的网卡而言,就没这个必要了,我们可以把最多64K大小的TC
这篇重点讲述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
下面来看各个子系统对cgroup的支持,第一篇先研究blkio子系统blkio子系统支持三种类型的QoS控制:blkio.weight, blkio.weight_device:这些是基于设备权重值的控制方式blkio.throttle.read_bps_device,blkio.throttle.write_bps_device:这些是基于带宽的控制方式blkio.throttl
本篇继续讨论IP包的收发ip_local_deliver:ip_local_deliver用来把数据包接收到本地,代码很短/* * Deliver IP Packets to the higher protocol layers. */ int ip_local_deliver(struct sk_buff *skb){ /* * R