[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <1dc4abc2-6455-4b95-90f6-c86bf56ff39a@default>
Date: Tue, 18 May 2010 10:49:55 -0700 (PDT)
From: Dan Magenheimer <dan.magenheimer@...cle.com>
To: "H. Peter Anvin" <hpa@...or.com>,
Peter Zijlstra <peterz@...radead.org>
Cc: Andi Kleen <andi@...stfloor.org>,
Arjan van de Ven <arjan@...radead.org>,
Thomas Gleixner <tglx@...utronix.de>,
Venkatesh Pallipadi <venki@...gle.com>,
Ingo Molnar <mingo@...e.hu>, chris.mason@...cle.com,
linux-kernel@...r.kernel.org
Subject: RE: [PATCH] x86: Export tsc related information in sysfs
> From: H. Peter Anvin [mailto:hpa@...or.com]
> Sent: Tuesday, May 18, 2010 11:04 AM
> To: Peter Zijlstra
> Cc: Andi Kleen; Arjan van de Ven; Dan Magenheimer; Thomas Gleixner;
> Venkatesh Pallipadi; Ingo Molnar; Chris Mason; linux-
> kernel@...r.kernel.org
> Subject: Re: [PATCH] x86: Export tsc related information in sysfs
>
> On 05/18/2010 09:52 AM, Peter Zijlstra wrote:
> > On Tue, 2010-05-18 at 09:40 -0700, H. Peter Anvin wrote:
> >>
> >> The problem is that you throw the baby (vsyscall) out with the
> bathwater
> >> (user rdtsc).
> >
> > Well, we could only flip the CR4 bit when we mark the TSC unsuitable
> for
> > gtod. That should be plenty good to tag all userspace trying to use
> it,
> > since more than half my machines don't use TSC for clocksource.
>
> This might be an option, although it would have to be an *option*.
> There are restricted uses of the TSC in userspace which are still
> useful
> (mainly involving performance analysis and/or CPU-locked processes).
(Though I expect tglx/arjan/andi/mingo to disagree with this proposal
for similar reasons as the original one that started this thread...)
Proposal:
/sys/devices/system/tsc/native (writable by root):
0 = (default) Kernel dynamically controls TSC emulation.
When the kernel deems TSC usable as a clocksource, rdtsc
will be executed directly by the CPU. When the kernel deems
TSC unsafe to use, rdtsc will be trapped and emulated.
1 = TSC emulation is never enabled. Programs using rdtsc
directly are subject to the many known and sometimes rare
and subtle vagaries of TSC.
2 = TSC emulation is always enabled (for debug only)
3 = Processes using TSC will be treated as if they executed
an illegal instruction. [? Can the kernel recognize
use of rdtsc in a vsyscall and emulate so that,
even though vsyscall is slower, all other rdtsc
in userspace are illegal?] [? Can/should this be
enforced only on non-root processes?]
/sys/devices/system/tsc/system_count (writable by root):
Contains a count of all TSC emulations, system-wide.
Writable to allow reset to zero.
/sys/devices/system/tsc/pid_counters (writable by root):
0 = (default) TSC counts are system-wide only
1 = TSC counted per pid (at performance penalty)
counters in /proc/PID/tsc_count
/proc/PID/tsc_count (readonly):
If /sys/devices/system/tsc_pid_counters is 1,
contains the count of rdtsc instructions emulated
for this PID.
(Note: except for the actual instruction emulation
which will be faithful, rdtscp will be treated and
counted as a rdtsc.)
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists