Page MenuHomeFreeBSD

D59401.id186038.diff
No OneTemporary

D59401.id186038.diff

diff --git a/sys/kern/sched_4bsd.c b/sys/kern/sched_4bsd.c
--- a/sys/kern/sched_4bsd.c
+++ b/sys/kern/sched_4bsd.c
@@ -210,6 +210,23 @@
return (0);
}
+static int
+sysctl_kern_4bsd_slice(SYSCTL_HANDLER_ARGS)
+{
+ int error, new_val;
+
+ new_val = sched_slice;
+ error = sysctl_handle_int(oidp, &new_val, 0, req);
+ if (error != 0 || req->newptr == NULL)
+ return (error);
+ if (new_val <= 0)
+ return (EINVAL);
+ sched_slice = new_val;
+ hogticks = imax(1, (2 * hz * sched_slice + realstathz / 2) /
+ realstathz);
+ return (0);
+}
+
SYSCTL_NODE(_kern_sched, OID_AUTO, 4bsd, CTLFLAG_RD | CTLFLAG_MPSAFE, 0,
"4BSD Scheduler");
@@ -217,7 +234,9 @@
CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_MPSAFE, NULL, 0,
sysctl_kern_4bsd_quantum, "I",
"Quantum for timeshare threads in microseconds");
-SYSCTL_INT(_kern_sched_4bsd, OID_AUTO, slice, CTLFLAG_RW, &sched_slice, 0,
+SYSCTL_PROC(_kern_sched_4bsd, OID_AUTO, slice,
+ CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_MPSAFE, NULL, 0,
+ sysctl_kern_4bsd_slice, "I",
"Quantum for timeshare threads in stathz ticks");
#ifdef SMP
/* Enable forwarding of wakeups to all other cpus */
diff --git a/sys/kern/sched_ule.c b/sys/kern/sched_ule.c
--- a/sys/kern/sched_ule.c
+++ b/sys/kern/sched_ule.c
@@ -3484,6 +3484,24 @@
return (0);
}
+static int
+sysctl_kern_slice(SYSCTL_HANDLER_ARGS)
+{
+ int error, new_val;
+
+ new_val = sched_slice;
+ error = sysctl_handle_int(oidp, &new_val, 0, req);
+ if (error != 0 || req->newptr == NULL)
+ return (error);
+ if (new_val <= 0)
+ return (EINVAL);
+ sched_slice = new_val;
+ sched_slice_min = imax(1, sched_slice / SCHED_SLICE_MIN_DIVISOR);
+ hogticks = imax(1, (2 * hz * sched_slice + realstathz / 2) /
+ realstathz);
+ return (0);
+}
+
SYSCTL_NODE(_kern_sched, OID_AUTO, ule, CTLFLAG_RD | CTLFLAG_MPSAFE, 0,
"ULE Scheduler");
@@ -3491,7 +3509,9 @@
CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_MPSAFE, NULL, 0,
sysctl_kern_quantum, "I",
"Quantum for timeshare threads in microseconds");
-SYSCTL_INT(_kern_sched_ule, OID_AUTO, slice, CTLFLAG_RW, &sched_slice, 0,
+SYSCTL_PROC(_kern_sched_ule, OID_AUTO, slice,
+ CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_MPSAFE, NULL, 0,
+ sysctl_kern_slice, "I",
"Quantum for timeshare threads in stathz ticks");
SYSCTL_UINT(_kern_sched_ule, OID_AUTO, interact, CTLFLAG_RWTUN, &sched_interact, 0,
"Interactivity score threshold");

File Metadata

Mime Type
text/plain
Expires
Wed, Sep 9, 9:14 PM (4 h, 44 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
38612324
Default Alt Text
D59401.id186038.diff (2 KB)

Event Timeline