socsvn commit: r241842 - in soc2012/rudot/sys: kern sys
rudot at FreeBSD.org
rudot at FreeBSD.org
Tue Sep 18 18:09:06 UTC 2012
Author: rudot
Date: Tue Sep 18 18:09:04 2012
New Revision: 241842
URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=241842
Log:
Adapt comments to the coding style + some new comments
Modified:
soc2012/rudot/sys/kern/kern_racct.c
soc2012/rudot/sys/kern/kern_rctl.c
soc2012/rudot/sys/kern/sched_4bsd.c
soc2012/rudot/sys/sys/racct.h
Modified: soc2012/rudot/sys/kern/kern_racct.c
==============================================================================
--- soc2012/rudot/sys/kern/kern_racct.c Tue Sep 18 17:30:08 2012 (r241841)
+++ soc2012/rudot/sys/kern/kern_racct.c Tue Sep 18 18:09:04 2012 (r241842)
@@ -68,7 +68,7 @@
FEATURE(racct, "Resource Accounting");
/*
- * Do not block processes that have their %cpu usage <= pcpu_threshold
+ * Do not block processes that have their %cpu usage <= pcpu_threshold.
*/
static int pcpu_threshold = 1;
@@ -77,9 +77,9 @@
0, "Processes with higher %cpu usage than this value can be throttled.");
/*
- * How many seconds it takes to use the scheduler %cpu calculations. When a
+ * How many seconds it takes to use the scheduler %cpu calculations. When a
* process starts, we compute its %cpu usage by dividing its runtime by the
- * process wall clock time. After RACCT_PCPU_SECS pass, we use the value
+ * process wall clock time. After RACCT_PCPU_SECS pass, we use the value
* provided by the scheduler.
*/
#define RACCT_PCPU_SECS 3
@@ -297,7 +297,7 @@
* They should both calculate in the same way so that the racct %cpu
* calculations are consistent with the values showed by the ps(1) tool.
* The calculations are more complex in the 4BSD scheduler because of the value
- * of the ccpu variable. In ULE it is defined to be zero which saves us some
+ * of the ccpu variable. In ULE it is defined to be zero which saves us some
* work.
*/
static uint64_t
@@ -324,7 +324,7 @@
/*
* For short-lived processes, the sched_pctcpu() returns small
- * values even for cpu intensive processes. Therefore we use
+ * values even for cpu intensive processes. Therefore we use
* our own estimate in this case.
*/
if (swtime < RACCT_PCPU_SECS)
@@ -355,7 +355,7 @@
#else
/*
* In ULE the %cpu statistics are updated on every
- * sched_pctcpu() call. So special calculations to
+ * sched_pctcpu() call. So special calculations to
* account for the latest (unfinished) second are
* not needed.
*/
@@ -494,10 +494,10 @@
* There are some cases where the racct %cpu resource would grow
* beyond 100%.
* For example in racct_proc_exit() we add the process %cpu usage
- * to the ucred racct containers. If too many processes terminated
+ * to the ucred racct containers. If too many processes terminated
* in a short time span, the ucred %cpu resource could grow too much.
* Also, the 4BSD scheduler sometimes returns for a thread more than
- * 100% cpu usage. So we set a boundary here to 100%.
+ * 100% cpu usage. So we set a boundary here to 100%.
*/
if ((resource == RACCT_PCTCPU) &&
(racct->r_resources[RACCT_PCTCPU] > 100 * 1000000))
@@ -601,7 +601,7 @@
/*
* This is basicly racct_set_force_locked(), but with the added
* benefit that if we are over limits, we let the caller know
- * via the return value. But we still do set the resource to the
+ * via the return value. But we still do set the resource to the
* specified amount.
*/
static int
@@ -620,7 +620,7 @@
old_amount = p->p_racct->r_resources[resource];
/*
- * the diffs may be negative
+ * The diffs may be negative.
*/
diff_proc = amount - old_amount;
if (RACCT_IS_DECAYING(resource)) {
@@ -660,7 +660,7 @@
old_amount = p->p_racct->r_resources[resource];
/*
- * the diffs may be negative
+ * The diffs may be negative.
*/
diff_proc = amount - old_amount;
if (RACCT_IS_DECAYING(resource)) {
@@ -741,7 +741,7 @@
/*
* Returns amount of 'resource' the process 'p' can keep allocated.
* Allocating more than that would be denied, unless the resource
- * is marked undeniable. Amount of already allocated resource does
+ * is marked undeniable. Amount of already allocated resource does
* not matter.
*/
uint64_t
@@ -758,7 +758,7 @@
/*
* Returns amount of 'resource' the process 'p' can keep allocated.
* Allocating more than that would be denied, unless the resource
- * is marked undeniable. Amount of already allocated resource does
+ * is marked undeniable. Amount of already allocated resource does
* matter.
*/
uint64_t
@@ -855,8 +855,9 @@
goto out;
#endif
- /* Init process cpu time */
+ /* Init process cpu time. */
child->p_prev_runtime = 0;
+ child->p_throttled = 0;
/*
* Inherit resource usage.
@@ -1019,7 +1020,7 @@
PROC_LOCK_ASSERT(p, MA_OWNED);
/*
- * Do not block kernel processes. Also do not block processes with
+ * Do not block kernel processes. Also do not block processes with
* low %cpu utilization to improve interactivity.
*/
if (((p->p_flag & (P_SYSTEM | P_KTHREAD)) != 0) ||
@@ -1030,11 +1031,21 @@
FOREACH_THREAD_IN_PROC(p, td) {
switch (td->td_state) {
case TDS_RUNQ:
+ /*
+ * If the thread is on the scheduler run-queue, we can
+ * not just remove it from there. So we set the flag
+ * TDF_NEEDRESCHED for the thread, so that once it is
+ * running, it is taken off the cpu as soon as possible.
+ */
thread_lock(td);
td->td_flags |= TDF_NEEDRESCHED;
thread_unlock(td);
break;
case TDS_RUNNING:
+ /*
+ * If the thread is running, we request a context
+ * switch for it by setting the TDF_NEEDRESCHED flag.
+ */
thread_lock(td);
td->td_flags |= TDF_NEEDRESCHED;
#ifdef SMP
Modified: soc2012/rudot/sys/kern/kern_rctl.c
==============================================================================
--- soc2012/rudot/sys/kern/kern_rctl.c Tue Sep 18 17:30:08 2012 (r241841)
+++ soc2012/rudot/sys/kern/kern_rctl.c Tue Sep 18 18:09:04 2012 (r241842)
@@ -305,7 +305,7 @@
/*
* Return slightly less than actual value of the available
- * %cpu resource. This makes %cpu throttling more agressive
+ * %cpu resource. This makes %cpu throttling more agressive
* and lets us act sooner than the limits are already exceeded.
*/
if (limit != 0) {
Modified: soc2012/rudot/sys/kern/sched_4bsd.c
==============================================================================
--- soc2012/rudot/sys/kern/sched_4bsd.c Tue Sep 18 17:30:08 2012 (r241841)
+++ soc2012/rudot/sys/kern/sched_4bsd.c Tue Sep 18 18:09:04 2012 (r241842)
@@ -1564,6 +1564,10 @@
}
#ifdef RACCT
+/*
+ * Calculates the contribution to the thread cpu usage for the latest
+ * (unfinished) second.
+ */
fixpt_t
sched_pctcpu_delta(struct thread *td)
{
Modified: soc2012/rudot/sys/sys/racct.h
==============================================================================
--- soc2012/rudot/sys/sys/racct.h Tue Sep 18 17:30:08 2012 (r241841)
+++ soc2012/rudot/sys/sys/racct.h Tue Sep 18 18:09:04 2012 (r241842)
@@ -91,7 +91,7 @@
#define RACCT_IS_IN_MILLIONS(X) (racct_types[X] & RACCT_IN_MILLIONS)
/*
- * Resource usage can drop, as opposed to only grow. When the process
+ * Resource usage can drop, as opposed to only grow. When the process
* terminates, its resource usage is freed from the respective
* per-credential racct containers.
*/
@@ -118,7 +118,7 @@
/*
* When a process terminates, its resource usage is not automatically
- * subtracted from per-credential racct containers. Instead, the resource
+ * subtracted from per-credential racct containers. Instead, the resource
* usage of per-credential racct containers decays in time.
* Resource usage can olso drop for such resource.
* So far, the only such resource is RACCT_PCTCPU.
@@ -141,9 +141,6 @@
LIST_HEAD(, rctl_rule_link) r_rule_links;
};
-/* Flags kept in r_pflags. */
-#define R_PCPUEXCEEDED 0x00001 /* Process %cpu limits have been exceeded. */
-
int racct_add(struct proc *p, int resource, uint64_t amount);
void racct_add_cred(struct ucred *cred, int resource, uint64_t amount);
void racct_add_force(struct proc *p, int resource, uint64_t amount);
More information about the svn-soc-all
mailing list