Эксперименты с Calibration IO в Oracle 11g
Сегодня у нас снова перевод короткой заметки Neto – технического архитектора NetApp, занимающегося вопросами работы с базами данных Oracle.
Playing with Calibration IO - Oracle 11g
Posted by neto on Aug 11, 2011 2:37:40 AM
Oracle 11g имеет интересную возможность эмулировать ввод-вывод (случайное чтение большими блоками (1MByte)). Это называется Calibration IO - http://download.oracle.com/docs/cd/B28359_01/server.111/b28274/iodesign.htm
Давайте проделаем небольшой тест с помощью этого средства.
1) Проверяем, что все файлы данных используют asynchronous IO:
col name format a50
select name,asynch_io from v$datafile f,v$iostat_file i where f.file#=i.file_no and (filetype_name=’Data File’ or filetype_name=’Temp File’);
NAME ASYNCH_IO
————————————————– ———
/oracle/databases/prod/data/system01.dbf ASYNC_ON
/oracle/databases/prod/data/system01.dbf ASYNC_ON
/oracle/databases/prod/data/sysaux01.dbf ASYNC_ON
/oracle/databases/prod/data/undotbs01.dbf ASYNC_ON
/oracle/databases/prod/data/users01.dbf ASYNC_ON
/oracle/databases/prod/data/soe.dbf ASYNC_ON
2) Запускаем Calibration IO
SET SERVEROUTPUT ON
DECLARE
lat INTEGER;
iops INTEGER;
mbps INTEGER;
BEGIN
– DBMS_RESOURCE_MANAGER.CALIBRATE_IO (<DISKS>, <MAX_LATENCY>, iops, mbps, lat);
DBMS_RESOURCE_MANAGER.CALIBRATE_IO (2, 10, iops, mbps, lat);
DBMS_OUTPUT.PUT_LINE (’max_iops = ‘ || iops);
DBMS_OUTPUT.PUT_LINE (’latency = ‘ || lat);
dbms_output.put_line(’max_mbps = ‘ || mbps);
end;
3) Смотрим на стороне NetApp:
[root@dl585-10 ~]# ssh 10.61.106.103 sysstat 1
CPU NFS CIFS HTTP Net kB/s Disk kB/s Tape kB/s Cache
in out read write read write age
21% 2987 0 0 2848 102705 86688 0 0 0 2s
26% 2955 0 0 2833 101569 85000 0 0 0 2s
21% 2879 0 0 2768 98919 77168 0 0 0 3s
21% 2964 0 0 2810 101982 82673 0 0 0 3s
21% 3952 0 0 2807 111602 85412 6064 0 0 3s
21% 2894 0 0 2729 97518 79832 0 0 0 2s
22% 3033 0 0 2877 104390 92552 0 0 0 2s
20% 2825 0 0 2674 97233 81780 0 0 0 2s
21% 2808 0 0 2696 96510 81396 0 0 0 2s
4) Результаты Calibration IO:
max_iops = 5570
latency = 10
max_mbps = 110
110 Mегабайт в секунду, довольно неплохо для одного 1Gbit интерфейса с сервера Oracle на NetApp!
А что, простите, должен этот тест показать? Что драйвера сетевых карт на сервере и на NetApp работают, как задумано? Что оверхид относительно невелик? Что у господина neto достаточно винтов/флэшкэша, чтоб выдать 110МБайт/с? Так ни размер базы неизвестен, ни его конфигурация. Может база 20МБайт и вся в кэше, а может там полки с дисками за горизонт уходят и для них это низкая скорость. К чему это?
Вот первый попавшийся в интернете обзор SSD дисков.
http://www.storagereview.com/images/intel_320_300gb_2mb_randomtransfer_4k.png
С _одного_ современного SSD диска на аналогичном тесте (блок 2МБайта, что не принципиально) ниже 200МБайт/с не получают. Воткните 1 такой диск в первый попавшийся компьютер с гигабитной сетевухой, и если не будет глюков с драйверами/ОС, получите Ваши 110МБайт/с по сети. What’s the catch?
Korj:
Это перевод. Если у вас есть вопросы к neto - напишите их к нему в комментарии, а не мне.
Ссылки на оригинальный пост я всегда даю.