![]() |
Производительность 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 или что-то еще...? линух не хочу,не нравится мне... |
а настраивать пробовали? литературку там поискать?
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 |
Уже кучу сайтов перерыл,а решения так и не нашел:(
|
brag Я бы убрал IP v6 и попробовал на дефолтном ядре
|
systat -vmstat 1
Загрузка процессора =100%? Какая область наиболее загруженна? Пример вывода под нагрузкой vmstat 1 |
Про IPv6 попробую. на дефолтном ядре то же самое.
на многопроцовых машинах оно летает, а вот на пц-шках тормозит.даже на пне4 Спасибо,проанализирую. по топу,в основном загружен system |
Вот:
Код:
users Load 0.70 0.26 0.09 Jun 1 10:36 Код:
# vmstat 1 Последних 5 - под нагерузкой |
Попробуй в конфиге ядра
option HZ=1000 vmstat - первый столбик r Получается, что 3-4 процесса не могут получить доступ к процессору. Второй столбик - количество процессов, заблокированных в ожидании ввода или вывода. Система какая? |
спасибо
HZ=1000 стоит система - свежак, 6.2-STABLE.сейчас уже вчерашней давности к стати,как она в сравнении с 5.5? по стабильности и производительности? |
brag
Цитата:
Меня также смущает различия в столбце Interrupts У тебя нет clk rtc, а у меня нет cpu0. Неужели это из-за различия в процессорах? Код:
2 users Load 0.27 0.06 0.02 6 июн 22:35 |
Нет,стояло с самого начала.
привожу конфиг ядра и sysctl.conf ядро: Код:
machine i386 Код:
security.bsd.see_other_uids=0 А это из за apic Вот apic отключен: Код:
# uname -a Код:
# vmstat -i А по сетке в раене 200мбит/с так и осталось:( |
Цитата:
А в винты не упирается? |
Не,сейчас 200мнит/с вместо 1000 или хотябы 700(как в инете пишут)
По lo0 где-то около 800 по IPv6, и около 500 По IPv4 По сетке один фиг. мож линк фиговый? Надо затестить какой-то досовской тулой |
Цитата:
|
32мегабайт и 500 мегабит
|
Смайлик недаром поставил.
Если разделить 500 на 8, будет около 60. Что больше, чем 32, аж в 2 раза. |
Ну да, так 60, это ж не дело..
Кароче, забываем про гигабитную сетку и железо, акцентируем внимание на loopback... Нужно получить приемлемую производительность, близкую к современным SCSI,SAS массивам по локальной петле. зачем это надо: Идея в создании стабильного и секурного сервера(или группы серверов - для этого и гигабит) исключительно open-source средствами. Идея такова,что если даже хакер получит рута,он все равно не сможет: 1. прочитать секретные даные пользователелей 2. повредить эти даные. 3. повредить систему. 3 уже реализовано средствами jail,securelevel,chflags итп в freeBSD Осталось реализовать 1 и 2. ясно,что nullfs итп сюда не годится,надо что-то нормальное. NFS тоже смотрю в сторону sfs,но над ней куча работы. Тут то и возникает потребность в loopback, тк серверов может быть не один, даные могут лещать еще где-то, и надо,чтобы это все было однотипно.к примеру, захотелось - перенес какой-то jail с одного сервера на второй без всяких затрат и остановок. Если FreeBSD для этих целей не идет,то что более-менее идет? с linux-ом, думаю еще больше траблов будет.. ПС. На следующей неделе планирую запустить сервер с рутовым публичным shell-доступом, типа beta-test:) планирую держать его в живых,как можно дольше ;) |
Да,в инете по TCP ничего нету..вижу,прийдется руками лесть в код лупбека и копать...
Ну и предварительно протестить скорость на дорогом железе,если получится,то на 10гигабитном Пока занимаюсь jail resource limits... |
Время: 01:41. |
Время: 01:41.
© OSzone.net 2001-