原帖由 xfsoul 于 2006-5-24 09:08 發(fā)表
謝謝樓上幾位達(dá)人熱心相助,尤其是版主兄,真是非常敬業(yè)。我們還有幾個(gè)硬件平臺(tái)沒(méi)有測(cè)試。在現(xiàn)有的平臺(tái)上,我先更新驅(qū)動(dòng)程序測(cè)試,更換4.11版本FreeBSD進(jìn)行測(cè)試,同時(shí)再查閱polling的相關(guān)資料。希望各位能繼續(xù)關(guān)注 ...
原帖由 colddawn 于 2006-5-24 10:15 發(fā)表
到現(xiàn)在沒(méi)看明白lz的環(huán)境,既然是做網(wǎng)橋,怎么又測(cè)試的是轉(zhuǎn)發(fā)性能?難道是詞語(yǔ)的意思我沒(méi)理解?到底是純橋接性能的測(cè)試還是牽扯到了三層轉(zhuǎn)發(fā)?如果是后者,估計(jì)要提高性能不太容易,前者的話最好說(shuō)明下你用的哪個(gè)網(wǎng) ...
原帖由 xfsoul 于 2006-5-24 11:30 發(fā)表
怎么使用bridge呢?
原帖由 LnBSD 于 2006-5-24 11:36 發(fā)表
你現(xiàn)在用的就是bridge
千兆網(wǎng)卡可以調(diào)大一點(diǎn)
options HZ=4000--6000
等待你的測(cè)試結(jié)果
原帖由 xfsoul 于 2006-5-24 13:13 發(fā)表
我換成if_bridge以后,發(fā)現(xiàn)性能果然更差了。
原帖由 xfsoul 于 2006-5-25 08:41 發(fā)表
樓上的大哥,您太強(qiáng)了!
不過(guò)有三個(gè)MSIZE的定義,而且值還不一樣,到底要怎么改呢?
-bash-2.05b# cd /usr/src/sys
-bash-2.05b# grep -r "#define MSIZE" *
compile/NTD/machine/param.h:#define ...
原帖由 雨絲風(fēng)片 于 2006-5-25 08:53 發(fā)表
改這個(gè)里面的:
/usr/src/sys/sys/param.h
原帖由 antijp 于 2006-5-25 08:54 發(fā)表
Before you modify the value, use sysctl -a |grep mbuf to check the mbuf utilization. According to TCP/IP Illustrated Vol.2, bigger packets uses not only mbuf, but also mbufclusters.
原帖由 雨絲風(fēng)片 于 2006-5-25 09:08 發(fā)表
樓主測(cè)試的數(shù)據(jù)包大小是確定的,改這個(gè)值就是想盡量避免使用cluster,看看從對(duì)純mbuf的處理和對(duì)cluster的處理流程上是否能找到一些線索。但我感覺應(yīng)該不只是處理流程的區(qū)別,很可能和內(nèi)存的分配、緩存、復(fù)用也 ...
原帖由 antijp 于 2006-5-25 09:36 發(fā)表
According to the statistics posted out, the mbufclusters must have been used. But I doubt that this statistics was not gathered when running the benchmark, so perhaps it't not very useful.
If the amount of data is greater than or equal to 208 (MINCLBYTES), one or more clusters are used.
原帖由 colddawn 于 2006-5-25 09:54 發(fā)表
kern.polling.burst_max: 300
kern.polling.burst: 300
這兩個(gè)值一樣,似乎burst不夠用了,繼續(xù)調(diào)大些試試看??
原帖由 colddawn 于 2006-5-25 09:59 發(fā)表
另外注意到你測(cè)試的數(shù)據(jù)FB的CPU占用率方面比較奇怪,尤其是小包的第一個(gè)50%,是不是開啟了HTT?關(guān)閉掉試試看。
還有這個(gè)參數(shù)kern.polling.user_frac: Desired user fraction of cpu time
把user占用的cpu時(shí)間片 ...
原帖由 colddawn 于 2006-5-25 10:03 發(fā)表
kern.polling.burst: Current polling burst size
fw2# sysctl -d kern.polling.burst_max
kern.polling.burst_max: Max Polling burst size
應(yīng)該是要調(diào)整max,lz是說(shuō)錯(cuò)了還是調(diào)錯(cuò)了?
原帖由 雨絲風(fēng)片 于 2006-5-25 09:47 發(fā)表
從樓主的數(shù)據(jù)長(zhǎng)度即可判斷出測(cè)試的時(shí)候肯定會(huì)使用cluster了:
當(dāng)然,由于mbuf頭結(jié)構(gòu)的修改,目前的門限數(shù)值比208還要小。現(xiàn)在就是想先看看它不用cluster的時(shí)候的測(cè)試性能如何。![]()
原帖由 antijp 于 2006-5-25 10:24 發(fā)表
Less than 208? I've traced the code. sizeof(m_hdr) == 24, sizeof(pkthdr) == 24, without m_ext, the maximum size of the data can be stored is 208. These number is when you are running on i386.
I' ...
原帖由 xie_minix 于 2006-5-25 16:07 發(fā)表
其實(shí)樓主的要求很簡(jiǎn)單,他想把FB下千兆卡的效率提高到能和LINUX差不多就行了.
我們是來(lái)給他想辦法,同時(shí)也提高我們自己.去尋找具體原因.你可以懷疑某個(gè)地
方出問(wèn)題,即使是比較幼稚的想法.但必須去實(shí)現(xiàn).用代碼或調(diào)試各種參數(shù)去測(cè)試.
另外說(shuō)句: 樓上的caibird3rd明顯沒(méi)進(jìn)入狀態(tài).哈哈
已經(jīng)有很多人都在反映該問(wèn)題.我知道的許多非常專業(yè)的放火墻開發(fā)人員(DDOS方向)
也遇到此問(wèn)題.到目前還沒(méi)有解決.以至于他們轉(zhuǎn)向了LINUX.
對(duì)于現(xiàn)在的FB,鎖的粗細(xì)粒度使用的還是有問(wèn)題.比如大家看看POLLING的5.3.使用
GAINT太多,還有些代碼重復(fù),不多評(píng)論了.繼續(xù)檢查 ...
原帖由 caibird3rd 于 2006-5-25 17:29 發(fā)表
哈哈,對(duì)FB我倒是不熟,只是略有耳聞FB的性能如何穩(wěn)定和有效率,真的比Linux差很多嗎?
說(shuō)老實(shí)話,對(duì)于比較成熟的一個(gè)發(fā)行版來(lái)說(shuō),其運(yùn)行時(shí)的各種缺省參數(shù)一般都是仔細(xì)調(diào)優(yōu)了的,充分
權(quán)衡了各個(gè)子系統(tǒng)的影 ...
原帖由 xie_minix 于 2006-5-25 18:11 發(fā)表
mirnshi:
我猜想,開發(fā)POLLING的團(tuán)隊(duì)有問(wèn)題.他們對(duì)MUTEX的了解不夠,最起碼在5.3版本時(shí).
這是最要命的事情.
其次,寫代碼時(shí)沒(méi)經(jīng)過(guò)思考(請(qǐng)?jiān)徫疫@么說(shuō),他們也不容易),比如你看:
5.3版本
poll_idle(void)中
mtx ...
原帖由 xie_minix 于 2006-5-25 18:11 發(fā)表
mirnshi:
我猜想,開發(fā)POLLING的團(tuán)隊(duì)有問(wèn)題.他們對(duì)MUTEX的了解不夠,最起碼在5.3版本時(shí).
這是最要命的事情.
其次,寫代碼時(shí)沒(méi)經(jīng)過(guò)思考(請(qǐng)?jiān)徫疫@么說(shuō),他們也不容易),比如你看:
5.3版本
poll_idle(void)中
mtx ...
原帖由 xie_minix 于 2006-5-25 18:11 發(fā)表
mirnshi:
我猜想,開發(fā)POLLING的團(tuán)隊(duì)有問(wèn)題.他們對(duì)MUTEX的了解不夠,最起碼在5.3版本時(shí).
這是最要命的事情.
其次,寫代碼時(shí)沒(méi)經(jīng)過(guò)思考(請(qǐng)?jiān)徫疫@么說(shuō),他們也不容易),比如你看:
5.3版本
poll_idle(void)中
mtx ...
原帖由 xfsoul 于 2006-5-25 19:36 發(fā)表
還有更牛的,雙路Opteron 270,就是四個(gè)2.0G的Opteron處理器。
另外還有雙路雙核XEON,每個(gè)CPU都支持HT。系統(tǒng)應(yīng)該會(huì)認(rèn)出八個(gè)CPU。
不過(guò)在雙路Opteron 250上也無(wú)法改善FreeBSD性能的話。
就只有用linux了。
原帖由 xie_minix 于 2006-5-25 18:11 發(fā)表
我猜想,開發(fā)POLLING的團(tuán)隊(duì)有問(wèn)題.他們對(duì)MUTEX的了解不夠,最起碼在5.3版本時(shí).
這是最要命的事情.
其次,寫代碼時(shí)沒(méi)經(jīng)過(guò)思考(請(qǐng)?jiān)徫疫@么說(shuō),他們也不容易),比如你看:
...
Interface Polling
The network interface polling implementation has been re-implemented to work correctly in SMP environments. Polling is no longer a global configuration variable but enabled or disabled individually per interface if the driver supports it. Most commonly found network drivers support polling.
原帖由 xfsoul 于 2006-5-25 18:23 發(fā)表
實(shí)在暈倒,BSD內(nèi)核中也有這樣質(zhì)量的代碼?
原帖由 mirnshi 于 2006-5-25 15:00 發(fā)表
將mbuf的尺寸增大,并不會(huì)帶來(lái)特別顯著的提高,系統(tǒng)會(huì)根據(jù)包的大小,自動(dòng)分拆的,大家可以看看協(xié)議棧的實(shí)現(xiàn)。 ...
原帖由 colddawn 于 2006-5-26 09:47 發(fā)表
他的意思是指包在mbuf和cluster的分拆而不是包數(shù)據(jù)本身分拆,所以跟MTU無(wú)關(guān)了,使用cluster是有好處的,例如對(duì)于同一包的數(shù)據(jù)處理可以直接通過(guò)指向cluster指針,增加引用計(jì)數(shù)器,避免數(shù)據(jù)復(fù)制等。如果不使用clust ...
原帖由 雨絲風(fēng)片 于 2006-5-26 09:24 發(fā)表
請(qǐng)教一下,這個(gè)分拆體現(xiàn)在哪兒?
擴(kuò)大mbuf尺寸,不考慮是否真能提高性能,至少可以盡量避免系統(tǒng)使用mbuf鏈或者cluster。另外,樓主兩個(gè)網(wǎng)卡mtu一致,而且是二層轉(zhuǎn)發(fā),似乎也涉及不到ip fragmentation的問(wèn)題 ...
原帖由 mirnshi 于 2006-5-26 10:30 發(fā)表
在協(xié)議棧實(shí)現(xiàn)中,會(huì)根據(jù)包的大小,申請(qǐng)不同的mbuf。而且在我的印象中,從網(wǎng)卡上來(lái)的包使用不到cluster,或者說(shuō)承擔(dān)轉(zhuǎn)發(fā)時(shí),是不使用cluster的,只有從會(huì)話層下來(lái)的時(shí)候,由于數(shù)據(jù)包很大,需要拆成適宜大小并組成cluster。所以我以往的經(jīng)驗(yàn),做網(wǎng)關(guān)類,不必調(diào)整cluster的數(shù)量,mbuf的數(shù)量倒是很重要,如果有大隊(duì)列,還要調(diào)整內(nèi)核可使用的內(nèi)存空間大小。
所以你即便將mbuf調(diào)得很大,協(xié)議棧還是要判斷一下,再去申請(qǐng)。系統(tǒng)缺省已經(jīng)有2k的了,足夠應(yīng)付鏈路上的包了,那你說(shuō)提高最小的mbuf有必要嗎?只會(huì)浪費(fèi)內(nèi)存。 ...
原帖由 xie_minix 于 2006-5-26 13:46 發(fā)表
不對(duì),還是我錯(cuò)了,向大家解釋一下:
if (kern_load > (100 - user_frac)) {
這句的原本意思是:
求軟件中斷在整個(gè)1秒時(shí)間所占百分比是否大于減去其他所占用時(shí)間.
大于就說(shuō)明時(shí)間夠了.poll_burst--;
小于則p ...
原帖由 雨絲風(fēng)片 于 2006-5-26 11:41 發(fā)表
...
原帖由 xfsoul 于 2006-5-26 14:34 發(fā)表
我在PD 820和AMD Opteron平臺(tái),linux網(wǎng)橋透明轉(zhuǎn)發(fā)。當(dāng)包>512時(shí)候,雙向千兆線速轉(zhuǎn)發(fā),輕松愉快!
原帖由 雨絲風(fēng)片 于 2006-5-26 09:57 發(fā)表
不是討論是否需要使用、當(dāng)時(shí)是否有必要設(shè)計(jì)cluster。我的意思很簡(jiǎn)單,系統(tǒng)是否使用mbuf鏈或者mcluster來(lái)存儲(chǔ)網(wǎng)絡(luò)數(shù)據(jù)都取決于mbuf的尺寸,既然把mbuf尺寸調(diào)整到足以存放樓主測(cè)試的全部數(shù)據(jù),又何來(lái)“包在mbuf ...
原帖由 colddawn 于 2006-5-26 15:26 發(fā)表
cluster不光是用來(lái)存貯長(zhǎng)度大的數(shù)據(jù),同時(shí)還有引用計(jì)數(shù)器之類的設(shè)計(jì)思路,這樣mbuf中可以注入和剝離各層的報(bào)頭,cluster中存放數(shù)據(jù),而不同層傳遞只需要引用到cluster的指針即可,如果純粹使用mbuf,在各層中 ...
原帖由 www_ftp 于 2006-5-26 16:20 發(fā)表
測(cè)試時(shí)發(fā)現(xiàn):HZ burst_max等增大時(shí) kern.polling.burst 會(huì)自己變小.導(dǎo)致系統(tǒng)每秒取的包的總數(shù)基本不變,造成大量包丟失.然后此時(shí)系統(tǒng)負(fù)載及cpu占用還都比較低.不知算法哪兒出問(wèn)題了.
原帖由 xfsoul 于 2006-5-26 16:25 發(fā)表
嗯 的確是這樣。kern.polling.burst的確會(huì)自動(dòng)變的非常小。導(dǎo)致性能上不去。
不過(guò)當(dāng)kern.polling.burst比較大(比方500),HZ=4000,這個(gè)時(shí)候按說(shuō)包速可以比較大,可是性能也不行。
非常希望大家能把問(wèn)題 ...
原帖由 xie_minix 于 2006-5-26 17:05 發(fā)表
www_ftp老弟.請(qǐng)貼出機(jī)器的配置情況.謝謝
原帖由 colddawn 于 2006-5-31 07:42 發(fā)表
lz可以試試把7-CURRENT的em驅(qū)動(dòng)替換掉FB6的測(cè)試一下看看,據(jù)說(shuō)這方面對(duì)于SMP支持還在改進(jìn)中,并且可能替換后性能會(huì)有比較可觀的提升。
還有問(wèn)下就是為什么這個(gè)測(cè)試結(jié)果比你前面貼出來(lái)的大包性能有比較大的提升 ...
原帖由 colddawn 于 2006-5-31 09:21 發(fā)表
我這里也沒(méi)有,cvs就能拿到,替換現(xiàn)有的src然后編譯下內(nèi)核就可以了。
還有cvsweb也能找到http://www.freebsd.org/cgi/cvsweb.cgi/src/sys/#dirlist
原帖由 xfsoul 于 2006-5-31 15:07 發(fā)表
我怎么看過(guò)去一段時(shí)間,兩個(gè)網(wǎng)卡各收到多少包呢?
我想測(cè)試一下沒(méi)有網(wǎng)橋時(shí)候 FreeBSD收包性能。
netstat -w 10 -i em0
看到的結(jié)果根本不對(duì)!我用smartbit發(fā)了大量的包,netstat都沒(méi)有統(tǒng)計(jì)到。
原帖由 雨絲風(fēng)片 于 2006-5-31 16:29 發(fā)表
是有網(wǎng)橋的時(shí)候不準(zhǔn)還是沒(méi)網(wǎng)橋的時(shí)候不準(zhǔn)?
歡迎光臨 Chinaunix (http://72891.cn/) | Powered by Discuz! X3.2 |