Analyzing DMA (Direct Memory Access)

Post by Mingchun Zhao - Development Department of Insight Technology Japan. Mainly engaged in the development of Oracle monitoring tool using a DMA (Direct Memory Access) technique.

I would like to share and analyze about DMA(Direct Memory Access).
Our product performance monitoring tool ‘PIEX’ and database auditing tool ‘PISO’ both uses DMA method to collect necessary information for monitoring or analyzing performance of a database.

Most of you might image data transferring directly between device and RAM without looking through CPU. Well few years ago I was thinking the same thing.

But what I would want to share about in this issue is completely different. This method is collecting performance data from accessing to the database memory area directly (i.e. Oracle SGA area).

So why is it DMA? It’s simple, that’s because it’s really attractive method to collect each information frequently without performance degradation to the database. I’ve started working on DMA few years ago and for me it’s still in progress exploring about DMA.

It might be an extreme case, but what if you try to check dynamic performance view to find where the bottleneck occurred and could not get the result for quite a while? Well if this happens you might have to give up getting performance data from dynamic performance view. Furthermore, there might be a possibility of making the performance worse caused by query to dynamic performance view.

DMA uses different process from Oracle and also it is asynchronous to Oracle. This makes it possible for DMA to collect necessary data directly. For this reason, in case if Oracle hung up like I mentioned in above, we could able to detect the cause of performance problem or bottleneck by collecting related information from Oracle.

This will be enough for introduction. In the next issue I’ll start collecting information actually using DMA.

The link names are not always perfcet here is some of the funny links in the sheet:CSD_INCIDENTS_NON_SEC_V:and CS_INCIDENTS_ALL_VL.INSTALL_SITE_USE_ID = HZ_PARTY_SITES.PARTY_SITE_IDICX_PO_DISTRIBUTES_DIFF_V:and ICX_PO_REVISIONS_TEMP.LOCATION_ID = PO_LINE_LOCATIONS_ARCHIVE.SHIPMENT_NUM