I would say your performance results are absolutely fine:
- 23 drives in an aggregate means at best 21 'active' spindles (2 for parity if this is a single RAID-DP group), 200 random IOPS per disk -> 4200 total IOPS expected
No idea how you were able to squeeze 8k IOPS from 2 local spindles (two others are just a mirror)! Some caching must have kicked in, otherwise it is not technically possible (unless local disks are SSDs ).
RAID 10 also has a much smaller IO penalty than RAID DP. With RAID DP you generate 3x the IO operations that you would if you were using RAID 10. This is because the array has to update parity data on two stripes per raid group, whereas there's no parity penalty with RAID 10. I would recommend setting up a second test on your server using RAID ADG, which is HP's implementation of RAID DP.
This is not (exactly) as NetApp RAID-DP works. ONTAP will at least try to cache multiple small writes in NVRAM until full stripe could be written to multiple disks at once - hence performance penalty is minimised.
It may be minimized, but there's still a large penalty vs. RAID 10. Comparing HP RAID ADG vs. Netapp RAID-DP is a much closer approximation, even though Netapp makes far more efficient use of the cache.