Показать полную графическую версию : Производительность TCP/IP стека в FreeBSD
Привет всем!
Сделал дома гигабитную сеть и скорости желаемой не получил..начал копать.
Оказалось,даже через lo0 больше 32мбайт/сек получить не удается(netcat+dd if=/dev/zero),не говоря уже о всяких там ftp.
На Gentoo linux скорость по лупбэку около 250мбайт/с,в полне нормально.
На OpenBSD даже немного тормознее,чем Free
Пробовал разные конфиги ядра,не помогло.
на NetBSD 50mbайт/с стабильно,но не с /dev/zero,а с винта и через ftp,небыло netcat-a под рукой, чтобы проверить.проверю.
Это все тестилось на машинке Celeron 2.53ghz,1G RAM.
Но. на двухядерном пне 4,такой же частоты скорость по лупбеку доставала до 150мб/с...
Это так и должно быть в FreeBSD или все же можно что-то покопать?
Или лучше пересесть на NetBSD или что-то еще...? линух не хочу,не нравится мне...
greywind
18-05-2007, 18:14
а настраивать пробовали? литературку там поискать?
http://www.opennet.ru/docs/RUS/GigabitEthernet/ и ещё бы я на вашем месте порыл насчёт производительности хардов.
Конечно пробовал.я с freebsd работаю давно.и скорость на 100мегабитке устраивала в полне,а тут поставил гиг,а скорость не поднялась.дело не в железе,а в самом стеке.через лупбек же тоже тормозит.
Спасибо,пойфу читать;)
не помогло ничего..
Вот конф:
root# ifconfig lo0
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x3
inet6 ::1 prefixlen 128
inet 127.0.0.1 netmask 0xff000000
root# cat sysctl.conf
security.bsd.see_other_uids=0
security.bsd.see_other_gids=0
security.bsd.unprivileged_read_msgbuf=0
security.bsd.hardlink_check_uid=1
#security.bsd.hardlink_check_gid=1
#security.bsd.unprivileged_get_quota=1
security.jail.set_hostname_allowed=0
security.jail.chflags_allowed=0
vm.swap_idle_enabled=1
net.inet.icmp.icmplim=4
net.inet.ip.redirect=0
net.inet.icmp.bmcastecho=0
net.inet.tcp.blackhole=2
net.inet.udp.blackhole=1
net.inet.tcp.syncookies=1
net.inet.tcp.always_keepalive=0
net.inet.tcp.delayed_ack=1
net.inet.ip.sourceroute=0
net.inet.ip.accept_sourceroute=0
net.inet.ip.ttl=64
net.inet.ip.fastforwarding=1
net.inet.ip.intr_queue_maxlen=5000
net.inet.tcp.sendspace=3217968
net.inet.tcp.recvspace=3217968
kern.ipc.maxsockbuf=8388608
kern.maxfilesperproc=1024
kern.maxprocperuid=512
скорость с pf-ом 19мегабайт/с по lo0,по em0 еще меньше
Без pf-a около 24-30
PS. У кого FreeBSD,порпробуйте плз ради интереса потестить скорость,так, на пример:
nc -l 127.0.0.1 33>/dev/null
dd if=/dev/zero bs=128k count=2048|nc 127.0.0.1 33
Или каким-то ftpd+wget..
dd if=/dev/zero bs=128k count=16384 | nc 127.0.0.1 33
16384+0 records in
16384+0 records out
2147483648 bytes transferred in 23.120258 secs (92883205 bytes/sec)
О,это уже по-лучше..:) но все равно мало... Какой проц? память? конфиг ядра?
Включен какой-нибудь firewall или нет?
Мне так и не удалось выжать требуемую скорость на однопроцессорных PC-шках. наверное буду переходить на NetBSD
Copyright (c) 1992-2007 The FreeBSD Project.
Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
The Regents of the University of California. All rights reserved.
FreeBSD is a registered trademark of The FreeBSD Foundation.
FreeBSD 6.2-RELEASE-p3 #1: Thu Mar 22 22:39:38 MSK 2007
igor@igorserver.local:/usr/obj/usr/src/sys/IGOR_FEB
Timecounter "i8254" frequency 1193182 Hz quality 0
CPU: AMD Athlon(tm) XP 2400+ (2004.56-MHz 686-class CPU)
Origin = "AuthenticAMD" Id = 0x6a0 Stepping = 0
Features=0x383fbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,MMX,FXSR,SSE>
AMD Features=0xc0400800<SYSCALL,MMX+,3DNow+,3DNow>
real memory = 536805376 (511 MB)
avail memory = 515899392 (492 MB)
mptable_probe: MP Config Table has bad signature: \^S\^F
kbd1 at kbdmux0
acpi0: <Nvidia AWRDACPI> on motherboard
acpi0: Power Button (fixed)
Timecounter "ACPI-fast" frequency 3579545 Hz quality 1000
acpi_timer0: <24-bit timer at 3.579545MHz> port 0x4008-0x400b on acpi0
cpu0: <ACPI CPU> on acpi0
acpi_button0: <Power Button> on acpi0
pcib0: <ACPI Host-PCI bridge> port 0xcf8-0xcff on acpi0
pci0: <ACPI PCI bus> on pcib0
Correcting nForce2 C1 CPU disconnect hangs
agp0: <NVIDIA nForce2 AGP Controller> mem 0xc0000000-0xc7ffffff at device 0.0 on pci0
pci0: <memory, RAM> at device 0.1 (no driver attached)
pci0: <memory, RAM> at device 0.2 (no driver attached)
pci0: <memory, RAM> at device 0.3 (no driver attached)
pci0: <memory, RAM> at device 0.4 (no driver attached)
pci0: <memory, RAM> at device 0.5 (no driver attached)
isab0: <PCI-ISA bridge> at device 1.0 on pci0
isa0: <ISA bus> on isab0
nfsmb0: <nForce2/3/4 MCP SMBus Controller> port 0xe000-0xe01f irq 4 at device 1.1 on pci0
smbus0: <System Management Bus> on nfsmb0
smb0: <SMBus generic I/O> on smbus0
nfsmb1: <nForce2/3/4 MCP SMBus Controller> on nfsmb0
smbus1: <System Management Bus> on nfsmb1
smb1: <SMBus generic I/O> on smbus1
nve0: <NVIDIA nForce MCP2 Networking Adapter> port 0xe400-0xe407 mem 0xdd084000-0xdd084fff irq 10 at device 4.0 on pci0
nve0: Ethernet address 00:50:8d:f3:7e:df
miibus0: <MII bus> on nve0
rlphy0: <RTL8201L 10/100 media interface> on miibus0
rlphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
nve0: Ethernet address: 00:50:8d:f3:7e:df
pci0: <multimedia, audio> at device 5.0 (no driver attached)
pcm0: <nVidia nForce2> port 0xd000-0xd0ff,0xd400-0xd47f mem 0xdd080000-0xdd080fff irq 4 at device 6.0 on pci0
pcm0: <Avance Logic ALC650 AC97 Codec>
pcib1: <ACPI PCI-PCI bridge> at device 8.0 on pci0
pci1: <ACPI PCI bus> on pcib1
rl0: <RealTek 8139 10/100BaseTX> port 0x9000-0x90ff mem 0xdc004000-0xdc0040ff irq 11 at device 6.0 on pci1
miibus1: <MII bus> on rl0
rlphy1: <RealTek internal media interface> on miibus1
rlphy1: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
rl0: Ethernet address: 00:80:48:37:e7:a5
bktr0: <BrookTree 878> mem 0xd8000000-0xd8000fff irq 3 at device 7.0 on pci1
bktr0: [GIANT-LOCKED]
bktr0: AVer Media TV/FM, Philips FR1216 PAL FM tuner.
pci1: <multimedia> at device 7.1 (no driver attached)
skc0: <D-Link DGE-530T Gigabit Ethernet> port 0x9400-0x94ff mem 0xdc000000-0xdc003fff irq 5 at device 9.0 on pci1
skc0: DGE-530T Gigabit Ethernet Adapter rev. (0x9)
sk0: <Marvell Semiconductor, Inc. Yukon> on skc0
sk0: Ethernet address: 00:17:9a:06:14:ef
miibus2: <MII bus> on sk0
e1000phy0: <Marvell 88E1000 Gigabit PHY> on miibus2
e1000phy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, 1000baseTX-FDX, auto
atapci0: <SiI 0680 UDMA133 controller> port 0x9800-0x9807,0x9c00-0x9c03,0xa000-0xa007,0xa400-0xa403,0xa800-0xa80f mem 0xdc005000-0xdc0050ff irq 11 at device 10.0 on pci1
ata2: <ATA channel 0> on atapci0
ata3: <ATA channel 1> on atapci0
atapci1: <SiI 3112 SATA150 controller> port 0xac00-0xac07,0xb000-0xb003,0xb400-0xb407,0xb800-0xb803,0xbc00-0xbc0f mem 0xdc006000-0xdc0061ff irq 11 at device 11.0 on pci1
ata4: <ATA channel 0> on atapci1
ata5: <ATA channel 1> on atapci1
atapci2: <nVidia nForce2 UDMA133 controller> port 0x1f0-0x1f7,0x3f6,0x170-0x177,0x376,0xf000-0xf00f at device 9.0 on pci0
ata0: <ATA channel 0> on atapci2
ata1: <ATA channel 1> on atapci2
pcib2: <ACPI PCI-PCI bridge> at device 30.0 on pci0
pci2: <ACPI PCI bus> on pcib2
pci2: <display, VGA> at device 0.0 (no driver attached)
pci2: <display> at device 0.1 (no driver attached)
acpi_tz0: <Thermal Zone> on acpi0
ppc0: <ECP parallel printer port> port 0x378-0x37f,0x778-0x77b irq 7 drq 3 on acpi0
ppc0: SMC-like chipset (ECP/EPP/PS2/NIBBLE) in COMPATIBLE mode
ppc0: FIFO with 16/16/9 bytes threshold
ppbus0: <Parallel port bus> on ppc0
ppi0: <Parallel I/O> on ppbus0
atkbdc0: <Keyboard controller (i8042)> port 0x60,0x64 irq 1 on acpi0
atkbd0: <AT Keyboard> irq 1 on atkbdc0
kbd0 at atkbd0
atkbd0: [GIANT-LOCKED]
psm0: <PS/2 Mouse> irq 12 on atkbdc0
psm0: [GIANT-LOCKED]
psm0: model IntelliMouse, device ID 3
pmtimer0 on isa0
orm0: <ISA Option ROM> at iomem 0xc0000-0xccfff on isa0
sc0: <System console> at flags 0x100 on isa0
sc0: VGA <16 virtual consoles, flags=0x300>
vga0: <Generic ISA VGA> at port 0x3c0-0x3df iomem 0xa0000-0xbffff on isa0
sio0: configured irq 4 not in bitmap of probed irqs 0
sio0: port may not be enabled
sio0 at port 0x3f8-0x3ff irq 4 flags 0x10 on isa0
sio0: type 8250 or not responding
sio1: configured irq 3 not in bitmap of probed irqs 0
sio1: port may not be enabled
Timecounter "TSC" frequency 2004560629 Hz quality 800
Timecounters tick every 1.000 msec
ipfw2 (+ipv6) initialized, divert loadable, rule-based forwarding enabled, default to deny, logging limited to 100 packets/entry by default
ad0: 114498MB <SAMSUNG SP1203N TL100-31> at ata0-master UDMA100
ad2: 114473MB <Seagate ST3120026A 8.54> at ata1-master UDMA100
ad3: 238475MB <Seagate ST3250823A 3.06> at ata1-slave UDMA100
ad4: 238475MB <WDC WD2500JB-00GVC0 08.02D08> at ata2-master UDMA100
ad5: 76319MB <Seagate ST380011A 3.04> at ata2-slave UDMA100
Уже кучу сайтов перерыл,а решения так и не нашел:(
dmitryst
30-05-2007, 15:55
brag Я бы убрал IP v6 и попробовал на дефолтном ядре
systat -vmstat 1
Загрузка процессора =100%?
Какая область наиболее загруженна?
Пример вывода под нагрузкой
vmstat 1
Про IPv6 попробую. на дефолтном ядре то же самое.
на многопроцовых машинах оно летает, а вот на пц-шках тормозит.даже на пне4
Спасибо,проанализирую.
по топу,в основном загружен system
Вот:
users Load 0.70 0.26 0.09 Jun 1 10:36
Mem:KB REAL VIRTUAL VN PAGER SWAP PAGER
Tot Share Tot Share Free in out in out
Act 91736 16244 131504 24508 335548 count
All 168896 18832 53112420 28436 pages
zfod Interrupts
Proc:r p d s w Csw Trp Sys Int Sof Flt cow 275 total
2 3 60 31037 42 358k12076 969 70876 wire 7 1: atkb
62872 act 6: fdc0
76.9%Sys 15.4%Intr 7.7%User 0.0%Nice 0.0%Idl 35376 inact 52 12: psm
| | | | | | | | | | 652 cache 14: ata
======================================++++++++>> 334896 free 15: ata
daefr 14 16: uhc
Namei Name-cache Dir-cache prcfr 22: rl0
Calls hits % hits % react 23: ehc
pdwak 202 cpu0: time
pdpgs
Disks ad0 da0 cd0 pass0 pass1 intrn
KB/t 0.00 0.00 0.00 0.00 0.00 61392 buf
tps 0 0 0 0 0 18 dirtybuf
MB/s 0.00 0.00 0.00 0.00 0.00 33650 desiredvnodes
% busy 0 0 0 0 0 3542 numvnodes
282 freevnodes
В основном system...
# vmstat 1
procs memory page disks faults cpu
r b w avm fre flt re pi po fr sr ad0 da0 in sy cs us sy id
0 2 0 129436 336228 0 0 0 0 0 0 2 0 256 1717 734 0 0 100
1 2 0 130064 336072 69 0 0 0 14 0 0 0 202 1974 625 0 0 100
2 2 0 130064 336072 4 0 0 0 2 0 0 0 210 1994 685 0 0 100
5 3 0 131248 335640 193 0 0 0 62 0 0 0 10151 301413 26161 14 71 14
2 3 0 131248 335640 0 0 0 0 0 0 0 0 11911 352504 30646 15 85 0
3 3 0 131248 335640 0 0 0 0 0 0 0 0 11937 351552 30683 8 92 0
4 3 0 131248 335640 0 0 0 0 0 0 0 0 12017 358754 30825 0 100 0
4 3 0 131248 335640 0 0 0 0 0 0 0 0 11963 354571 30727 15 85 0
Первых 3 - без нагрузки
Последних 5 - под нагерузкой
Попробуй в конфиге ядра
option HZ=1000
vmstat - первый столбик r
Получается, что 3-4 процесса не могут получить доступ к процессору.
Второй столбик - количество процессов, заблокированных в ожидании ввода или вывода.
Система какая?
спасибо
HZ=1000 стоит
система - свежак, 6.2-STABLE.сейчас уже вчерашней давности
к стати,как она в сравнении с 5.5? по стабильности и производительности?
brag
HZ=1000 стоит
В смысле - уже стояло? Или поставил и ничего не изменилось?
Меня также смущает различия в столбце Interrupts
У тебя нет clk rtc, а у меня нет cpu0. Неужели это из-за различия в процессорах?
2 users Load 0.27 0.06 0.02 6 июн 22:35
Mem:KB REAL VIRTUAL VN PAGER SWAP PAGER
Tot Share Tot Share Free in out in out
Act 72980 11528 167260 24156 61124 count
All 468016 14768481385652 31192 pages
zfod Interrupts
Proc:r p d s w Csw Trp Sys Int Sof Flt cow 1208 total
49 1 2298 6 750 2253 3 107520 wire 1001 0: clk
78088 act 1: atkb
1.6%Sys 4.7%Intr 0.0%User 0.0%Nice 93.8%Idl 258728 inact 39 5: skc0
| | | | | | | | | | 24896 cache 7: ppc0
=++ 36228 free 128 8: rtc
daefr 10: nve
Namei Name-cache Dir-cache prcfr 40 11: rl0
Calls hits % hits % react 14: ata
pdwak 15: ata
pdpgs
Disks ad0 ad2 ad3 ad4 ad5 intrn
KB/t 0.00 0.00 0.00 0.00 0.00 61472 buf
tps 0 0 0 0 0 79 dirtybuf
MB/s 0.00 0.00 0.00 0.00 0.00 35661 desiredvnodes
% busy 0 0 0 0 0 13906 numvnodes
8914 freevnodes
Нет,стояло с самого начала.
привожу конфиг ядра и sysctl.conf
ядро:
machine i386
ident BRAG
makeoptions DEBUG=-g # Build kernel with gdb(1) debug symbols
options SCHED_4BSD # 4BSD scheduler
#options PREEMPTION # Enable kernel thread preemption
options INET # InterNETworking
options INET6 # IPv6 communications protocols
options FFS # Berkeley Fast Filesystem
options SOFTUPDATES # Enable FFS soft updates support
options UFS_ACL # Support for access control lists
options UFS_DIRHASH # Improve performance on big directories
options MD_ROOT # MD is a potential root device
options NFSCLIENT # Network Filesystem Client
options NFSSERVER # Network Filesystem Server
options NFS_ROOT # NFS usable as /, requires NFSCLIENT
#options MSDOSFS # MSDOS Filesystem
options CD9660 # ISO 9660 Filesystem
options PROCFS # Process filesystem (requires PSEUDOFS)
options PSEUDOFS # Pseudo-filesystem framework
options GEOM_GPT # GUID Partition Tables.
options COMPAT_43 # Compatible with BSD 4.3 [KEEP THIS!]
#options COMPAT_FREEBSD4 # Compatible with FreeBSD4
#options COMPAT_FREEBSD5 # Compatible with FreeBSD5
options SCSI_DELAY=5000 # Delay (in ms) before probing SCSI
options KTRACE # ktrace(1) support
options SYSVSHM # SYSV-style shared memory
options SYSVMSG # SYSV-style message queues
options SYSVSEM # SYSV-style semaphores
options _KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time extension
options KBD_INSTALL_CDEV # install a CDEV entry in /dev
options ADAPTIVE_GIANT # Giant mutex is adaptive.
#########################################
# MY Config
options DEVICE_POLLING
options HZ=1000 #set the timer granularity
options TCP_DROP_SYNFIN #drop TCP packets with SYN+FIN
options ZERO_COPY_SOCKETS
options MCLSHIFT=12
options ALTQ
options ALTQ_CBQ
options ALTQ_RED
options ALTQ_RIO
options ALTQ_HFSC
options ALTQ_CDNR
options ALTQ_PRIQ
options QUOTA #enable disk quotas
options SC_DISABLE_REBOOT # disable reboot key sequence
options SC_HISTORY_SIZE=4000
maxusers 128
device apic # I/O APIC
#options SMP
#########################################
# Bus support.
#device eisa
device pci
# Дальше девайсы....
#
sysctl.conf:
security.bsd.see_other_uids=0
net.inet.icmp.icmplim=2
security.jail.set_hostname_allowed=0
security.jail.chflags_allowed=0
kern.ipc.maxsockbuf=2097152
net.inet.tcp.rfc1323=1
net.inet.tcp.sendspace=524288
net.inet.tcp.recvspace=524288
net.inet.udp.recvspace=65535
net.inet.udp.maxdgram=7344
да, rtc и cpu0 отличались на 2х разных тачках и одном ядре. на одной тачке duron,на другой celeron s775
А это из за apic
Вот apic отключен:
# uname -a
FreeBSD nxux.net 6.2-STABLE FreeBSD 6.2-STABLE #0: Fri Jun 1 19:03:38 EEST 2007 root@nxux.net:/usr/src/sys/i386/compile/BRAG i386
# vmstat -i
interrupt total rate
irq0: clk 2344282 999
irq1: atkbd0 11886 5
irq5: rl0 uhci2 313 0
irq6: fdc0 4 0
irq8: rtc 300026 127
irq10: uhci0 uhci3 52933 22
irq11: ehci0 141 0
irq12: psm0 98074 41
irq14: ata0 85527 36
irq15: ata1 633218 270
Total 3526404 1503
и с APIC:
# vmstat -i
interrupt total rate
irq1: atkbd0 4442 4
irq12: psm0 11991 12
irq14: ata0 8668 8
irq15: ata1 20 0
irq16: uhci0 uhci3 2158 2
irq22: rl0 161 0
irq23: ehci0 137 0
cpu0: timer 1986599 1996
Total 2014176 2024
По IPv6 удалось выжать с такими настройками 920Mbit/s По lo0..
А по сетке в раене 200мбит/с так и осталось:(
А по сетке в раене 200мбит/с так и осталось
То есть, сейчас стало лучше?
А в винты не упирается?
Не,сейчас 200мнит/с вместо 1000 или хотябы 700(как в инете пишут)
По lo0 где-то около 800 по IPv6, и около 500 По IPv4
По сетке один фиг. мож линк фиговый?
Надо затестить какой-то досовской тулой
Сделал дома гигабитную сеть и скорости желаемой не получил..начал копать.
Оказалось,даже через lo0 больше 32мбайт/сек получить не удается(netcat+dd if=/dev/zero),не говоря уже о всяких там ftp.
Было 32, стало 500 :)
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.