手机随时阅读
新人专享大礼包¥24
51CTO博客开发
在Linux3.5版本(包括)之前,存在一个路由cache,这个路由cache的初衷是美好的,但是现实往往是令人遗憾的。以下是陈列得出的两个问题:1.面临针对hash算法的ddos问题(描述该问题的文章已经汗牛充栋,不再赘述);2.缓存出口设备是p2p设备的路由项会降低性能。这 些问题本质上是由于路由cache的查找方式和路由表的查找方式互不相容引起的。路由cache必须是精确的元组匹配,因此它必
由于工作地更替,我觉得我将有很长的一段时间在深圳了,因此决定举家从上海搬到深圳,虽然舍不得上海的朋友,同事,以及已经居住了3年的房子,但是还是不得不举家搬迁。从 2015年9月份面试,到2015年11月上旬入职,这期间经历了工作交接,醉酒以及离别,从11月份到2016年春节,一直忙着搬家。其实我的想法是简 单的,上海的房子不租,到深圳租个稍微差一点的房子,只要小小上学方便即可,这样我也就不需要搬太
几年前,我记得写过好几篇关于Linux去除对路由cache支持的文章,路由cache的下课来源于一次对路由子系统的重构,具体原因就不再重复说了,本文将介绍这次重构对Redirect路由以及neighbour子系统的影响。事实上,直到最近3个月我才发现这些影响是如此之大,工作细节不便详述,这里只是对关于开放源代码Linux内核协议栈的一些实现上的知识进行一个汇总,以便今后查阅,如果有谁也因此获益,则
系统中有很多变量用来记录一个单调递增的现实,典型的有两个,一个是TCP的序列号,另一个就是jiffies,但是由于计算机内表示的数字都 是有限无界的,所以任何数字都不能做到完全意义的单调递增,它们只是在绕圈圈,就像钟表一样,值域就是那些有限的数字,周而复始。实际上不管是TCP序列 号还是jiffies,都面临一类问题,就是回绕问题。就像我们看钟表,1点时在11点前呢,还是在11点后呢?其实这个问题
本文题目有点大,但其实我只想描述一些我个人一直比较关注的特性,并且不会太详细,跟往常一样,主要是帮忙理清思路的,不会分析源码。这主要是为了哪一天突然忘了的时候,一目十行扫一眼就能记忆当时的理解,不然写的太细节了,自己都看不懂了。Lockless TCP listener先 从TCP的syncookie说起,如果都能使用syncookie机制该有多好,但是不能,因为它会丢失很多选项协商信息,这些信息
和前面文章的第一部分一样,这些文字是为了帮别人或者自己理清思路的,而不是所谓的源码分析,想分析源码的,还是直接debug源码最好,看任何文档以及书都是下策。因此这类帮人理清思路的文章尽可能的记成流水的方式,尽可能的简单明了。Linux 2.6+内核的wakeup callback机制Linux 内核通过睡眠队列来组织所有等待某个事件的task,而wakeup机制则可以异步唤醒整个睡眠队列上的tas
与网络数据包的发送不同,网络收包是异步的的,因为你不确定谁会在什么时候突然发一个网络包给你,因此这个网络收包逻辑其实包含两件事:1.数据包到来后的通知2.收到通知并从数据包中获取数据这两件事发生在协议栈的两端,即网卡/协议栈边界以及协议栈/应用边界:网卡/协议栈边界:网卡通知数据包到来,中断协议栈收包;协议栈栈/应用边界:协议栈将数据包填充socket队列,通知应用程序有数据可读,应用程序负责接收
上周,在我们进行性能测试的时候,发现了一个问题。我们的服务器上启了一个redis服务端,侦听0.0.0.0的1234端口,同处在本机的另外一个进程会频繁发起到该服务端的短连接,结果导致了两个问题:1.大量的TIME_WAIT状态的连接;2.发起连接的进程的CPU占用率接近100%。这两个结果严重影响了我们网关的性能,在分析具体原因之前,首先做一个提倡,那就是:本机连接本机,首选UNIX域套接字而不
1.O(1)调度器的时间计算公式与CFS调度器Linux 2.6.23之前普遍采用了O(1)调度器,它是一种基于优先级的时间片调度算法,所谓的O(1)只是它的一些精巧的数据结构使然,在不考虑动态补偿/惩 罚的情况下,只要优先级确定,那么时间片就是固定的。2.6.23以后的CFS呢,它是一种基于权重的非时间片调度算法,进程每次执行的时间并不是固定 的,而是根据进程数在一个准固定周期内按照其权重比例
想象一下当初为什么不让多个进程/线程在一个相同的IP地址和端口上侦听,很简单,这是因为TCP/IP模型将一个端口作为一个四层复用解复用的唯一标 识,也就是一个四层地址,正如IP地址属于一个主机一样(属于一块网卡?),一个IP/端口对属于一台主机上一个特定的进程,它只是一个保证唯一性的静态 标识。世界上不同的主机不能有相同的IP地址,一台主机上绑定特定IP地址的不同进程也不能有相同的端口,否则就不知
1.BFS调度器与O(1)调度器O(1)调度器采用二级分类,第一级是CPU,即每一个CPU一个队列,第二级是优先级,每CPU队 列又细分为140个优先级队列。第一级采用负载均衡调度,第二级采用优先级调度。虽然很清晰,但是要加入“小手段”来补偿/惩罚。本质上CFS调度器也一 样,只是采用了红黑树以及新增了一个虚拟时钟层屏蔽了补偿/惩罚操作。BFS调度器同样采用二级队列,第一级是优先级分类,第二级是个
今天外出,资深烟民在机场安检后怎能不找吸烟室...上海虹桥机场,我看到了下面的设施:很 简单,不先进,也许你会说我孤陋寡闻,但我不反驳。这个装置真的让我怦然心动,真的!这种设计不会出自传统中国设计师之手,因为传统设计师希望让自己的设 计很复杂以提高门槛,觉得自己很牛X。这个设计组合了最简单的几个小物件,一把锁,几个打火机,一个固定铁架子,足够了,难道不是吗?很美!  
本文可以作为《Linux转发性能评估与优化(转发瓶颈分析与解决方案)》 的姊妹篇,这两篇文章结合在一起,恰好就是整个Linux内核协议栈的一个优化方案。事实上Linux协议栈本来就是面向两个方向的,一个是转发,更多的 是本地接收。目前大量的服务器采用Linux作为其载体,更加体现了协议栈本地处理相对于转发的重要性,因此本文就这个问题扯两句,欢迎拍砖!0.声明:0).关于来源昨天就答应皮鞋厂老板了,
作为这个系列的第一篇,我先来描述一下slab系统。因为近些天有和同事,朋友讨论过这个主题,而且觉得这个主 题还算比较典型,所以就作为第一篇了。其实按照操作系统理论来讲,进程管理应该更加重要些,按照我自己的兴趣来讲,IO管理以及TCP/IP协议栈会更加 有分量,关于这些内容,我会陆续给出。 Linux内核的slab来自一种很简
Copyright © 2005-2022 51CTO.COM 版权所有 京ICP证060544号