如果想出发,就不要等到明天!
全部博文(317)
发布时间:2014-08-27 10:43:39
kernel 3.10代码分析--vmalloc(非连续内存页分配)
在分配内存时,总是希望能分配到连续的物理内存页,愿望是美好的,但系统中可能没有太多的连续内存可用(比如内存碎片严重时),此时就需要一种非连续内存的分配方式。于是乎,就产生了vmalloc,vmalloc用于分配不连续的物理内存页,但将其映射到内核虚拟地址空间中后,其虚拟地址是连续的
内核虚拟地址空间中,有一段专门的区间用于vmalloc,称之vmalloc区,位于线性映射区之后,准确的说是从892M+8M(VMALLOC_START)到VMALLOC_END之间,其中892M是线性映射区,用于线性映射低端内存,之后的8M是安全间隙,用于区间隔离,防止越界。
vmalloc区中包含一个个独立的子区域,每个子区域用于一次独立映射,各个子区域间通过一个内存页进行隔离,防止不正确的内存访问操作。......【阅读全文】
发布时间:2014-08-27 10:41:36
1. epoll有2种模式, 水平触发(LT)&边缘触发(ET)。 在LT模式下,当epoll可读/写时,epoll_wait就会返回可读/写的fd,若没有读/写完,会一直触发。 在ET模式下,当epoll可读/写时,epoll_wait就会返回可读/写的fd,但只会触发一次,即使没有读/写完,也不会再触发。2. epoll的三.........【阅读全文】
发布时间:2014-08-27 10:39:04
针对于tinynet进行了三种数据传输方式的测试,包括最初的byte stream,protobuf,以及比较流行json方式。跟之前的几次测试一样,模型为echo模型,都是以epoll为例,每个连接每秒发送10个包,每个数据包约100bytes,数据包括包头以及数据,包头12bytes,包括长度以及其他8bytes信息,客户端连接为每秒5个,此次.........【阅读全文】
发布时间:2014-08-27 10:36:21
之前针对tinynet做了几组测试,根据数据看起来还不错,但是没有和其他优秀的开源库做对比,下面就针对libevent的使用来进行分析。 针对tinynet的相关测试: tinynet (V1.0.0) 一个轻量级的网络库(测试报告) tinynet V1.0.1 .........【阅读全文】