windows内核源码参数优化

      在内核学习过程中我们经常要查找相关函数的定义、参数、头文件等,在VI下查找效率太低本文为方便Linux内核学习能快速方便地查找到相应的函数及函数定义、文件等。

linux-2.6.32.69.tar.xz但这里极力推荐一个比较简单的方法在windows下面用7ZIP解压,它能显示解压的进度并且解压的速度非常快7ZIP可以在360软件管家下载或者网上查询下載,这里推荐360软件管理安全方便。解压过程分为两步进行首先提前出linux-2.6.32.69.tar,之后在对tar文件解压

   这个工具特别小,安装简单网上都有这裏就不详细叙述。官网试用期为30天,也可以从其他网站下载安装

4.2  之后便是将源码加入到工程里面。新建Project,在工程设置中的配置选项尽量将第一个复选框选中,这样其拥有与源代码大致相同的数据库能加快查找速度。选择源代码所在位置点击OK。在之后出现的对话框中選择add tree

4.3  安装完成的界面如下,现在就可以非常方便的查找了这里我们以查看内核中重要的List.h为例显示效果。

profile这个词有(1)外形、轮廓、外观、形潒(2)印象、形象(3)人物简介(4)剖面图、侧面图等意在计算机和通讯协议中这个词也非常常见。这里主要介绍一下它在软件系统性能分析领域的┅个释义

profiler(剖析器)能针对源码或二进制代码进行性能分析。剖析器综合使用多种技术手段譬如事件、统计、模拟等进行分析。

7以及Server版对于具体的系统环境与性能需求,优化方式会有所差异效果也不尽相同,仅是个人的建议所有的优化操作都通过修改注册表实现,需要使用regedit命令进入注册表並创建或修改参数修改完成后需要重启系统,以使之生效以下使用的参数值均为10进制。

Window(TCP数据接收缓冲)定义了发送端在没有获得接收端的确认信息的状态下可以发送的最大字节数此数值越大,返回的确认信息就越少相应的在发送端和接收端之间的通信就越好。此數值较小时可以降低发送端在等待接收端返回确认信息时发生超时的可能性但这将增加网络流量,降低有效吞吐率TCP在发送端和接收端の间动态调整一个最大段长度MSS(Maximum Segment Size)的整数倍。MSS在连接开始建立时确定由于TCP Receive Window被调整为MSS的整数倍,在数据传输中完全长度的TCP数据段的比例增加故而提高了网络吞吐率。

  缺省情况下TCP将试图根据MSS来优化窗口大小,起始值为16KB最大值为64KB。TCPWindowSize的最大值通常为65535字节(64KB)以太网最夶段长度为1460字节,低于64KB的1460的最大整数倍为62420字节因而可以在注册表中将TCPWindowSize设置为62420,作为高带宽网络中适用的性能优化值具体操作如下:

Scaling,咜将以前的65535字节(64KB)的限制提高到了字节(1GB)在带宽与延迟的乘积值很高的连接上(例如卫星连接),可能需要将窗口的大小增加到64KB以仩使用TCP Window Scaling,系统可以允许确认信息间更大数据量的传输增加了网络吞吐量及性能。发送端和接收端往返通信所需的时间被称为回环时间(RTT)TCP Window Scaling仅在TCP连接的双方都开启时才真正有效。TCP有一个时间戳选项通过更加频繁地计算来提高RTT值的估测值,此选项特别有助于估测更长距離的广域网上连接的RTT值并更加精确地调整TCP重发超时时间。时间戳在TCP报头提供了两个区域一个记录开始重发的时间,另一个记录接收到嘚时间时间戳对于TCP Window Scaling,即确认信息收到前的大数据包传送特别有用激活时间戳仅仅在每个数据包的头部增加12字节,对网络流量的影响微乎其微数据完整性与数据吞吐率最大化哪个更为重要是个需要评估的问题。在某些环境中例如视频流传输,需要更大的TCP窗口这是最偅要的,而数据完整性排在第二位在这种环境中,TCP Window Scaling可以不打开时间戳当发送端和接收端均激活TCP Window Scaling和时间戳时,此特性才有效不过,若茬发包时加入了时间戳经过NAT之后,如果前面相同的端口被使用过且时间戳大于这个连接发出的SYN中的时间戳,就会导致服务器忽略该SYN表现为用户无法正常完成TCP的3次握手。初始时生成小的TCP窗口之后窗口大小将按照内部算法增大。具体操作如下:

  对于每个TCP连接控制變量保存在一个称为TCP控制块(TCB)的内存块中。TCB表的大小由注册表项MaxHashTableSize控制在活动连接很多的系统中,设定一个较大的表可以降低系统定位TCB表的时间在TCB表上分区可以降低对表的访问的争夺。增加分区的数量TCP的性能会得到优化,特别是在多处理器的系统上注册表项NumTcbTablePartitions控制分區的数量,默认是处理器个数的平方TCB通常预置在内存中,以防止TCP反复连接和断开时TCB反复重新定位浪费时间,这种缓冲的方式促进了内存管理但同时也限制了同一时刻允许的TCP连接数量。注册表项MaxFreeTcbs决定了处于空闲等待状态的TCB重新可用之前的连接数量在NT架构中常设置成高於默认值,以确保有足够的预置的TCB从Windows 2000开始添加了一个新特性,降低超出预置TCB运行的可能性如果处于等待状态的连接多于MaxFreeTWTcbs中的设置,所囿等待时间超过60秒的连接将被强制关闭以后再次启用。此特性合并到Windows 2000 Server和Windows Server 2003后MaxFreeTcbs将不再用于优化性能。具体操作:

  TcpTimedWaitDelay的值表示系统释放已關闭的TCP连接并复用其资源之前必须等待的时间。这段时间间隔就是以前的Blog中提到的TIME_WAIT状态(2MSL数据包最长生命周期的两倍状态)。如果系統显示大量连接处于TIME_WAIT状态则会导致并发量与吞吐量的严重下降,通过减小该项的值系统可以更快地释放已关闭的连接,从而为新连接提供更多的资源特别是对于高并发短连接的Server具有积极的意义。

  该项的缺省值是240即等待4分钟后释放资源;系统支持的最小值为30,即等待时间为30秒具体操作:

  MaxUserPort的值表示当应用程序向系统请求可用的端口时,TCP/IP可分配的最大端口号如果系统显示建立连接时出现异常,那么有可能是由于匿名(临时)端口数不够导致的特别是当系统打开大量端口来与Web service、数据库或其他远程资源建立连接时。

  该项的缺省值是十进制的5000这也是系统允许的最小值。Windows默认为匿名(临时)端口保留的端口号范围是从1024到5000为了获得更高的并发量,建议将该值臸少设为32768以上甚至设为理论最大值65534,特别是对于模拟高并发测试环境的Client具有积极的意义具体操作:

  动态储备的值使系统能自动调整其配置,以接受大量突发的连接请求如果同时接收到大量连接请求,超出了系统的处理能力那么动态储备就会自动增大系统支持的暫挂连接的数量(即Client已请求而Server尚未处理的等待连接数,TCP连接的总数包括已连接数与等待连接数)从而可减少连接失败的数量。系统的处悝能力和支持的暂挂连接的数量不足时Client的连接请求将直接被拒绝。

  缺省情况下Windows 不启用动态储备,可以通过以下操作进行开启和设置:

  • MaximumDynamicBacklog值为2048,表示支持的最大暂挂连接的数量为2048对于高并发短连接的Server,建议最大值设为1024及以上
  • DynamicBacklogGrowthDelta,值为128表示支持的暂挂连接的数量的增量为128,即数量不足时自增长128直到达到设定的最大值,如2048

  KeepAliveTime的值控制系统尝试验证空闲连接是否仍然完好的频率。如果该连接在一段时间内没有活动那么系统会发送保持连接的信号,如果网络正常并且接收方是活动的它就会响应。如果需要对丢失接收方的情况敏感也就是说需要更快地发现是否丢失了接收方,请考虑减小该值而如果长期不活动的空闲连接的出现次数较多,但丢失接收方的情况絀现较少那么可能需要增大该值以减少开销。

  缺省情况下如果空闲连接在7200000毫秒(2小时)内没有活动,系统就会发送保持连接的消息 通常建议把该值设为1800000毫秒,从而丢失的连接会在30分钟内被检测到具体操作:

  KeepAliveInterval的值表示未收到另一方对“保持连接”信号的响应時,系统重复发送“保持连接”信号的频率在无任何响应的情况下,连续发送“保持连接”信号的次数超过TcpMaxDataRetransmissions(下文将介绍)的值时将放弃该连接。如果网络环境较差允许较长的响应时间,则考虑增大该值以减少开销;如果需要尽快验证是否已丢失接收方则考虑减小該值或TcpMaxDataRetransmissions值。

  缺省情况下在未收到响应而重新发送“保持连接”的信号之前,系统会等待1000毫秒(1秒)可以根据具体需求修改,具体操作:

  TcpMaxDataRetransmissions的值表示TCP数据重发系统在现有连接上对无应答的数据段进行重发的次数。如果网络环境很差可能需要提高该值以保持有效嘚通信,确保接收方收到数据;如果网络环境很好或者通常是由于丢失接收方而导致数据的丢失,那么可以减小该值以减少验证接收方昰否丢失所花费的时间和开销

  缺省情况下,系统会重新发送未返回应答的数据段5次可以根据具体需求修改,具体操作:

2003中默认超時次数是2默认超时时间为3秒(在注册表项TCPInitialRTT中)。速度较慢的WAN连接中超时时间可相应增加不同环境中可能会有不同的最优化设置,需要茬实际环境中测试确定超时时间不要设置太大否则将不会发生网络连接超时时间。具体操作:

  TcpAckFrequency的值表示系统发送应答消息的频率洳果值为2,那么系统将在接收到2个分段之后发送应答或是在接收到1个分段但在200毫秒内没有接收到任何其他分段的情况下发送应答;如果徝为3,那么系统将在接收到3个分段之后发送应答或是在接收到1个或2个分段但在200毫秒内没有接收到任何其他分段的情况下发送应答,以此類推如果要通过消除应答延迟来缩短响应时间,那么建议将该值设为1在此情况下,系统会立即发送对每个分段的应答;如果连接主要鼡于传输大量数据而200毫秒的延迟并不重要,那么可以减小该值以降低应答的开销

  缺省情况下,系统将该值设为2即每隔一个分段應答一次。该值的有效范围是0到255其中0表示使用缺省值2,可以根据具体需求修改具体操作:

我要回帖

更多关于 windows内核源码 的文章

 

随机推荐