From: Tim W. <ti...@sp...> - 2001-02-12 21:53:40
|
On Mon, Feb 12, 2001 at 06:27:46PM +0100, Andi Kleen wrote: > On Mon, Feb 12, 2001 at 08:43:30AM -0800, Tim Wright wrote: > > I'm not :-) > > It was an issue under DYNIX/ptx for the equivalent lock (gate) as well. > > This is a 32-CPU machine (at least that's what I believe John said). > > We removed most uses of the lock by a rather cute trick. Here's the code > > for "getthetime()": > > [...] > > I guess getthetime() would be the equivalent to jiffies in Linux -- but > jiffies is read in a lot of places, some of them critical. I guess replacing > it with a function call would optimize the wrong thing -- penalize the > frequent reader for a lockless writer. > No, it's the equivalent of Linux's do_gettimeofday(), which calls read_lock_irqsave(&xtime_lock, flags); just like ptx used to do. This really hurts on a large CPU-count machine. The ptx equivalent of jiffies would be todtick. Of course there's a relationship :-) > At least for the global jiffies counter it makes probably more sense to just > make sure that the increment thread only runs on one CPU at a time, e.g. > by locking it to one. > It certainly should only happen on one CPU. I'd disagree that it should be locked to one because that CPU may be busy. If we find that using the APIC TPR is worthwhile, it would probably be better to have HZ timer IRQ -> "hard" clock() routine (increments jiffies and happens only on one CPU) and have the "hard" clock routine fire off "soft" clock routines on the other CPUs via IPI if this is necessary. What does this look like at the moment ? > Per CPU timers can be done without global state and locks, but they > don't need to write jiffies. Jiffies update can be done atomically. > Yes. > For real time gettimeofday() Linux uses rdtsc anyways, and just needs > a single correction variable that can also be updated atomically. > But it still grabs the rw-lock. If it gets contended enough, this will hurt. Of course, if you have processes calling gettimeofday() a lot (ISTR Oracle does this), you might be better off providing a fast timeofday implementation by mapping in a "magic" page with the TOD values available (read-only). Tim -- Tim Wright - ti...@sp... or ti...@ar... or tw...@us... IBM Linux Technology Center, Beaverton, Oregon Interested in Linux scalability ? Look at http://lse.sourceforge.net/ "Nobody ever said I was charming, they said "Rimmer, you're a git!"" RD VI |