Gentoo Archives: gentoo-commits

From: "Zac Medico (zmedico)" <zmedico@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] portage r11264 - main/trunk/pym/_emerge
Date: Tue, 29 Jul 2008 15:17:11
Message-Id: E1KNqwm-0004wF-Lj@stork.gentoo.org
1 Author: zmedico
2 Date: 2008-07-29 15:17:07 +0000 (Tue, 29 Jul 2008)
3 New Revision: 11264
4
5 Modified:
6 main/trunk/pym/_emerge/__init__.py
7 Log:
8 Enable Scheduler._job_delay() whenever --load-average is enabled, for whole
9 time the scheduler is running. This protects against too many jobs being
10 sheduled if the load average temporarily drops.
11
12
13 Modified: main/trunk/pym/_emerge/__init__.py
14 ===================================================================
15 --- main/trunk/pym/_emerge/__init__.py 2008-07-29 14:34:55 UTC (rev 11263)
16 +++ main/trunk/pym/_emerge/__init__.py 2008-07-29 15:17:07 UTC (rev 11264)
17 @@ -8862,14 +8862,9 @@
18
19 # The load average takes some time to respond when new
20 # jobs are added, so we need to limit the rate of adding
21 - # new jobs when emerge first starts.
22 - self._main_loop_init_delay_period = 60
23 + # new jobs.
24 self._job_delay_factor = 0.5
25 -
26 - # State variables
27 - self._main_loop_init_delay = None
28 self._previous_job_start_time = None
29 - self._main_loop_start_time = None
30
31 self._set_digraph(digraph)
32
33 @@ -9636,8 +9631,6 @@
34 self._config_pool[settings["ROOT"]].append(settings)
35
36 def _main_loop(self):
37 - self._main_loop_init_delay = self._max_load is not None
38 - self._main_loop_start_time = time.time()
39
40 # Only allow 1 job max if a restart is scheduled
41 # due to portage update.
42 @@ -9675,15 +9668,11 @@
43 @returns: True if job scheduling should be delayed, False otherwise.
44 """
45
46 - if self._main_loop_init_delay and self._jobs:
47 + if self._jobs and self._max_load is not None:
48
49 current_time = time.time()
50
51 - if current_time - self._main_loop_start_time > \
52 - self._main_loop_init_delay_period:
53 - self._main_loop_init_delay = False
54 -
55 - elif current_time - self._previous_job_start_time < \
56 + if current_time - self._previous_job_start_time < \
57 self._job_delay_factor * self._jobs:
58 return True
59
60 @@ -9702,11 +9691,9 @@
61 if not self._pkg_queue or self._failed_pkgs:
62 return (False, state_change)
63
64 - if self._job_delay():
65 - return (True, state_change)
66 -
67 if self._choose_pkg_return_early or \
68 - not self._can_add_job():
69 + not self._can_add_job() or \
70 + self._job_delay():
71 return (True, state_change)
72
73 pkg = self._choose_pkg()