From owner-p4-projects@FreeBSD.ORG Sat Aug 19 08:50:06 2006 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 9F50C16A4DE; Sat, 19 Aug 2006 08:50:06 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 6296416A4DA for ; Sat, 19 Aug 2006 08:50:06 +0000 (UTC) (envelope-from cdjones@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 119F543D4C for ; Sat, 19 Aug 2006 08:50:06 +0000 (GMT) (envelope-from cdjones@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id k7J8o573032138 for ; Sat, 19 Aug 2006 08:50:05 GMT (envelope-from cdjones@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id k7J8o51f032135 for perforce@freebsd.org; Sat, 19 Aug 2006 08:50:05 GMT (envelope-from cdjones@FreeBSD.org) Date: Sat, 19 Aug 2006 08:50:05 GMT Message-Id: <200608190850.k7J8o51f032135@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to cdjones@FreeBSD.org using -f From: Chris Jones To: Perforce Change Reviews Cc: Subject: PERFORCE change 104529 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 19 Aug 2006 08:50:06 -0000 http://perforce.freebsd.org/chv.cgi?CH=104529 Change 104529 by cdjones@cdjones-impulse on 2006/08/19 08:49:17 Introduce jtune (not yet functional), add relevant members to xprison struct, get rid of sched_td from kern_jail. Affected files ... .. //depot/projects/soc2006/cdjones_jail/src/sys/kern/kern_jail.c#22 edit .. //depot/projects/soc2006/cdjones_jail/src/sys/sys/jail.h#18 edit .. //depot/projects/soc2006/cdjones_jail/src/usr.sbin/jtune/Makefile#1 add .. //depot/projects/soc2006/cdjones_jail/src/usr.sbin/jtune/jtune.8#1 add .. //depot/projects/soc2006/cdjones_jail/src/usr.sbin/jtune/jtune.c#1 add Differences ... ==== //depot/projects/soc2006/cdjones_jail/src/sys/kern/kern_jail.c#22 (text+ko) ==== @@ -99,33 +99,8 @@ SYSINIT(prison, SI_SUB_INTRINSIC, SI_ORDER_ANY, init_prison, NULL); +#if 0 static void -jsched_td(void *arg) -{ - struct prison *pr = arg; - /* int pr_id = pr->pr_id; */ - int flags = J_SCHED_TD_ACTIVE; - pr->pr_scheduler_flags_ptr = &flags; - -/* printf("Starting jsched_td\n"); */ - - for (;;) { - if (flags & J_SCHED_TD_DIE) - break; - - mtx_lock(&pr->pr_mtx); - /* Scheduling stuff goes here. */ -/* printf("jsched_td running\n"); */ - mtx_unlock(&pr->pr_mtx); - - tsleep(pr, 0, "-", hz); - } - - printf("Exiting jsched_td\n"); - kthread_exit(0); -} - -static void jpager_td(void *arg) { struct proc *p; @@ -228,6 +203,7 @@ printf("Exiting jpager_td\n"); kthread_exit(0); } +#endif /* * MPSAFE @@ -243,8 +219,7 @@ struct prison *pr, *tpr; struct jail j; struct jail_attach_args jaa; - struct proc *j_sched_proc = NULL; - struct proc *j_pager_proc = NULL; + /* struct proc *j_pager_proc = NULL; */ int vfslocked, error, tryprid; error = copyin(uap->jail, &j, sizeof(j)); @@ -274,7 +249,7 @@ goto e_dropvnref; pr->pr_ip = j.ip_number; pr->pr_linux = NULL; - pr->pr_sched_shares = j.priority; + pr->pr_sched_shares = j.sched_shares; pr->pr_securelevel = securelevel; pr->pr_mem_limit = j.mem_limit; @@ -300,16 +275,10 @@ prisoncount++; mtx_unlock(&allprison_mtx); - /* TODO #ifdef SCHED_HIER */ - if (kthread_create(jsched_td, pr, (void *) j_sched_proc, 0, 0, "jsched %d", pr->pr_id)) + /* if (kthread_create(jpager_td, pr, (void *) j_pager_proc, 0, 0, "jpager %d", pr->pr_id)) goto e_dropprref; - KASSERT(j_sched_proc != NULL, ("NULL j_sched_proc")); - pr->pr_scheduler = j_sched_proc; - if (kthread_create(jpager_td, pr, (void *) j_pager_proc, 0, 0, "jpager %d", pr->pr_id)) - goto e_dropprref; KASSERT(j_pager_proc != NULL, ("NULL j_pager_proc")); - pr->pr_pager = j_pager_proc; - /* TODO #endif */ + pr->pr_pager = j_pager_proc; */ error = jail_attach(td, &jaa); if (error) @@ -435,8 +404,8 @@ mtx_unlock(&allprison_mtx); /* Tell scheduler, pager to die. No need to wait. */ - *pr->pr_scheduler_flags_ptr = J_SCHED_TD_DIE; - *pr->pr_pager_flags_ptr = J_PAGER_TD_DIE; +/* *pr->pr_scheduler_flags_ptr = J_SCHED_TD_DIE; + *pr->pr_pager_flags_ptr = J_PAGER_TD_DIE; */ wakeup(pr); TASK_INIT(&pr->pr_task, 0, prison_complete, pr); @@ -752,6 +721,10 @@ strlcpy(xp->pr_path, pr->pr_path, sizeof(xp->pr_path)); strlcpy(xp->pr_host, pr->pr_host, sizeof(xp->pr_host)); xp->pr_ip = pr->pr_ip; + xp->pr_sched_shares = pr->pr_sched_shares; + xp->pr_estcpu = pr->pr_estcpu; + xp->pr_mem_limit = pr->pr_mem_limit; + xp->pr_mem_usage = pr->pr_mem_usage; mtx_unlock(&pr->pr_mtx); xp++; } ==== //depot/projects/soc2006/cdjones_jail/src/sys/sys/jail.h#18 (text+ko) ==== @@ -18,10 +18,8 @@ char *path; char *hostname; u_int32_t ip_number; - unsigned int priority; + unsigned int sched_shares; unsigned int mem_limit; -/* struct thread *scheduler; - CJ TODO --- add reference to preferred scheduler, e.g. by name? */ }; struct xprison { @@ -30,11 +28,12 @@ char pr_path[MAXPATHLEN]; char pr_host[MAXHOSTNAMELEN]; u_int32_t pr_ip; - unsigned int priority; - unsigned int mem_limit; - /* struct thread *scheduler; */ + unsigned int pr_sched_shares; + unsigned int pr_estcpu; + unsigned int pr_mem_limit; + unsigned int pr_mem_usage; }; -#define XPRISON_VERSION 1 +#define XPRISON_VERSION 2 #define JAIL_DEFAULT_PRIORITY 10 #define JAIL_MINIMUM_PRIORITY 1 @@ -101,8 +100,6 @@ struct mtx pr_mtx; u_int32_t pr_sched_shares; /* (p) jail priority */ u_int pr_estcpu; /* (p) est. cpu of jail */ - struct proc *pr_scheduler; /* (c) scheduler pid */ - int *pr_scheduler_flags_ptr; /* (p) communication to scheduler */ struct proc *pr_pager; /* (c) pager pid */ int *pr_pager_flags_ptr; /* (p) communication to pager */ size_t pr_mem_limit; /* (p) memory allocation limit */