1 Reply Latest reply on Jun 25, 2009 4:32 PM by stroia

    Measuring DMA Activity



      I have several Opteron test machines. I would like to profile some code, and at the same time measure the amount of DMA activity happening in the system.

      The DMA would be caused by both network and disk IO.

      I see in the Bios & Kernel Developers guide that there is a PMU event (ECh - probe responses and upstream requests). I can measure the number of requests generated by upstream devices (like network or disk controller separately from display refresh requests) but that doesn't tell me the size of each request.

      Has anyone tried to measure the rate of DMA activity in an opteron system before?

        • Measuring DMA Activity

          Here's what I got from one of our Engineers:

          Try using performance counter 0xEB (Sized Commands) to quantify the events you measured with 0xEC. Be aware though, that Sized Commands occur from CPU requests and IO device requests (hence the qualifier). Note that there are Unit Masks in performance counter 0xEB, for counting Sized-Write (dword) commands and for counting Sized-Write (byte) commands. Using both Byte and Dword, masks would give some indication of the amount of DMA data moved (after subtracting requests from CPU(s)). Another way to indicate the amount of data DMA’ed (outgoing to the device), uses the HyperTransport (HT) Transmit Bandwidth Event Counter(s) specific to the non-coherent HT link(s) in the system (Events 0xF6, 0xF7, 0xF8, for HT0, HT1, HT2 respectively). Unit Mask 0x2 selects counting the number of dwords being sent to the DMA devices.

          Hope this helps!