1) IQ version 16.0Sp0820, cluster contains two nodes, shared dbspace contains 4 dbfile, each dbfile is a independent raid6 (8+2), the size is 21T. memory is 400G.
2. use command like " "dd if=/dev/dm-1* of=/dev/null bs=512k skip=xxx count=10240" to test the max theoretical value of disk-read bandwidth
of each file is about 900MB/s.
3.run a join query using hash algorithm. a query plan is generated. IQ 's read bandwidth only reached 200Mb/s.
1).collect cpu usage using "sar -P ALL 2 >> cpu.log".
2)collect iostat using "iostat -x -m 2 | grep dm-1[3678]>>io.log".
3)dm-13 , dm-16, dm-17, dm-18 are db files of a dbspace.
4)test bandwidth of dm-13 , dm-16, dm-17, dm-18 : "dd if=/dev/dm-1* of=/dev/null bs=512k skip=xxx count=10240" 。
bandwidth of each file is about 900MB/S.
5)storage is ddn, infiniband.
wonder why IQ only read 200MB/s each db file?
4.run a simple query against the first 100million rows of which table has1.5billion rows . Returned one column. the query results are redirected to the virtual disk. The disk read bandwidth reached about 300MB/s.
My question is how can we optimize the I/O performance from IQ side ? and Is that reasonable to compare with dd ?
If CUP and memory is not the bottleneck, then what caused the big iowait? why can't IQ reach higher r/w bandwidth?
Attached sar output(cpu.txt) and iostat output(io.txt) while the query with a hash algorithm. Also a query plan (please change xml to html)attached.
Thanks a lot.
Corona