一直不清楚怎么计算一个报文究竟需要多少个cycle的处理才能达到wire speed。
一直对于这个问题很疑惑:
NP中对于一个报文的处理代码最多可以写多少行?累计多少个cycle才能达到线速呢?开发者怎么确定这个事情?难道总是在测试阶段才知道性能吗?太土了吧?!
今天看了一个文挡,描述了如何计算,挺简单的,暂且记录一下:
以IQ2200为例(过时的NP,没谁在用了。。。)
IQ2200,集成2个GE口,内部分4个硬件线程,每个线程工作频率400MHz。
对于报文的处理能力,通常:
在流量是1Gbps的情况下,线速状态下以太网报文包转发率是1.488Mpps。
那么2个GE口,双向总共就是4G流量,两个方向的报文都会进入NP处理的嘛。那么如果要达到线速转发,包转发率必须保证达到4*1.488Mpps = 6Mpps = 6 M packet/second.
再看硬件处理频率,一个NP中包括4个线程,所以总的工作频率是400MHz*4 = 1600MHz = 1600 M cycle / second。
(1600 M cycle / second) / (6 M packet/second) = 268 cycle/packet。
那么也就是说,对于一个报文的处理代码,累计的cycle不能超过268,否则肯定达不到线速。尤其对于短包,报文丢失率会很高。
一个系统如果对于短包也可以达到线速转发,那么长包的问题不大。
阅读(3769) | 评论(0) | 转发(0) |