From: Державец Борис <dba477 at list.ru>
Newsgroups: email
Date: Mon, 9 Sep 2004 14:31:37 +0000 (UTC)
Subject: Активирование асинхронного ввода/вывода в Linux для Oracle9iR2
Активирование асинхронного ввода/вывода в среде Red Hat Linux 9.
Линкование Oracle9iR2 для использования AIO.
Установка нового ядра с поддержкой AIO и патча для разделяемой
библиотеки libaio.so
1. rpm -i kernel-2.4.20-35.9.i686.rpm с http://atrpms.com
dropping thread count to the number of contexts 1
file size 300MB, record size 64KB, depth 64, ios per iteration 8
max io_submit 8, buffer alignment set to 4KB
threads 1 files 1 contexts 1 context offset 2MB verification off
adding file file1 thread 0
latency min 0.07 avg 0.64 max 53.48
600 < 100 0 < 250 0 < 500 0 < 1000 0 < 5000 0 < 10000
completion latency min 0.02 avg 59.13 max 699.38
3625 < 100 883 < 250 228 < 500 13 < 1000 0 < 5000 0 < 10000
write on file1 (57.78 MB/s) 300.00 MB in 5.19s
thread 0 write totals (25.23 MB/s) 300.00 MB in 11.89s
latency min 0.22 avg 0.56 max 1.22
600 < 100 0 < 250 0 < 500 0 < 1000 0 < 5000 0 < 10000
completion latency min 0.01 avg 11.66 max 777.21
4610 < 100 122 < 250 56 < 500 11 < 1000 0 < 5000 0 < 10000
read on file1 (293.03 MB/s) 300.00 MB in 1.02s
thread 0 read totals (292.75 MB/s) 300.00 MB in 1.02s
latency min 0.07 avg 0.32 max 57.93
600 < 100 0 < 250 0 < 500 0 < 1000 0 < 5000 0 < 10000
completion latency min 0.02 avg 648.07 max 43866.41
3806 < 100 134 < 250 436 < 500 315 < 1000 43 < 5000 0 < 10000 < 62
random write on file1 (5.97 MB/s) 300.00 MB in 50.26s
thread 0 random write totals (4.70 MB/s) 300.00 MB in 63.83s
latency min 0.44 avg 0.68 max 30.32
600 < 100 0 < 250 0 < 500 0 < 1000 0 < 5000 0 < 10000
completion latency min 0.01 avg 2.36 max 166.30
4804 < 100 3 < 250 0 < 500 0 < 1000 0 < 5000 0 < 10000
random read on file1 (718.66 MB/s) 300.00 MB in 0.42s
thread 0 random read totals (538.19 MB/s) 300.00 MB in 0.56s
2.Поведение aio-stress под Red Hat Linux 9.
# uname -a
Linux ServerI685 2.4.20-35.9 #1 Thu Jun 24 07:09:26 EDT 2004 i686 i686 i386
GNU/Linux
# gcc -Wall -laio -lpthread -o aio-stress aio-stress.c
# ./aio-stress -s 300 -m -S -t 10 -l -L file1
dropping thread count to the number of contexts 1
file size 300MB, record size 64KB, depth 64, ios per iteration 8
max io_submit 8, buffer alignment set to 4KB
threads 1 files 1 contexts 1 context offset 2MB verification off
adding file file1 thread 0
io_queue_setup(512) returned -38 (Function not implemented)
Те же результаты и для 2.4.20-8
Выводы:
1.Удачная релинковка и рестарт Oracle с параметрами:
disk_asynch_io=true
filesystemio_options=asynch
в дейтвительности ни о чем не свидетельствуют
2.Информация на http://atrpms.net не достоверна, по меньшей мере для
kernel-rpms Red Hat Linux 9. Они не проходили aio-stress тесты !!!
3. В настоящий момент есть только две опции:
а. RHEL AS (ES) 3 (2.4.21-20.EL Upgrade 3)
б. Kernel upgrade up to 2.6.8 ( см. [2])
В свое оправдание,могу лишь сказать,что доступная версия aio-stress.c
появилась на вебе лишь летом 2004 года. Такого рода код используют службы
поддержки Red Hat Inc.c 2002-2003 года. Я же был совершенно уверен,что ядро
2.4.20-35.9 прошло aio-stress тест
Литература
1.http://mirror.etf.bg.ac.yu/distributions/suse/people/mason/utils/aio-stress.c
2.http://www.grabinar.com/simon/aio.html
Активирование асинхронного ввода/вывода для Oracle9iR2(9.2.0.4) в среде Linux 2.6.8
Первое:
Download aio-stress.c from [1] и откомпилируйте его:
gcc -Wall -laio -lpthread -o aio-stress aio-stress.c
Выполните aio-stress тесты и удостоверьтесь,что ядро поддерживает AIO
Второе:
Build "libaio-oracle" as root
Download libaio-oracle-0.3.0.tar.gz -
- исходный код для libaio-oracle version 0.3.0
с http://oss.oracle.com/projects/libaio-oracle/files в каталог /tmp
Асинхронный ввод/вывод для Oracle9iR2(9.2.0.4)
в среде Red Hat Fedora Core 2
Удобным и доступным для Oracle9iR2 AIO тестирования является Red Hat Fedora
Core 2 (Kernel 2.6.5) Установка Oracle9iR2 в среде FC 2 подробно и технически
правильно описана в статье Jeffrey Hunter:-
Установка патча 9.2.0.5 рекомендована,но не обязательна.
(при желании см. http://mirrors.cn99.com/oracle/9i/)
Для создания базы данных - просто запустите "dbca" как "oracle".
Однако версия libaio должна быть не 0.3.99, а 0.3.96.
Иными словами ,после установки Oracle выполните:
1. # rpm -q libaio
Если ничего не установлено, то выполняите п.2 сразу, иначе:-
# rpm -e libaio-0.3.99-3.i386.rpm libaio-devel-0.3.99-3.i386.rpm +
еще один зависимый "rpm". Название будет показано в сообшении
об ошибке (Failed dependencies).