Тестирование производительности (GCC 3.4.4 и -O2 -O3)

Полезные советы и программы от пользователей нашего форума.

Модератор: Модераторы разделов

Аватара пользователя
Angel_13th
Сообщения: 1164
Статус: ...-oo=ll=oo-...
ОС: Gentoo

Тестирование производительности

Сообщение Angel_13th »

Вот тут решил провести тестирование о влиянии опции -O2 и -O3 на скорость сборки на архитектуре x86_64.
Данные о системе.

Код: Выделить всё

Процессор AMD Athlon64 3000+ 939 soc
Мат.Плата EPOX 9NDA3 nForce 3 Ultra
Память 2х265Mb Hynix, DualMode, PC3200.

uname -a
Linux gentoo 2.6.13-mm1 #1 Tue Sep 27 01:35:04 YAKST 2005 x86_64 AMD Athlon(tm) 64 Processor 3000+ AuthenticAMD GNU/Linux

cat /proc/cpuinfo
processor       : 0
vendor_id       : AuthenticAMD
cpu family      : 15
model           : 31
model name      : AMD Athlon(tm) 64 Processor 3000+
stepping        : 0
cpu MHz         : 1808.255
cache size      : 512 KB
fpu             : yes
fpu_exception   : yes
cpuid level     : 1
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx mmxext fxsr_opt lm 3dnowext 3dnow
bogomips        : 3620.06
TLB size        : 1024 4K pages
clflush size    : 64
cache_alignment : 64
address sizes   : 40 bits physical, 48 bits virtual
power management: ts fid vid ttp


Древо портежей от 2005 08 29

cat /etc/make.conf
CFLAGS="-O3"
CHOST="x86_64-pc-linux-gnu"
CXXFLAGS="${CFLAGS}"
USE="ntpl ntplonly"

cat /etc/make.conf.old
CFLAGS="-O2"
CHOST="x86_64-pc-linux-gnu"
CXXFLAGS="${CFLAGS}"
USE="ntpl ntplonly"

lsmod
Module                  Size  Used by
w83627hf               27980  0
hwmon_vid               2432  1 w83627hf
eeprom                  6736  0
i2c_isa                 4544  1 w83627hf
iptable_nat            23068  1
ipt_state               1920  1
ip_conntrack           46192  2 iptable_nat,ipt_state
iptable_filter          2880  1
ip_tables              18240  3 iptable_nat,ipt_state,iptable_filter
uhci_hcd               29856  0
snd_mpu401              6792  1
snd_mpu401_uart         6400  1 snd_mpu401
analog                 10016  0
ns558                   4676  0
parport_pc             33512  0
parport                34956  1 parport_pc
floppy                 65352  0
eth1394                18320  0
sundance               19680  0
mii                     5120  1 sundance
emu10k1_gp              3456  0
gameport               12176  5 analog,ns558,emu10k1_gp
ohci1394               30028  0
ieee1394              348024  2 eth1394,ohci1394
nvidia               4377640  12
usbhid                 36320  0
usbmouse                4992  0
forcedeth              20224  0
ehci_hcd               30600  0
ohci_hcd               18756  0
i2c_nforce2             6848  0
i2c_core               19416  4 w83627hf,eeprom,i2c_isa,i2c_nforce2
usbcore               114144  6 uhci_hcd,usbhid,usbmouse,ehci_hcd,ohci_hcd
ntfs                   88320  1
unix                   24440  208

Список пакетов для сборки
[ebuild  N    ] sys-devel/patch-2.5.9-r1
[ebuild  N    ] app-arch/bzip2-1.0.3-r5
[ebuild  N    ] app-arch/cpio-2.6-r4
[ebuild  N    ] sys-libs/gpm-1.20.1-r4
[ebuild  N    ] sys-libs/ncurses-5.4-r6
[ebuild  N    ] app-shells/bash-3.0-r12
[ebuild  N    ] sys-devel/binutils-config-1.8-r5
[ebuild  N    ] sys-devel/gnuconfig-20050324
[ebuild  N    ] sys-devel/binutils-2.15.92.0.2-r10
[ebuild  N    ] sys-devel/m4-1.4.3
[ebuild  N    ] sys-devel/bison-1.875d
[ebuild  N    ] sys-apps/sed-4.1.4
[ebuild  N    ] sys-devel/gcc-config-1.3.11-r4
[ebuild  N    ] sys-apps/texinfo-4.8
[ebuild  N    ] sys-libs/zlib-1.2.3
[ebuild  N    ] sys-devel/gcc-3.4.4-r1
[ebuild  N    ] sys-kernel/linux-headers-2.6.11-r2
[ebuild  N    ] sys-libs/glibc-2.3.5-r1
[ebuild  N    ] sys-devel/gettext-0.14.4
[ebuild  N    ] app-arch/gzip-1.3.5-r8
[ebuild  N    ] app-arch/tar-1.15.1
[ebuild  N    ] sys-libs/db-4.2.52_p2
[ebuild  N    ] sys-apps/groff-1.19.1-r2
[ebuild  N    ] sys-process/cronbase-0.3.2
[ebuild  N    ] sys-apps/man-1.6-r1
[ebuild  N    ] sys-devel/libperl-5.8.6-r1
[ebuild  N    ] dev-lang/perl-5.8.6-r5
[ebuild  N    ] app-admin/perl-cleaner-1.01
[ebuild  N    ] sys-libs/readline-5.0-r2
[ebuild  N    ] sys-devel/flex-2.5.4a-r6
[ebuild  N    ] sys-devel/bc-1.06-r6
[ebuild  N    ] sys-apps/diffutils-2.8.7-r1
[ebuild  N    ] dev-libs/openssl-0.9.7e-r1
[ebuild  N    ] dev-libs/expat-1.95.8
[ebuild  N    ] dev-lang/python-2.3.5
[ebuild  N    ] dev-python/python-fchksum-1.7.1
[ebuild  N    ] net-misc/iputils-021109-r3
[ebuild  N    ] dev-libs/popt-1.7-r1
[ebuild  N    ] sys-apps/sandbox-1.2.12
[ebuild  N    ] sys-apps/debianutils-2.14.1-r1
[ebuild  N    ] sys-apps/portage-2.0.51.22-r2
[ebuild  N    ] net-misc/rsync-2.6.0-r6
[ebuild  N    ] sys-devel/autoconf-2.13
[ebuild  N    ] sys-devel/autoconf-wrapper-3-r1
[ebuild  N    ] sys-devel/autoconf-2.59-r6
[ebuild  N    ] net-misc/wget-1.9.1-r5
[ebuild  N    ] sys-apps/sysvinit-2.86
[ebuild  N    ] dev-perl/Locale-gettext-1.03
[ebuild  N    ] sys-apps/help2man-1.33.1
[ebuild  N    ] sys-devel/automake-1.5
[ebuild  N    ] sys-devel/automake-1.9.6
[ebuild  N    ] sys-devel/automake-1.6.3
[ebuild  N    ] sys-devel/automake-1.7.9-r1
[ebuild  N    ] sys-devel/automake-1.4_p6
[ebuild  N    ] sys-devel/automake-wrapper-1-r1
[ebuild  N    ] sys-devel/automake-1.8.5-r3
[ebuild  N    ] sys-apps/coreutils-5.2.1-r6
[ebuild  N    ] sys-apps/baselayout-1.11.13-r1
[ebuild  N    ] sys-apps/file-4.13
[ebuild  N    ] sys-apps/findutils-4.1.20-r1
[ebuild  N    ] sys-apps/gawk-3.1.3-r2
[ebuild  N    ] sys-apps/grep-2.5.1-r8
[ebuild  N    ] sys-apps/kbd-1.12-r5
[ebuild  N    ] sys-apps/man-pages-2.07
[ebuild  N    ] sys-apps/net-tools-1.60-r11
[ebuild  N    ] sys-process/procps-3.2.5-r1
[ebuild  N    ] sys-devel/libtool-1.5.18-r1
[ebuild  N    ] sys-process/psmisc-21.6
[ebuild  N    ] sys-libs/cracklib-2.8.3-r1
[ebuild  N    ] dev-util/pkgconfig-0.17.2-r1
[ebuild  N    ] sys-libs/pam-0.78-r2
[ebuild  N    ] sys-apps/shadow-4.0.7-r3
[ebuild  N    ] sys-apps/pam-login-3.17
[ebuild  N    ] sys-apps/which-2.16
[ebuild  N    ] sys-devel/make-3.80-r2
[ebuild  N    ] sys-libs/com_err-1.38
[ebuild  N    ] sys-libs/ss-1.38
[ebuild  N    ] sys-fs/e2fsprogs-1.38
[ebuild  N    ] sys-apps/hotplug-base-20040401
[ebuild  N    ] sys-fs/udev-058
[ebuild  N    ] app-editors/nano-1.3.7
[ebuild  N    ] sys-apps/module-init-tools-3.0-r2
[ebuild  N    ] sys-apps/less-382-r2
[ebuild  N    ] sys-apps/tcp-wrappers-7.6-r8
[ebuild  N    ] net-misc/openssh-3.9_p1-r2
[ebuild  N    ] sys-apps/busybox-1.00-r4
[ebuild  N    ] sys-apps/hdparm-5.9
[ebuild  N    ] app-crypt/hashalot-0.3
[ebuild  N    ] sys-apps/util-linux-2.12i-r1
[ebuild  N    ] sys-libs/pwdb-0.62
[ebuild  N    ] sys-apps/linux32-1.0

Запущенные службы
rc-status
Runlevel: default
gpm                    [   off ]
xdm                    [   off ]
acpid                  [   off ]
local                    [   off ]
named                [   off ]
iptables              [   off ]
lm_sensors         [   off ]
coldplug              [   off ]
net.eth0             [   off ]
sysklogd              [ started ]
netmount            [   off ]

Скрипт использованный для тестирования
#!/bin/bash
        /usr/portage/scripts/bootstrap.sh &>/dev/null
        emerge -e system &> /dev/null
        for i in 1 2 3
                do
                        a=`time emerge -e system &> /dev/null` && echo $a
                done
        mv /etc/make.conf /etc/make.conf.old
        cp /root/make.conf  /etc/make.conf
        emerge -e system &>/dev/null
        for i in 1 2 3
                do
                        a=`time emerge -e system &> /dev/null` && echo $a
                done
exit 0


Тестирование проводилось в 1ой консоли, все другие были не активны, проводилось трижды для каждой опции.
Установка производилась с 1ой стадии для AMD64.Тарбол распаковывался на раздел с Reiserfs, после чего распаковывалось древо портежей, далее переход в chroot, далее запускался скрипт с выводом в файл.
А вот и собственно результаты.

Код: Выделить всё

cat /root/test
Опция -O2
real    129m31.854s
user    90m23.632s
sys     32m55.408s

real    128m24.604s
user    89m54.499s
sys     32m8.235s

real    129m23.452s
user    89m35.652s
sys     32m43.923s

Опция -O3

real    122m56.979s
user    87m26.233s
sys     32m14.798s

real    123m3.994s
user    87m25.092s
sys     32m19.702s

real    123m14.847s
user    87m26.700s
sys     32m24.891s

Конфиг ядра находиться в прикрепленном файле.

Разница не такая уж и большая, выйгрыш от использования опции - O3 составил всего 5 минут , по сравнению с -O2, учитывая общее время т.е. 2 час это не так уж и много. Вобщем выводы делать вам, я постарался в этом вам помочь. Если у ког есть какие предложения то предлагайте. На данный момент планирую тестирование вот с этими опциями

Код: Выделить всё

#CFLAGS="-O2 -march=k8 -fforce-addr -funit-at-a-time -fomit-frame-pointer -frename-registers -fprefetch-loop-arrays"
CFLAGS="-march=k8 -O3 -fforce-addr -funit-at-a-time -fomit-frame-pointer -frename-registers -fprefetch-loop-arrays -ftracer -funswitch-loops -ffast-math"
CHOST="x86_64-pc-linux-gnu"
#CXXFLAGS=" -fvisibility-inlines-hidden -frepo"
CXXFLAGS="${CFLAGS}"
#LDFLAGS="-O1 -Wl,--enable-new-dtags -Wl,--sort-common -s"

Жду ваших пожеланий и предложений.
WorkStation Ubuntu 10.10 on Fujitsu-Siemens Amilo Pro 3545
Спасибо сказали:
Аватара пользователя
alv
Бывший модератор
Сообщения: 7275
Статус: Пенсионер в законе
ОС: Cintu

Re: Тестирование производительности

Сообщение alv »

предложение одно - по завершении трудов праведных оформить это в виде статьи, с таблицами и графиками
в этом помочь готов

что же до пожеланий - если не лениво, провести то же самое
для флагов
-O2 -march=i686
с которыми собираются дистры с претензиями на быстродействие (CRUX и Arch, например)
и флагами
-O1 -mcpu=i686
обычными для дистрибутивов общего назначения (если не ошибаюсь, Debian собирается именно так?)
Спасибо сказали:
Аватара пользователя
Angel_13th
Сообщения: 1164
Статус: ...-oo=ll=oo-...
ОС: Gentoo

Re: Тестирование производительности

Сообщение Angel_13th »

2alv Сегодня вечером запущу на тестирование вот с такими make.conf

Код: Выделить всё

1.CFLAGS="-O2 -march=i686"
CHOST="i686-pc-linux-gnu"
CXXFLAGS="${CFLAGS}"
USE="ntpl ntplonly"
&
2.CFLAGS="-O1 -mcpu=i686"
CHOST="i386-pc-linux-gnu"
CXXFLAGS="${CFLAGS}"
USE="ntpl ntplonly"
WorkStation Ubuntu 10.10 on Fujitsu-Siemens Amilo Pro 3545
Спасибо сказали:
Аватара пользователя
Cap. J2A
Сообщения: 300

Re: Тестирование производительности

Сообщение Cap. J2A »

Разница не такая уж и большая, выйгрыш от использования опции - O3 составил всего 5 минут , по сравнению с -O2, учитывая общее время т.е. 2 час это не так уж и много.

Посчитал погрешность ;)
прирост (4.89+-0.82)% . Если есть желание посравнивать, у меня с http://wiki.atmsk.ru/?GCCForScience весь инструментарий остался :)
Debian GNU/Linux 3.1 2.6.12-1-k7 на AXP1700+/nF2/Radeon 9600 (debsmart)
Debian GNU/Linux 3.1 2.6.15.1 на hp compaq nx9020 (moby)
:Wq
E492: Not an editor command: Wq
Спасибо сказали:
Аватара пользователя
Angel_13th
Сообщения: 1164
Статус: ...-oo=ll=oo-...
ОС: Gentoo

Re: Тестирование производительности

Сообщение Angel_13th »

Начал новое тестирование с опциями указанными выше. Результаты будут завтра вечером (по москве в 16 часов). Если не выключат свет, или же не будет ни какого форс мажора.

Ненавижу нашу страну, этим электрикам оторвать бы руки, повторю сегодня ночью.
WorkStation Ubuntu 10.10 on Fujitsu-Siemens Amilo Pro 3545
Спасибо сказали: