Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 30 Nov 2005 20:35:52 -0800
From:      "Gustavo A. Baratto" <gbaratto@superb.net>
To:        <freebsd-performance@freebsd.org>
Subject:   new benchmarks. WAS: FreeBSD MySQL still WAY slower than Linux
Message-ID:  <04f401c5f630$b9af6570$6450fb40@guinness>

next in thread | raw e-mail | index | archive | help
following  Steve Roome's benchmarks from a few months ago, here it goes a 
few more, on freebsd 6.0 RELEASE, using libpthreads (system, and process 
scopes), libthr, and linuxthreads. Unless otherwise specified, the my.cnf 
values are the ones posted below. Dmesg, and diff of the kernel compared 
with GENERIC are posted in the end as well. File systems are mounted as 
default (no fancy mount opts):
----
# more /etc/fstab
# Device                Mountpoint      FStype  Options         Dump 
Pass#
/dev/da0s1b             none            swap    sw              0       0
/dev/da0s1a             /               ufs     rw              1       1
/dev/da0s1d             /tmp            ufs     rw              2       2
/dev/da0s1e             /var            ufs     rw              2       2
/dev/da0s1f             /home           ufs     rw              2       2
/dev/acd0               /cdrom          cd9660  ro,noauto       0       0
-------

Cheers all


++++ lipthread: standard
# date; for i in 1 2 3 4 5; do super-smack select-key-mysql.smack 10 1000 | 
grep select_index; done; date
Wed Nov 30 16:20:52 EST 2005
select_index    20000   0       0       14570.99
select_index    20000   2       0       14787.32
select_index    20000   3       0       14621.65
select_index    20000   1       0       13554.19
select_index    20000   0       0       13514.42
Wed Nov 30 16:20:59 EST 2005

date; for i in 1 2 3 4 5; do super-smack select-key-mysql.smack 10 1000 | 
grep select_index; done; date
Wed Nov 30 22:45:37 EST 2005
select_index    20000   1       0       14567.60
select_index    20000   0       0       13745.24
select_index    20000   1       0       13625.50
select_index    20000   0       0       13558.84
select_index    20000   1       0       13460.09
Wed Nov 30 22:45:45 EST 2005




++++ lipthread:  LIBPTHREAD_PROCESS_SCOPE=yes
# date; for i in 1 2 3 4 5; do super-smack select-key-mysql.smack 10 1000 | 
grep select_index; done; date
Wed Nov 30 16:37:16 EST 2005
select_index    20000   2       0       12014.51
select_index    20000   2       0       11991.61
select_index    20000   0       0       10890.61
select_index    20000   1       0       11992.41
select_index    20000   3       0       11775.37
Wed Nov 30 16:37:24 EST 2005

date; for i in 1 2 3 4 5; do super-smack select-key-mysql.smack 10 1000 | 
grep select_index; done; date
Wed Nov 30 22:49:40 EST 2005
select_index    20000   1       0       11035.18
select_index    20000   4       0       11877.35
select_index    20000   0       0       10097.29
select_index    20000   0       0       10765.29
select_index    20000   1       0       11401.68
Wed Nov 30 22:49:50 EST 2005




++++ libthr:
# more /etc/libmap.conf
[mysqld]
libpthread.so.2         libthr.so.2
libpthread.so           libthr.so

# ldd /usr/local/libexec/mysqld
/usr/local/libexec/mysqld:
        libz.so.3 => /lib/libz.so.3 (0x881f8000)
        libcrypt.so.3 => /lib/libcrypt.so.3 (0x88208000)
        libstdc++.so.5 => /usr/lib/libstdc++.so.5 (0x88220000)
        libm.so.4 => /lib/libm.so.4 (0x882ea000)
        libpthread.so.2 => /usr/lib/libthr.so.2 (0x88300000)
        libc.so.6 => /lib/libc.so.6 (0x88312000)

# date; for i in 1 2 3 4 5; do super-smack select-key-mysql.smack 10 1000 | 
grep select_index; done; date
Wed Nov 30 16:38:45 EST 2005
select_index    20000   0       0       15789.56
select_index    20000   1       0       14804.51
select_index    20000   0       0       14810.69
select_index    20000   0       0       14600.25
select_index    20000   0       0       14478.79
Wed Nov 30 16:38:52 EST 2005

# date; for i in 1 2 3 4 5; do super-smack select-key-mysql.smack 10 1000 | 
grep select_index; done; date
Wed Nov 30 22:47:26 EST 2005
select_index    20000   1       0       14375.95
select_index    20000   0       0       14392.69
select_index    20000   0       0       14478.93
select_index    20000   0       0       14371.66
select_index    20000   0       0       14416.07
Wed Nov 30 22:47:33 EST 2005




++++ linuxthreads
# ldd /usr/local/libexec/mysqld
/usr/local/libexec/mysqld:
        liblthread.so.3 => /usr/local/lib/liblthread.so.3 (0x88201000)
        liblstdc++.so.5 => /usr/local/lib/liblstdc++.so.5 (0x88222000)
        libz.so.3 => /lib/libz.so.3 (0x882ed000)
        libcrypt.so.3 => /lib/libcrypt.so.3 (0x882fd000)
        libstdc++.so.5 => /usr/lib/libstdc++.so.5 (0x88315000)
        libm.so.4 => /lib/libm.so.4 (0x883df000)
        libc.so.6 => /lib/libc.so.6 (0x883f5000)

# date; for i in 1 2 3 4 5; do super-smack select-key-mysql.smack 10 1000 | 
grep select_index; done; date
Wed Nov 30 23:30:24 EST 2005
select_index    20000   0       0       14357.28
select_index    20000   0       0       14055.69
select_index    20000   0       0       13694.37
select_index    20000   1       0       13394.22
select_index    20000   0       0       13723.05
Wed Nov 30 23:30:32 EST 2005

# date; for i in 1 2 3 4 5; do super-smack select-key-mysql.smack 10 1000 | 
grep select_index; done; date
Wed Nov 30 23:30:38 EST 2005
select_index    20000   2       0       13555.20
select_index    20000   2       0       13500.62
select_index    20000   0       0       13546.00
select_index    20000   0       0       13161.49
select_index    20000   0       0       13510.82
Wed Nov 30 23:30:46 EST 2005




++++ linuxthreads with query cache disabled (query_cache_size commented out 
in my.cnf)::
# date; for i in 1 2 3 4 5; do super-smack select-key-mysql.smack 10 1000 | 
grep select_index; done; date
Wed Nov 30 21:59:51 EST 2005
select_index    20000   1       0       8615.98
select_index    20000   3       0       8700.63
select_index    20000   1       0       8590.18
select_index    20000   1       0       8733.90
select_index    20000   1       0       8582.01
Wed Nov 30 22:00:02 EST 2005


++++ libthr with query cache disabled (query_cache_size commented out in 
my.cnf):
date; for i in 1 2 3 4 5; do super-smack select-key-mysql.smack 10 1000 | 
grep select_index; done; date
Wed Nov 30 22:52:42 EST 2005
select_index    20000   1       0       9511.13
select_index    20000   1       0       9464.96
select_index    20000   1       0       9229.52
select_index    20000   1       0       9195.97
select_index    20000   1       0       9346.92
Wed Nov 30 22:52:53 EST 2005



++++ libthr, connecting to a local mysql using TCP, instead of socket
# date; for i in 1 2 3 4 5; do super-smack select-key-mysql.smack 10 1000 | 
grep select_index; done; date
Wed Nov 30 22:57:03 EST 2005
select_index    20000   1       0       9286.62
select_index    20000   2       0       9245.66
select_index    20000   1       0       9126.25
select_index    20000   0       0       9303.66
select_index    20000   1       0       9286.14
Wed Nov 30 22:57:15 EST 2005

++++ linuxthreads, connecting to a local mysql using TCP, instead of socket
# date; for i in 1 2 3 4 5; do super-smack select-key-mysql.smack 10 1000 | 
grep select_index; done; date
Wed Nov 30 23:07:16 EST 2005
select_index    20000   2       0       8137.02
select_index    20000   2       0       8220.83
select_index    20000   3       0       8264.19
select_index    20000   1       0       8268.86
select_index    20000   3       0       8234.24
Wed Nov 30 23:07:28 EST 2005



++++ my.cnf
----------------
[mysqld]
server-id=2
log-bin=/var/log/mysql/binlog
log-slow-queries=/var/log/mysql/slow-queries.log
relay-log=/var/log/mysql/relay-log
relay-log-index=/var/log/mysql/relay-log-index
skip-innodb
skip-bdb
safe-user-create
skip-name-resolve
skip-log-warnings
safe-show-database


set-variable = flush_time=86400
set-variable = max_connections=300
set-variable = max_connect_errors=100
set-variable = interactive_timeout=600
set-variable = wait_timeout=60
set-variable = myisam-recover=FORCE
set-variable = key_buffer_size=400M
set-variable = sort_buffer_size=1M
set-variable = read_buffer_size=512k
set-variable = table_cache=4096
set-variable = max_delayed_threads=0
set-variable = max_user_connections=100
set-variable = query_cache_size=300M
set-variable = thread_cache_size=50


[mysql.server]
user=mysql

[safe_mysqld]
err-log=/var/log/mysql/error.log
------------------------



++++ DMESG:
----------
# dmesg
Copyright (c) 1992-2005 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 6.0-RELEASE #1: Tue Nov 29 23:36:08 EST 2005
    gbaratto@sh-mysql4.dca1.superb.net:/usr/obj/usr/src/sys/GBARATTO
Timecounter "i8254" frequency 1193182 Hz quality 0
CPU: Intel(R) Xeon(TM) CPU 3.06GHz (3066.79-MHz 686-class CPU)
  Origin = "GenuineIntel"  Id = 0xf29  Stepping = 9
  Features=0xbfebfbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CLFLUSH,DTS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE>
  Features2=0x4400<CNTX-ID,<b14>>
  Hyperthreading: 2 logical CPUs
real memory  = 1073741824 (1024 MB)
avail memory = 1041698816 (993 MB)
MPTable: <INTEL    KingsCanyonC>
FreeBSD/SMP: Multiprocessor System Detected: 2 CPUs
 cpu0 (BSP): APIC ID:  0
 cpu1 (AP): APIC ID:  6
ioapic0: Assuming intbase of 0
ioapic1: Assuming intbase of 24
ioapic2: Assuming intbase of 48
ioapic0 <Version 2.0> irqs 0-23 on motherboard
ioapic1 <Version 2.0> irqs 24-47 on motherboard
ioapic2 <Version 2.0> irqs 48-71 on motherboard
npx0: [FAST]
npx0: <math processor> on motherboard
npx0: INT 16 interface
cpu0 on motherboard
cpu1 on motherboard
pcib0: <MPTable Host-PCI bridge> pcibus 0 on motherboard
pci0: <PCI bus> on pcib0
pcib1: <PCI-PCI bridge> at device 2.0 on pci0
pci2: <PCI bus> on pcib1
pci2: <base peripheral, interrupt controller> at device 28.0 (no driver 
attached)
pcib2: <MPTable PCI-PCI bridge> at device 29.0 on pci2
pci5: <PCI bus> on pcib2
em0: <Intel(R) PRO/1000 Network Connection, Version - 2.1.7> port 
0xa400-0xa43f mem 0xfe9c0000-0xfe9dffff irq 48 at device 1.0 on pci5
em0: Ethernet address: 00:e0:81:2a:48:64
em0:  Speed:N/A  Duplex:N/A
em1: <Intel(R) PRO/1000 Network Connection, Version - 2.1.7> port 
0xa800-0xa83f mem 0xfe9e0000-0xfe9fffff irq 49 at device 1.1 on pci5
em1: Ethernet address: 00:e0:81:2a:48:65
em1:  Speed:N/A  Duplex:N/A
pci2: <base peripheral, interrupt controller> at device 30.0 (no driver 
attached)
pcib3: <MPTable PCI-PCI bridge> at device 31.0 on pci2
pci3: <PCI bus> on pcib3
asr0: <Adaptec Caching SCSI RAID> mem 0xfa000000-0xfbffffff irq 24 at device 
3.0 on pci3
asr0: [GIANT-LOCKED]
asr0: ADAPTEC 2110S FW Rev. 380E, 1 channel, 256 CCBs, Protocol I2O
pcib4: <PCI-PCI bridge> at device 3.1 on pci3
pci4: <PCI bus> on pcib4
uhci0: <Intel 82801EB (ICH5) USB controller USB-A> port 0xc400-0xc41f irq 16 
at device 29.0 on pci0
uhci0: [GIANT-LOCKED]
usb0: <Intel 82801EB (ICH5) USB controller USB-A> on uhci0
usb0: USB revision 1.0
uhub0: Intel UHCI root hub, class 9/0, rev 1.00/1.00, addr 1
uhub0: 2 ports with 2 removable, self powered
uhci1: <Intel 82801EB (ICH5) USB controller USB-B> port 0xc800-0xc81f irq 19 
at device 29.1 on pci0
uhci1: [GIANT-LOCKED]
usb1: <Intel 82801EB (ICH5) USB controller USB-B> on uhci1
usb1: USB revision 1.0
uhub1: Intel UHCI root hub, class 9/0, rev 1.00/1.00, addr 1
uhub1: 2 ports with 2 removable, self powered
ehci0: <EHCI (generic) USB 2.0 controller> mem 0xfebffc00-0xfebfffff irq 23 
at device 29.7 on pci0
ehci0: [GIANT-LOCKED]
usb2: waiting for BIOS to give up control
usb2: timed out waiting for BIOS
usb2: EHCI version 1.0
usb2: companion controllers, 2 ports each: usb0 usb1
usb2: <EHCI (generic) USB 2.0 controller> on ehci0
usb2: USB revision 2.0
uhub2: Intel EHCI root hub, class 9/0, rev 2.00/1.00, addr 1
uhub2: 4 ports with 4 removable, self powered
pcib5: <MPTable PCI-PCI bridge> at device 30.0 on pci0
pci1: <PCI bus> on pcib5
fxp0: <Intel 82551 Pro/100 Ethernet> port 0x9800-0x983f mem 
0xfe6fe000-0xfe6fefff,0xfe6a0000-0xfe6bffff irq 17 at device 1.0 on pci1
miibus0: <MII bus> on fxp0
inphy0: <i82555 10/100 media interface> on miibus0
inphy0:  10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
fxp0: Ethernet address: 00:e0:81:2a:48:35
pci1: <display, VGA> at device 2.0 (no driver attached)
isab0: <PCI-ISA bridge> at device 31.0 on pci0
isa0: <ISA bus> on isab0
atapci0: <Intel ICH5 UDMA100 controller> port 
0x1f0-0x1f7,0x3f6,0x170-0x177,0x376,0xfc00-0xfc0f at device 31.1 on pci0
ata0: <ATA channel 0> on atapci0
ata1: <ATA channel 1> on atapci0
pci0: <serial bus, SMBus> at device 31.3 (no driver attached)
pmtimer0 on isa0
orm0: <ISA Option ROMs> at iomem 0xc0000-0xc7fff,0xc8000-0xcdfff on isa0
atkbdc0: <Keyboard controller (i8042)> at port 0x60,0x64 on isa0
atkbd0: <AT Keyboard> irq 1 on atkbdc0
kbd0 at atkbd0
atkbd0: [GIANT-LOCKED]
fdc0: <Enhanced floppy controller> at port 0x3f0-0x3f5,0x3f7 irq 6 drq 2 on 
isa0
fdc0: [FAST]
fd0: <1440-KB 3.5" drive> on fdc0 drive 0
ppc0: parallel port not found.
sc0: <System console> at flags 0x100 on isa0
sc0: VGA <16 virtual consoles, flags=0x300>
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 16550A
sio1: configured irq 3 not in bitmap of probed irqs 0
sio1: port may not be enabled
sio1 at port 0x2f8-0x2ff irq 3 on isa0
sio1: type 16550A
vga0: <Generic ISA VGA> at port 0x3c0-0x3df iomem 0xa0000-0xbffff on isa0
unknown: <PNP0c01> can't assign resources (memory)
unknown: <PNP0501> can't assign resources (port)
unknown: <PNP0700> can't assign resources (port)
unknown: <PNP0303> can't assign resources (port)
unknown: <PNP0501> can't assign resources (port)
Timecounters tick every 1.000 msec
acd0: CDROM <CDU5211/YYS2> at ata1-master PIO4
da0 at asr0 bus 0 target 0 lun 0
da0: <ADAPTEC RAID-5 380E> Fixed Direct Access SCSI-2 device
da0: Tagged Queueing Enabled
da0: 70006MB (143372288 512 byte sectors: 255H 63S/T 8924C)
SMP: AP CPU #1 Launched!
Trying to mount root from ufs:/dev/da0s1a
em0: link state changed to UP
----------------


++++ DIFF KERNEL
# diff -bu /usr/src/sys/i386/conf/GENERIC /usr/src/sys/i386/conf/GBARATTO
--- /usr/src/sys/i386/conf/GENERIC      Fri Oct 28 15:22:41 2005
+++ /usr/src/sys/i386/conf/GBARATTO     Tue Nov 29 23:29:19 2005
@@ -19,10 +19,8 @@
 # $FreeBSD: src/sys/i386/conf/GENERIC,v 1.429.2.3.2.1 2005/10/28 19:22:41 
jhb Exp $

 machine                i386
-cpu            I486_CPU
-cpu            I586_CPU
 cpu            I686_CPU
-ident          GENERIC
+ident          GBARATTO

 # To statically compile in device wiring instead of /boot/device.hints
 #hints         "GENERIC.hints"         # Default places to look for 
devices.
@@ -64,6 +62,26 @@
 options        ADAPTIVE_GIANT          # Giant mutex is adaptive.

 device         apic                    # I/O APIC
+
+# ADDED BY GUSTAVO
+options         SMP
+
+device carp
+
+options ALTQ
+options ALTQ_CBQ
+options ALTQ_RED
+options ALTQ_RIO
+options ALTQ_HFSC
+options ALTQ_CDNR
+options ALTQ_PRIQ
+options ALTQ_NOPCC  # just for SMP builds
+
+options         MAXDSIZ=(2048UL*1024*1024)      #added by gustavo
+options         MAXSSIZ=(512UL*1024*1024)       #added by gustavo
+options         DFLDSIZ=(2048UL*1024*1024)      #added by gustavo
+#
+

 # Bus support.
 device         eisa





Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?04f401c5f630$b9af6570$6450fb40>