【検証環境】
検証は手元のデスクトップPC上にVMを2つ起動した環境で行います。
ホストマシン:
CPU: Intel Core i7 920 (2.6GHz) w/HT
メモリ: 12GB
OS: Windows7 Ult. 64bit
VMM: VirtualBox 3.2.12
ゲストマシン1(DBサーバ):
CPU: 1コア
メモリ: 2GB
OS: Windows 2003 Server, 32bit
DB: Oracle DB 11g R2
ストレージ: VMイメージはHDD上に配置
ゲストマシン2(BIサーバ):
CPU: 6コア
メモリ: 4GB
OS: Windows 2003 Server, 32bit
BIEE: Oracle BIEE 11g
ストレージ: VMイメージはSSD上に配置
【検証に使用するデータ】
scott.emp表を基に、10,000ページ分のデータを生成します。1ページあたり12件、12万件のデータを準備します。スクリプトは以下の通りです。
-- ----------------------
-- create table
-- ----------------------
create table emp2 (
empno number(4),
ename varchar2(10),
job varchar2(9),
mgr number(4),
hiredate date,
sal number(7,2),
comm number(7,2),
deptno number(2),
pageno number(10,0), -- page number 1..10000
dummycol number(10,0) -- always 1
);
-- ----------------------
-- insert data
-- ----------------------
declare
cursor c is select * from emp order by deptno, empno;
i pls_integer;
begin
for i in 1..10000 loop
for r in c loop
insert into emp2 values (r.empno, r.ename, r.job, r.mgr, r.hiredate, r.sal, r.comm, r.deptno, i, 1);
end loop;
end loop;
commit;
end;
/
-- ----------------------
-- add index
-- ----------------------
create index ix_emp2_1 on emp2 (pageno, deptno, empno);
【出力イメージ】
出力されるPDFは以下の通りです。1ページあたりのレコードは12レコード。10,000ページを1つのファイルに出力します。各ページのヘッダには6KBのロゴ画像を含めました。
Figure 1: Output PDF |
【バースティング定義】
上記のデータを、ローカルにファイル形式でバースティングします。
バースティングの定義は以下の通りです。
select distinct
1 as key,
'Layout1' as template,
'ja-JP' as locale,
'RTF' as template_format,
'PDF' as output_format,
'FILE' as del_channel,
'false' as save_output,
'c:\workspace\' as parameter1,
'rp_00001.pdf' as parameter2
from dual
【検証結果】
結果は以下の通りです。検証は3回実施しました。
所要時間(秒) | 秒間出力ページ数 | |
1回目 | 123.5 | 81.0 |
2回目 | 119.9 | 83.4 |
3回目 | 127.3 | 78.5 |
平均 | 123.6 | 81.0 |
【検証時のOSの挙動】
BIサーバ(ゲストマシン2)の挙動を確認します。確認は、平均時間に近い1回目の実行時の統計情報をサンプルとします。
※DBサーバ(ゲストマシン1)は凪であったため割愛します。
CPU:
1つのコアが振り切れています。グラフは割愛しますが、CPU待ち(キュー)は発生していません。シングルスレッドのプログラムがコアを占有している様子が確認できます。
Figure 2: CPU statistics |
メモリ:
余裕のある状態です。以下に状況を示します。
Figure 3: Memory statistics |
ディスク:
処理の初めにディスク書き込みの負荷が高まっていますが、その後の負荷は低い状態で推移しています。
Figure 4: Physical disk statistics |
Figure 5: Physical disk queue statistics |
今回の検証結果から、1ファイルへの出力性能はCPUの処理性能(クロック数)に依存する傾向がより高いと考えられます。
[Summary]
You may want to see the result of BI Publisher performance test.
[Environment]
Two virtual machines on the ordinary desktop PC
Host Machine:
CPU: Intel Core i7 920 (2.6GHz) w/HT
Memory: 12GB
OS: Windows7 Ult. 64bit
VMM: VirtualBox 3.2.12
Guest Machine #1(DB server):
CPU: 1 core
Memory: 2GB
OS: Windows 2003 Server, 32bit
DB: Oracle DB 11g, 11.2.0.1
Storage: the VM image is on ordinary HDD
Guest Machine #2(BI server):
CPU: 6 cores
Memory: 4GB
OS: Windows 2003 Server, 32bit
BIEE: Oracle BIEE 11g, 11.1.1.3
Storage: the VM image is on SSD
[Data]
The following script duplicates the records in scott.emp 10,000 times. i.e. 120,.000 records in total.
-- ----------------------
-- create table
-- ----------------------
-- ----------------------
create table emp2 (
empno number(4),
ename varchar2(10),
job varchar2(9),
mgr number(4),
hiredate date,
sal number(7,2),
comm number(7,2),
deptno number(2),
pageno number(10,0), -- page number 1..10000
dummycol number(10,0) -- always 1
);
-- ----------------------
-- insert data
-- ----------------------
-- insert data
-- ----------------------
declare
cursor c is select * from emp order by deptno, empno;
i pls_integer;
begin
for i in 1..10000 loop
for r in c loop
insert into emp2 values (r.empno, r.ename, r.job, r.mgr, r.hiredate, r.sal, r.comm, r.deptno, i, 1);
end loop;
end loop;
commit;
end;
/
-- ----------------------
-- add index
-- ----------------------
-- add index
-- ----------------------
create index ix_emp2_1 on emp2 (pageno, deptno, empno);
[Output PDF]
The output PDF is shown in figure 1. Whole data is in one PDF file that consists of 10,000 pages. Each page has 12 records.
The logo image (adobe PDF image) in each page is 6KB.
[Bursting definition]
Set dummycol for Split by and Deliver by. The Bursting definition is as follow:
select distinct
1 as key,
'Layout1' as template,
'ja-JP' as locale,
'RTF' as template_format,
'PDF' as output_format,
'FILE' as del_channel,
'false' as save_output,
'c:\workspace\' as parameter1,
'rp_00001.pdf' as parameter2
from dual
[Result]
I executed three times. The results are:
Elapsed Time(sec) | pages / sec | |
1st | 123.5 | 81.0 |
2nd | 119.9 | 83.4 |
3rd | 127.3 | 78.5 |
Average | 123.6 | 81.0 |
[OS statistics]
The OS statistics are shown in Figure 2 to Figure 5. They are the statistics of Guest Machine #2 in the first shot. The statistics interval is 2 seconds.
(*) DB server (Guest Machine #1) had been very calm.
CPU:The OS statistics are shown in Figure 2 to Figure 5. They are the statistics of Guest Machine #2 in the first shot. The statistics interval is 2 seconds.
(*) DB server (Guest Machine #1) had been very calm.
You can see one core (Processor(2), Processor(0)) is occupied 100% by a single thread program.
There was no processor queue waiting (graph omitted).
Memory:
No problem.
Physical Disk:
write/sec spikes in the beginning though, not a big problem.
[Conclusion]
When you burst data into a single file, the performance of BI server depends on CPU power, rather than memory or disk.
0 件のコメント:
コメントを投稿