4 Replies Latest reply on Mar 21, 2011 10:57 AM by radudavid

    Power Readings

    radudavid

      Hello All,

       

      I want to make a program that logs the power usage of the 3V3SCC supply.

      I looked at the code used by sccGui and sccPerf and saw that there is a special function that gets the status of the BMC in the sccApi, and another function that reads the voltage and current from that function and returns the product in sccExtApi.

      My question si what is an easy way to use these functions in a separate program that just writes the power values to a file. I couldn't figure out how to compile/modify sccKit, it looks like any new code has to be linked to the rest and was thinking there might be an easier way.

      Hope this makes sense,


      Thanks,

       

      Radu

        • 1. Re: Power Readings
          tedk

          Please take a look at the file "How to Read SCC Voltages with a RCCE Program" http://communities.intel.com/docs/DOC-5463 Is this helpful?

          I haven't tried breaking out part of the sccKit into separate customized programs.

           

          We wanted to have a C program on the cores get voltage values and came up with an admittedly kludgy was of doing it. A RCCE program can use the system() call to run a script that resides on the MCPC. That script can then use ssh to run a program on the MCPC. This program uses popen() to issue the sccBMC –c status command and capture the output. It then writes the output to a file in /shared. The RCCE program can then read that file and get the voltage values.

           


          • 2. Re: Power Readings
            radudavid

            I saw that document before, but didn't think to use it in this way. I guess I could modify it to scan for voltage and current from the status output.

            However, it might be a big overhead to run this on the cores. I will try to modify sccPerf.cpp so I can tap on these values from the MCPC.

            • 3. Re: Power Readings
              devendra.rai

              Hello People

               

              So, I have a related problem: I would like to measure power consumption for each core. From what I can read from sccGui:

               

              3V3SCC:    3.308 V   20.594 A     Input voltage to VRC- this feeds the core

               

              Does multiplying the voltage with current give me total power for all 48 cores? Also, is there a way of knowing the breakdown (or calculating it) for each core?

               

              Also, I would like to do this in a script, so any programming based methods will be very useful.  We have only remote access to SCC.

               

              Also, for measure CPU usage, one way would be to read /proc/stat. Is this recommended (and only) way for the SCC cores? Has anyone tried this? If yes, can you please share your experience here?

               

              Thanks

               

              Devendra Rai

              • 4. Re: Power Readings
                radudavid

                Hi,

                 

                I think the 3V3SCC shows the power for the 48 cores and the mesh, so multiplying the current and voltage gives the instant power used by the chip. This is exactly what the Performance Monitor inside the GUI is doing when it gives the power reading. More precisely, it calls "sccBmc -c status" and looks for the 3V3SCC line to extract those two values and compute the power.

                What I ended up doing is have a batch program that calls "sccBmc -c status" continuously and stores the output in a file, and used Matlab to extract the values from that file. It's very complicated, and the highest rate you can get to is 3-4 measurements per second, so not very fine grained, but this is is what the sccPerf widget is doing as well.

                As for the power breakdown of each core, I would like to know that myself. I couldn't find a way to obtain a breakdown, and as of now it doesn't seem possible, since there is no way of probing the current of each core/tile.

                 

                Hope this helps,

                 

                Radu