Date: Tue, 18 Feb 2003 19:08:36 -0800 (PST) From: Julian Elischer <julian@elischer.org> To: Mooneer Salem <mooneer@translator.cx> Cc: FreeBSD Hackers <freebsd-hackers@freebsd.org> Subject: RE: Per-jail CPU limits? Message-ID: <Pine.BSF.4.21.0302181907050.25812-100000@InterJet.elischer.org> In-Reply-To: <FHEMJMOKKMJDGKFOHHEPMEEBFAAA.mooneer@translator.cx>
next in thread | previous in thread | raw e-mail | index | archive | help
Firstly, this is a -current question so 'hackers' is not the best place.. secondly all teh kse stuff is ONLY used for a threaded program. Unthreaded programs (not compiled with libkse) are permanently bound to their KSE. On Tue, 18 Feb 2003, Mooneer Salem wrote: > Hello, > > An update: > > * I changed a block of code in kse_reassign() to the following: > > if ((td = kg->kg_last_assigned)) { > do { > td = TAILQ_NEXT(td, td_runq); > } while (td && jail_check_cpu(td)); > } else { > td = TAILQ_FIRST(&kg->kg_runq); > } > > * jail_check_cpu() has been placed in kern_jail.c and looks like the > following: > > int > jail_check_cpu(td) > struct thread *td; > { > struct prison *pr = td->td_ucred->cr_prison; > u_int totalcpu = td->td_ksegrp->kg_estcpu; > > if (!pr) { > /* Not in jail; don't care about its CPU. */ > return 0; > } > > printf("cpu debug: %d\n", totalcpu); > > /* By default, return 0. */ > return 0; > } > > jail_check_cpu() is a passthrough function that accepts by default and is > supposed > to print the total CPU used to the console. After recompiling the kernel and > rebooting, > I tried to start a jail. Unfortunately, I didn't see the message that should > have > been printed. > > I believe kse_reassign() might only be called under certain circumstances > (e.g. when > SMP is involved). If that's the case, another function will need to be found > to > insert the code in. > > Thanks, > > -- > Mooneer Salem > GPLTrans: http://www.translator.cx/ > lifeafterking.org: http://www.lifeafterking.org/ > > -----Original Message----- > From: owner-freebsd-hackers@FreeBSD.ORG > [mailto:owner-freebsd-hackers@FreeBSD.ORG]On Behalf Of Mooneer Salem > Sent: Tuesday, February 18, 2003 5:07 PM > To: FreeBSD Hackers > Subject: Per-jail CPU limits? > > > Hello, > > I've been looking at the kernel source, in particular the scheduler > in the past few weeks. I found a place in kern_switch.c where per-jail > CPU controls could be added (in particular, in the kse_reassign() function). > >From looking at that function, I could loop through td_runq until I either: > > 1. Found a thread that isn't jailed, > 2. Found a jailed thread, but determine it's safe to let it run because > it does not go over sysctl-defined limits, or > 3. Find no usable thread, in which case the KSE would theoretically switch > over to the idle process until it's time to repeat the process again. > > This should allow the use of the standard FreeBSD scheduler, except for > the jail limits. The question is, how do we determine the total CPU used > by the jail? I found the kg_estcpu entry in struct ksegrp, which the thread > has a pointer to, but would that be enough? Is there a different approach we > could take that would solve this problem? > > Thanks, > > -- > Mooneer Salem > GPLTrans: http://www.translator.cx/ > lifeafterking.org: http://www.lifeafterking.org/ > > > > To Unsubscribe: send mail to majordomo@FreeBSD.org > with "unsubscribe freebsd-hackers" in the body of the message > > > > > > To Unsubscribe: send mail to majordomo@FreeBSD.org > with "unsubscribe freebsd-hackers" in the body of the message > To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.4.21.0302181907050.25812-100000>