Ключевые слова:async, io, oracle, redhat, linux, (найти похожие документы)
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
2. rpm -i libaio-0.3.93-4.src.rpm
3. cd /usr/src/redhat/SOURCES
4. gunzip libaio-0.3.93.tar.gz
5. tar xf libaio-0.3.93.tar -C /tmp
6. cd /tmp/libaio-0.3.93/src
7. Корректировка файлов (следуя [1],[2]) :
compat-0_1.c
io_queue_init.c
io_submit.c
8. cd /tmp
9. tar cvf libaio-0.3.93.tar libaio-0.3.93
10. gzip libaio-0.3.93.tar
11. cp libaio-0.3.93.tar.gz /usr/src/redhat/SOURCES
12. rpmbuild -ba /usr/src/redhat/SPECS/libaio.spec
13. cd /usr/src/redhat/RPMS/i386
14. rpm -i libaio-0.3.93-4.i386.rpm
15. Проверьте наличие файла /usr/lib/libaio.so.1
16. cd /lib
17. ln -s /usr/lib/libaio.so.1 libaio.so
Линкование Oracle9iR2 для использования AIO
Shutdown Oracle:-
1. cd $ORACLE_HOME/rdbms/lib
2. make -f ins_rdbms.mk async_on
3. make -f ins_rdbms.mk ioracle
4. cd $ORACLE_HOME/dbs
Добавьте к файлам init.ora инстансов Oracle, установленных на машине :-
disk_asynch_io=true
filesystem_io=asynch
Startup Oracle
Литература.
1. http://www.hyperic.net/support/tech-notes/oracle-setup.htm
2. http://developer.osdl.org/daniel/libaio/patch.libaio-0.3-93.fix
Продолжение:
Ядро 2.4.20-35.9 не поддерживает AIO под Red Hat Linux 9.
Red Hat Kernel-rmps на http://atrpms.net не проходили aio-stress
тестирование
Рассмотрим два примера:
1.Нормальное поведение aio-stress под ядром 2.6.8
(ядро поддерживает AIO).
# gcc -Wall -laio -lpthread -o aio-stress aio-stress.c
#./aio-stress -s 300 -m -S -l -L -t 10 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
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
$cd /tmp
$gunzip libaio-oracle-0.3.0.tar.gz
$tar xf libaio-oracle-0.3.0.tar
$cd libaio-oracle-0.3.0
$./configure
$make install
Довавьте к /etc/ld.so.conf
/lib
/usr/lib
/usr/local/lib
Restart Linux.
Выполните контрольный тест: lio_test.
Далее:
$su - oracle
Shutdown oracle
$mv $ORACLE_HOME/rdbms/lib/skgaio.o $ORACLE_HOME/rdbms/lib/skgaio.orig
$cp /tmp/libaio-oracle-0.3.0/libaio-oracle.o $ORACLE_HOME/rdbms/lib/skgaio.o
$make -f ins_rdbms.mk async_on
$make -f ins_rdbms.mk ioracle
Startup Oracle
Modify screen SPFILE of OEM concole
disk_asynch_io=true
filesystemio_options=asynch
Click "Apply"
Restart instance
Файл skgaio.o, участвующий в перелинковке бинарников Oracle :
$make -f ins_rdbms.mk async_on
$make -f ins_rdbms.mk ioracle
был фактически заменен /tmp/libaio-oracle-0.3.0/libaio-oracle.o
Ссылки:
1.http://ftp.belnet.be/linux/SuSe/people/mason/utils
Продолжение:
Асинхронный ввод/вывод для 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:-
http://www.idevelopment.info/data/Oracle/DBA_tips/Linux/LINUX_8.shtml
Установка патча 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).
2. # rpm -ivh libaio-0.3.96-3.i386.rpm libaio-devel-0.3.96-3.i386.rpm
Два последних RPM свободно доступны в Интернете (Google Search).