Con Kolivas wrote:
On Saturday 11 March 2006 15:28, Peter Williams wrote:
Con Kolivas wrote:
Because despite what anyone seems to want to believe, reading from disk
hurts. Why it hurts so much I'm not really sure, but it's not a SCSI vs
IDE with or without DMA issue. It's not about tweaking parameters. It
doesn't seem to be only about cpu cycles. This is not a mistuned system
that it happens on. It just plain hurts if we do lots of disk i/o,
perhaps it's saturating the bus or something. Whatever it is, as much as
I'd _like_ swap prefetch to just keep working quietly at ultra ultra low
priority, the disk reads that swap prefetch does are not innocuous so I
really do want them to only be done when nothing else wants cpu.
I didn't make it clear here the things affected are not even doing any I/O of
their own. It's not about I/O resource allocation. However they are using
100% cpu and probably doing a lot of gpu bus traffic.
Would you like to try a prototype version of the soft caps patch I'm
working on to see if it will help?
What happens if it's using .01% cpu and spends most of its time in
uninterruptible sleep?
Probably not much as I have to let tasks with a soft cap of zero get
some CPU to avoid problems with them holding resource other tasks may
need and 0.01% is probably as low as I can keep it anyway.
Just to clarify. At the moment, what I do to a task with a zero soft
cap is give them a priority one above MAX_PRIO (i.e. 2 higher than any
other task can have) and make sure they always go on the expired array
at the end of their time slice. They also get a load weight of zero to
prevent them getting a CPU to themselves. This means that any task that
becomes runnable on their CPU should preempt them and if they're the
only task on their CPU it will look idle and waking tasks may be moved
there if the other CPUs are idle. This may be enough to stop them
interfering with your game's tasks.
I'm currently letting them have a time slice determined by their nice in
an attempt to reduce context switching but this may change as it
probably allows them to get CPU access when there are non background
tasks on the expired array. I'm still thinking about how to prevent
this and keep context switching low.
Tasks with non zero soft caps go through a different process and (as far
as possible) tasks without soft caps avoid the capping code.
Peter
PS This is still work in progress.
--
Peter Williams [email protected]
"Learning, n. The kind of ignorance distinguishing the studious."
-- Ambrose Bierce
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[Index of Archives]
[Kernel Newbies]
[Netfilter]
[Bugtraq]
[Photo]
[Stuff]
[Gimp]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux Security]
[Linux RAID]
[Video 4 Linux]
[Linux for the blind]
[Linux Resources]