From: John Sigler <linux.kernel@free.fr>
To: linux-rt-users@vger.kernel.org, oprofile-list@lists.sourceforge.net
Subject: Counting CPU_CLK_UNHALTED on an idle system
Date: Fri, 13 Jul 2007 14:33:09 +0200 [thread overview]
Message-ID: <46977105.6020604@free.fr> (raw)
[ Note: cross-posted to linux-rt-users and oprofile-list ]
Hello,
The x86 Performance Monitoring Event "CPU_CLK_UNHALTED" is defined as:
Number of cycles during which the processor is not halted.
IIUC, when the CPU is in the HALT state, CPU_CLK_UNHALTED should not
increment, right? When Linux has nothing to do, it executes HLT.
http://lxr.linux.no/source/arch/i386/kernel/process.c#L101
I set up OProfile to sample EIP every 200000 CPU_CLK_UNHALTED cycles on
an idle system. I was expecting a very small number of samples, since
CPU_CLK_UNHALTED should not increment (most of the time).
I ran the daemon 5 minutes on a idle system
# opreport -l
CPU: PIII, speed 1266.7 MHz (estimated)
Counted CPU_CLK_UNHALTED events (clocks processor is not halted) with a
unit mask of 0x00 (No unit mask) count 200000
samples % symbol name
1868484 99.4914 cpu_idle
4560 0.2428 (oprofiled)
727 0.0387 ip_route_input
457 0.0243 acpi_ev_asynch_execute_gpe_method
454 0.0242 ip_route_output_slow
286 0.0152 dma_free_coherent
280 0.0149 ip_route_input_slow
273 0.0145 acpi_ex_opcode_6A_0T_1R
220 0.0117 __acpi_nmi_disable
130 0.0069 Dta1xxRxProcessStatusFlags
94 0.0050 Dta1xxTxProcessStatusFlags
93 0.0050 (bash)
85 0.0045 Dta1xxIsr
79 0.0042 intel_machine_check
56 0.0030 sys_olduname
51 0.0027 Dta1xxPeriodicIntHandler
cpu_idle breakdown:
c0100e70 1 5.4e-05
c0100e71 1 5.4e-05
c0100e78 1 5.4e-05
c0100e88 1 5.4e-05
c0100e8a 1 5.4e-05
c0100e97 4 2.1e-04
c0100ea8 1868475 99.9995
cpu_idle objdump:
c0100ea6: fb sti
c0100ea7: f4 hlt
c0100ea8: eb 0b jmp c0100eb5
(If an interrupt is used to resume execution after a HLT instruction,
the saved instruction pointer points to the instruction following the
HLT instruction.)
oprofiled collected 1878300 samples. In other words, the system received
1878300 NMIs. (5 * 60 * 1.2667e9) / 1878300 = 202316 cycles between NMI
Seems like CPU_CLK_UNHALTED increments every cycle.
Perhaps HLT does not put my CPU in the HALT state?
Did I miss something?
Regards.
-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
next reply other threads:[~2007-07-13 12:33 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-07-13 12:33 John Sigler [this message]
2007-07-13 12:37 ` Counting CPU_CLK_UNHALTED on an idle system Stephane Eranian
2007-07-13 13:02 ` John Sigler
2007-07-13 13:09 ` Stephane Eranian
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=46977105.6020604@free.fr \
--to=linux.kernel@free.fr \
--cc=linux-rt-users@vger.kernel.org \
--cc=oprofile-list@lists.sourceforge.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.