System Idle Process

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • TyBreaker

    #1

    System Idle Process

    I am using a performance counter to record the "Elapsed (CPU) time" of
    the "Idle" process. I record the elapsed time, wait 1 second and then
    record the new elapsed time. The result I get is:

    before: 175437046.875
    after: 175438093.75
    CPU time used: 1046.875

    However I was running Prime95 at the same time and I obtained the
    following stats during the same interval (used managed .NET call
    Process.TotalPr ocessorTime.Tot alMilliseconds) :

    before: 295905.4912
    after: 296896.9168
    CPU time used: 991.4256

    Now my understanding of the System Idle Process is that it counts the
    spare CPU time only. However for a 1 second interval both the Idle and
    Prime95 processes appear to have clocked up nearly 1 second each! I
    must be missing something here because this should be impossible,
    correct? Just to clarify, I have a single CPU which only displays a
    single CPU graph in Task Manager (hence isn't hyper-threaded or dual core).

    Grateful for any guidance, thanks!

    --
    ______ ___ __
    /_ __/_ __/ _ )_______ ___ _/ /_____ ____
    / / / // / _ / __/ -_) _ `/ '_/ -_) __/
    /_/ \_, /____/_/ \__/\_,_/_/\_\\__/_/
    /___/

    There are 10 types of people in this world; those who understand the
    binary numbering system and those who don't.

    There's no place like 127.0.0.1.

    ASCII a silly question, get a silly ANSI.
  • Theo Verweij

    #2
    Re: System Idle Process

    You are using 2 different timings:
    Idle process: Elapsed CPU time
    Prime95: TotalProcessorT ime

    so you can not compare them ...



    TyBreaker wrote:
    I am using a performance counter to record the "Elapsed (CPU) time" of
    the "Idle" process. I record the elapsed time, wait 1 second and then
    record the new elapsed time. The result I get is:
    >
    before: 175437046.875
    after: 175438093.75
    CPU time used: 1046.875
    >
    However I was running Prime95 at the same time and I obtained the
    following stats during the same interval (used managed .NET call
    Process.TotalPr ocessorTime.Tot alMilliseconds) :
    >
    before: 295905.4912
    after: 296896.9168
    CPU time used: 991.4256
    >
    Now my understanding of the System Idle Process is that it counts the
    spare CPU time only. However for a 1 second interval both the Idle and
    Prime95 processes appear to have clocked up nearly 1 second each! I
    must be missing something here because this should be impossible,
    correct? Just to clarify, I have a single CPU which only displays a
    single CPU graph in Task Manager (hence isn't hyper-threaded or dual core).
    >
    Grateful for any guidance, thanks!
    >

    Comment

    • TyBreaker

      #3
      Re: System Idle Process

      Theo Verweij wrote:
      You are using 2 different timings:
      Idle process: Elapsed CPU time
      Prime95: TotalProcessorT ime
      >
      so you can not compare them ...
      Woah! Really? I though the total processor time meant the total
      processor time (kernel time plus user time) for a particular process?

      --
      ______ ___ __
      /_ __/_ __/ _ )_______ ___ _/ /_____ ____
      / / / // / _ / __/ -_) _ `/ '_/ -_) __/
      /_/ \_, /____/_/ \__/\_,_/_/\_\\__/_/
      /___/

      There are 10 types of people in this world; those who understand the
      binary numbering system and those who don't.

      There's no place like 127.0.0.1.

      ASCII a silly question, get a silly ANSI.

      Comment

      • TyBreaker

        #4
        Re: System Idle Process

        TyBreaker wrote:
        Theo Verweij wrote:
        >You are using 2 different timings:
        >Idle process: Elapsed CPU time
        >Prime95: TotalProcessorT ime
        >>
        >so you can not compare them ...
        >
        Woah! Really? I though the total processor time meant the total
        processor time (kernel time plus user time) for a particular process?
        >
        The Visual Basic.NET help indicates Process.TotalPr ocessorTime is the
        total CPU time for the particular process. So I should be able to
        compare that to the Elapsed time for the System Idle Process over any
        given interval eg 1 second. Unless I'm missing something?

        --
        ______ ___ __
        /_ __/_ __/ _ )_______ ___ _/ /_____ ____
        / / / // / _ / __/ -_) _ `/ '_/ -_) __/
        /_/ \_, /____/_/ \__/\_,_/_/\_\\__/_/
        /___/

        There are 10 types of people in this world; those who understand the
        binary numbering system and those who don't.

        There's no place like 127.0.0.1.

        ASCII a silly question, get a silly ANSI.

        Comment

        • Theo Verweij

          #5
          Re: System Idle Process

          TotalProcessorT ime: The processortime consumed by the process
          ElapsedCpuTime: The cputime elapsed between 2 measurements, not
          neccesary used by your process (preemtive multitasking ...)

          TyBreaker wrote:
          TyBreaker wrote:
          >Theo Verweij wrote:
          >>You are using 2 different timings:
          >>Idle process: Elapsed CPU time
          >>Prime95: TotalProcessorT ime
          >>>
          >>so you can not compare them ...
          >>
          >Woah! Really? I though the total processor time meant the total
          >processor time (kernel time plus user time) for a particular process?
          >>
          >
          The Visual Basic.NET help indicates Process.TotalPr ocessorTime is the
          total CPU time for the particular process. So I should be able to
          compare that to the Elapsed time for the System Idle Process over any
          given interval eg 1 second. Unless I'm missing something?
          >

          Comment

          • Theo Verweij

            #6
            Re: System Idle Process

            To be more precise:

            Prime95 is measuring the total processor time used by your process.
            Your process used 991.4 milliseconds

            The elapsedcputime is measuring the real processor time that has elapsed
            (1 second/second/processor, so with dual processor there are 2 cpu
            seconds per second). The time elapsed on your single processor machine
            was 1046.8 milliseconds.

            This means that 1046.8 - 991.4 = 55.4 milliseconds were used for one or
            more other processes. That the measurement of the elapsed cpu time isn't
            exactly 1 second is caused by the time slices of the preemtive
            multitasking, wich are variable and at least 20ms each.


            Theo Verweij wrote:
            TotalProcessorT ime: The processortime consumed by the process
            ElapsedCpuTime: The cputime elapsed between 2 measurements, not
            neccesary used by your process (preemtive multitasking ...)
            >
            TyBreaker wrote:
            >TyBreaker wrote:
            >>Theo Verweij wrote:
            >>>You are using 2 different timings:
            >>>Idle process: Elapsed CPU time
            >>>Prime95: TotalProcessorT ime
            >>>>
            >>>so you can not compare them ...
            >>>
            >>Woah! Really? I though the total processor time meant the total
            >>processor time (kernel time plus user time) for a particular process?
            >>>
            >>
            >The Visual Basic.NET help indicates Process.TotalPr ocessorTime is the
            >total CPU time for the particular process. So I should be able to
            >compare that to the Elapsed time for the System Idle Process over any
            >given interval eg 1 second. Unless I'm missing something?
            >>

            Comment

            • TyBreaker

              #7
              Re: System Idle Process

              Theo Verweij wrote:
              Prime95 is measuring the total processor time used by your process.
              Your process used 991.4 milliseconds
              OK, understood.
              The elapsedcputime is measuring the real processor time that has elapsed
              (1 second/second/processor, so with dual processor there are 2 cpu
              seconds per second). The time elapsed on your single processor machine
              was 1046.8 milliseconds.
              Ah this is where I'm confused then. I ran perfmon to see what counters
              existed and the description for Process\Elapsed Time indicates it
              records "The total elapsed time, in seconds, that this process has been
              running." so I understood it to be specific to the particular process I
              had nominated - in this case the Idle process:

              Private IdleCpuUsage As PerformanceCoun ter = New
              PerformanceCoun ter("Process", "Elapsed Time", "Idle")

              I notice I do get different values for this performance counter
              depending on whether I point it at Idle or say, Firefox. If it is
              recording the total CPU time irrespective of any particular process,
              shouldn't the value being graphed be the same irrespective of which
              process I nominate?
              --
              ______ ___ __
              /_ __/_ __/ _ )_______ ___ _/ /_____ ____
              / / / // / _ / __/ -_) _ `/ '_/ -_) __/
              /_/ \_, /____/_/ \__/\_,_/_/\_\\__/_/
              /___/

              There are 10 types of people in this world; those who understand the
              binary numbering system and those who don't.

              There's no place like 127.0.0.1.

              ASCII a silly question, get a silly ANSI.

              Comment

              Working...