Re: Nice 19 process still gets some CPU

From: Peter Williams
Date: Mon Jun 28 2004 - 18:39:41 EST


Timothy Miller wrote:
Given how much I've read here about schedulers, I should probably be able to answer this question myself, but I just thought I might talk to the experts.

I'm running SETI@Home, and it has a nice value of 19. Everything else, for the most part, is at zero.

I'm running kernel gentoo-dev-sources-2.6.7-r6 (I believe).

When I'm not running SETI@Home, compiler threads (emerge of a package, kernel compile, etc.) get 100% CPU. When I AM running SETI@Home, SETI@Home still manages to get between 5% and 10% CPU.

I would expect that nice 0 processes should get SO MUCH more than nice 19 processes that the nice 19 process would practically starve (and in the case of a nice 19 process, I think starvation by nice 0 processes is just fine), but it looks like it's not starving.

Why is that?

If you wish to control the "severity" of nice you should try the "pb" mode of the scheduler evaluation patch:

<http://prdownloads.sourceforge.net/cpuse/patch-2.6.7-spa_hydra_FULL-v1.2?download>

The "severity" of nice will vary with the ratio of the promotion interval (/proc/sys/kernel/cpusched/promotion_interval in milliseconds) to the time slice (/proc/sys/kernel/cpusched/time_slice also in milliseconds). To experiment with these settings you can use two CPU bound processes with different nice values and use top to see how much changing the promotion interval to time slice ratio effects their CPU usage rates.

There's a primitive GUI for setting these parameters' values at:

<http://prdownloads.sourceforge.net/cpuse/gcpuctl_hydra-1.0.tar.gz?download>

Peter
--
Peter Williams pwil3058@xxxxxxxxxxxxxx

"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 majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/