Wednesday, December 19, 2007

Tuesday, December 11, 2007

when to recv() returns?

Basically, there are three conditions:
* The receive buffer is full. Here, the receive buffer means either
the buffer we submit or the intermediate winsock buffer.
* 500ms has passed since the last arrival of data.
* Data arrives with the PUSH-bit set.

the original post is here.

Sunday, November 11, 2007

MODULE_PARAM_DESC

最新的Linux内核可以使用MODULE_PARAM_DESC
为模块的启动参数添加注释,并使用modinfo来查看
这些注释。

Saturday, October 13, 2007

x86_64, IA-64两种64位CPU

x86_64和IA-64是两种64位CPU,其中x86_64是由AMD于2000年提出
并于2003年制造出第一款芯片,其主要特点它的Long Mode保持对80386
体系结构的向下兼容。后来AMD称之为AMD64。Intel最初在2004年的IDF
上宣称支持这种类型的芯片,刚开始被成为CT, IA-32e, EM64T, 2006年
命名为Intel64.

AMD64和Intel64在指令集上大同小异,Linux操作系统的x86_64可以支持
两种CPU。在x86_64的开发上,AMD占领了先机。但事实上Intel早在1997
年就开始设计x86_64 CPU,迟迟未向外界公布的原因在于Intel在此期间
在推它的IA-64 CPU。后来面临AMD的市场压力,才在2004 IDF上公布有关
x86_64的开发进展。

IA-64是HP最早于1989年提出一种基于RISC的EPIC技术,并最终替代高端
的所有基于RISC和CISC技术的芯片。HP与Intel与1994年结盟,联合开放
IA-64,预期1998年生产出来。但由于技术的复杂性,1999年10月, Intel
才推出Itanium I代。2002年推出II代。IA-64主要针对HPC和Enterprise
Server的应用。与Sun UltraSPARC T2, IBM Power6, Fujitsu's
SPARC64,以及x86_64竞争。

IA-64的优势主要集中在浮点运算,主要在科学计算上使用。Web Server
不太会用到IA-64的这个强项。因此,市场前景尚不明朗。

参考页面:
[1] http://en.wikipedia.org/wiki/X86-64
[2] http://en.wikipedia.org/wiki/IA-64

Friday, September 28, 2007

linux PACKET_MMAP

从2.4起,Linux支持MMAP的数据包采集,检查内核选项
CONFIG_PACKET_MMAP=y

同时需要使用支持PACKET_RING的libpcap版本,这里
下载后编译时使用如下命令
./configure --enable-shared=yes
将生成的动态连接库libpcap.so等拷贝到/usr/lib下就可以
使用了。因为使用动态连接库,因此应用程序无须重新编译。

运行时需要设置环境变量PCAP_FRAMES=30000,这样
open_pcap_live()才会使用PACKET_RING, 如果没有这个
变量则使用普通的AF_PACKET抓包。

性能:
千兆下抓包,大概100Mbps的TCP文件传输,现在使用PACKET_RING不丢包,
CPU占用率20%左右。之前要丢10%的包,

Wednesday, August 29, 2007

NUMA, smp and AMD Intel

一直对NUMA体系结构没有直观的认识,看了FAQ: NUMA, SMP and AMDs Direct Connect Architecture才知道AMD Opteron双核采用的是NUMA结构。与SMP结构不同,主存不是通过Memory controller连接到CPUs,NUMA中不同的内存条直接连接到不同的CPU上。这样的好处在于可扩展性高,CPU可以独立访问属于自己的CPU,Memory controller不会成为系统的瓶颈。但缺点在于访问其它片的内存条用时会增加。这需要操作系统和进程进行优化才能发挥NUMA体系结构的好处。

目前Linux已经很好的支持SMP,有关NUMA的支持还不够完善。SUSE Linux Enterprise Server 9 队NUMA有较好的支持。

Monday, August 27, 2007

dynamips for CCIEs

Started in August of 2005 by Christophe Fillot, Dynamips is a Linux and Windows based application that is used to emulate the hardware of the Cisco 7200 and 3600 series routing platforms. Unlike traditional router “simulators" Dynamips allows you to boot real Cisco IOS software images and build complex network topologies to test the functionality of IOS on your desktop PC. As of November 2006 Dynamips currently supports Ethernet, Serial, ATM, and POS interfaces for the 7200 series routers and Ethernet, Serial, and Etherswitch modules for the 3600 series routers. Best of all Dynamips is open-source and free to download!

Monday, March 19, 2007

魔鬼星期一

* 10:00, 到实验室处理本科生的毕业设计,一起制定这个星期的计划。
* 然后是个硕士生,问了问进展。
* 接着收到中心来信,同意买网卡,于是赶紧联系。一问,
型号不符,解释了一大圈总于明白是厂家直销和OEM的区别。
搞定,放下...
* 接着收到教授来信,说paper缺少理论,要争取加个理论补实验。
还剩一个月的时间,硬着头皮也要上啊。
* 收到中心来信,说27号Intel网卡技术问答会,要我参加。ok.
* 接着教授msg我打听一个申请学生的情况,我也不认识。怎么办?
找朋友打听。
* 中午吃饭,和师弟聊了有关项目的进展。决定这周开个小组讨论会,
让参加者报告计划。下午回来联系,定于周三下午4:00.
* 14:00, 打听情况,搞定。
* 看论文
* 15:00, 马杯报名需学生证首页复印件,交。
* 看论文,寻找理论灵感。未果。
* 晚饭回来,看师弟的论文,23号globecom截稿。
* 7:00,实验室项目周三交中期调研报告,让我参加头脑风暴。
大家乱抓一气,居然成功了!
* 9:30-10:30, 和师弟讨论文章,结构大改。改完再发来看。