Date: Sun, 27 Mar 2011 08:57:40 GMT From: Edward Tomasz Napierala <trasz@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 190618 for review Message-ID: <201103270857.p2R8veDJ001325@skunkworks.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://p4web.freebsd.org/@@190618?ac=10 Change 190618 by trasz@trasz_victim on 2011/03/27 08:57:39 Replace "container" and "rusage" with "racct". Affected files ... .. //depot/projects/soc2009/trasz_limits/sys/compat/linux/linux_misc.c#22 edit .. //depot/projects/soc2009/trasz_limits/sys/conf/NOTES#35 edit .. //depot/projects/soc2009/trasz_limits/sys/conf/files#51 edit .. //depot/projects/soc2009/trasz_limits/sys/conf/options#32 edit .. //depot/projects/soc2009/trasz_limits/sys/fs/fdescfs/fdesc_vfsops.c#7 edit .. //depot/projects/soc2009/trasz_limits/sys/kern/imgact_aout.c#15 edit .. //depot/projects/soc2009/trasz_limits/sys/kern/imgact_elf.c#26 edit .. //depot/projects/soc2009/trasz_limits/sys/kern/imgact_gzip.c#11 edit .. //depot/projects/soc2009/trasz_limits/sys/kern/init_main.c#40 edit .. //depot/projects/soc2009/trasz_limits/sys/kern/kern_container.c#77 move/delete .. //depot/projects/soc2009/trasz_limits/sys/kern/kern_descrip.c#24 edit .. //depot/projects/soc2009/trasz_limits/sys/kern/kern_exit.c#32 edit .. //depot/projects/soc2009/trasz_limits/sys/kern/kern_fork.c#36 edit .. //depot/projects/soc2009/trasz_limits/sys/kern/kern_jail.c#39 edit .. //depot/projects/soc2009/trasz_limits/sys/kern/kern_loginclass.c#35 edit .. //depot/projects/soc2009/trasz_limits/sys/kern/kern_prot.c#35 edit .. //depot/projects/soc2009/trasz_limits/sys/kern/kern_racct.c#1 move/add .. //depot/projects/soc2009/trasz_limits/sys/kern/kern_rctl.c#40 edit .. //depot/projects/soc2009/trasz_limits/sys/kern/kern_resource.c#62 edit .. //depot/projects/soc2009/trasz_limits/sys/kern/kern_sig.c#23 edit .. //depot/projects/soc2009/trasz_limits/sys/kern/kern_thr.c#15 edit .. //depot/projects/soc2009/trasz_limits/sys/kern/sysv_msg.c#13 edit .. //depot/projects/soc2009/trasz_limits/sys/kern/sysv_sem.c#14 edit .. //depot/projects/soc2009/trasz_limits/sys/kern/sysv_shm.c#15 edit .. //depot/projects/soc2009/trasz_limits/sys/kern/tty_pts.c#26 edit .. //depot/projects/soc2009/trasz_limits/sys/kern/uipc_sockbuf.c#9 edit .. //depot/projects/soc2009/trasz_limits/sys/kern/uipc_socket.c#21 edit .. //depot/projects/soc2009/trasz_limits/sys/kern/uipc_usrreq.c#14 edit .. //depot/projects/soc2009/trasz_limits/sys/kern/vfs_vnops.c#24 edit .. //depot/projects/soc2009/trasz_limits/sys/sys/container.h#28 move/delete .. //depot/projects/soc2009/trasz_limits/sys/sys/jail.h#22 edit .. //depot/projects/soc2009/trasz_limits/sys/sys/kernel.h#9 edit .. //depot/projects/soc2009/trasz_limits/sys/sys/loginclass.h#16 edit .. //depot/projects/soc2009/trasz_limits/sys/sys/proc.h#35 edit .. //depot/projects/soc2009/trasz_limits/sys/sys/racct.h#1 move/add .. //depot/projects/soc2009/trasz_limits/sys/sys/rctl.h#14 edit .. //depot/projects/soc2009/trasz_limits/sys/sys/resourcevar.h#26 edit .. //depot/projects/soc2009/trasz_limits/sys/vm/swap_pager.c#22 edit .. //depot/projects/soc2009/trasz_limits/sys/vm/vm_glue.c#14 edit .. //depot/projects/soc2009/trasz_limits/sys/vm/vm_map.c#35 edit .. //depot/projects/soc2009/trasz_limits/sys/vm/vm_mmap.c#25 edit .. //depot/projects/soc2009/trasz_limits/sys/vm/vm_pageout.c#33 edit .. //depot/projects/soc2009/trasz_limits/sys/vm/vm_unix.c#15 edit Moved files ... .. //depot/projects/soc2009/trasz_limits/sys/kern/kern_racct.c#1 moved from //depot/projects/soc2009/trasz_limits/sys/kern/kern_container.c#76 .. //depot/projects/soc2009/trasz_limits/sys/sys/racct.h#1 moved from //depot/projects/soc2009/trasz_limits/sys/sys/container.h#27 Differences ... ==== //depot/projects/soc2009/trasz_limits/sys/compat/linux/linux_misc.c#22 (text+ko) ==== @@ -35,7 +35,6 @@ #include <sys/param.h> #include <sys/blist.h> #include <sys/fcntl.h> -#include <sys/container.h> #if defined(__i386__) #include <sys/imgact_aout.h> #endif @@ -51,6 +50,7 @@ #include <sys/priv.h> #include <sys/proc.h> #include <sys/reboot.h> +#include <sys/racct.h> #include <sys/resourcevar.h> #include <sys/sched.h> #include <sys/signalvar.h> @@ -359,7 +359,7 @@ PROC_LOCK(td->td_proc); if (a_out->a_text > maxtsiz || a_out->a_data + bss_size > lim_cur(td->td_proc, RLIMIT_DATA) || - rusage_set(td->td_proc, RUSAGE_DATA, a_out->a_data + + racct_set(td->td_proc, RACCT_DATA, a_out->a_data + bss_size) != 0) { PROC_UNLOCK(td->td_proc); error = ENOMEM; ==== //depot/projects/soc2009/trasz_limits/sys/conf/NOTES#35 (text+ko) ==== @@ -1161,8 +1161,8 @@ # Support for Capsicum options CAPABILITIES -# Resource Containers -options CONTAINERS +# Resource Accounting +options RACCT # Resource Limits options RCTL ==== //depot/projects/soc2009/trasz_limits/sys/conf/files#51 (text+ko) ==== @@ -2185,7 +2185,6 @@ kern/kern_condvar.c standard kern/kern_conf.c standard kern/kern_cons.c standard -kern/kern_container.c standard kern/kern_cpu.c standard kern/kern_cpuset.c standard kern/kern_context.c standard @@ -2226,6 +2225,7 @@ kern/kern_priv.c standard kern/kern_proc.c standard kern/kern_prot.c standard +kern/kern_racct.c standard kern/kern_rctl.c standard kern/kern_resource.c standard kern/kern_rmlock.c standard ==== //depot/projects/soc2009/trasz_limits/sys/conf/options#32 (text+ko) ==== @@ -873,8 +873,8 @@ IPOIB_DEBUG opt_ofed.h IPOIB_CM opt_ofed.h -# Resource Containers -CONTAINERS opt_global.h +# Resource Accounting +RACCT opt_global.h # Resource Limits RCTL opt_global.h ==== //depot/projects/soc2009/trasz_limits/sys/fs/fdescfs/fdesc_vfsops.c#7 (text+ko) ==== @@ -38,7 +38,6 @@ * /dev/fd Filesystem */ -#include <sys/container.h> #include <sys/param.h> #include <sys/systm.h> #include <sys/filedesc.h> @@ -48,6 +47,7 @@ #include <sys/malloc.h> #include <sys/mount.h> #include <sys/proc.h> +#include <sys/racct.h> #include <sys/resourcevar.h> #include <sys/vnode.h> @@ -202,7 +202,7 @@ PROC_UNLOCK(td->td_proc); fdp = td->td_proc->p_fd; FILEDESC_SLOCK(fdp); - limit = rusage_get_limit(td->td_proc, RUSAGE_NOFILE); + limit = racct_get_limit(td->td_proc, RACCT_NOFILE); if (lim > limit) lim = limit; last = min(fdp->fd_nfiles, lim); ==== //depot/projects/soc2009/trasz_limits/sys/kern/imgact_aout.c#15 (text+ko) ==== @@ -29,7 +29,6 @@ #include <sys/param.h> #include <sys/exec.h> -#include <sys/container.h> #include <sys/imgact.h> #include <sys/imgact_aout.h> #include <sys/kernel.h> @@ -37,6 +36,7 @@ #include <sys/malloc.h> #include <sys/mutex.h> #include <sys/proc.h> +#include <sys/racct.h> #include <sys/resourcevar.h> #include <sys/signalvar.h> #include <sys/syscall.h> @@ -192,7 +192,7 @@ /* data + bss can't exceed rlimit */ a_out->a_data + bss_size > lim_cur(imgp->proc, RLIMIT_DATA) || - rusage_set(imgp->proc, RUSAGE_DATA, + racct_set(imgp->proc, RACCT_DATA, a_out->a_data + bss_size) != 0) { PROC_UNLOCK(imgp->proc); return (ENOMEM); ==== //depot/projects/soc2009/trasz_limits/sys/kern/imgact_elf.c#26 (text+ko) ==== @@ -35,7 +35,6 @@ #include "opt_core.h" #include <sys/param.h> -#include <sys/container.h> #include <sys/exec.h> #include <sys/fcntl.h> #include <sys/imgact.h> @@ -50,6 +49,7 @@ #include <sys/pioctl.h> #include <sys/proc.h> #include <sys/procfs.h> +#include <sys/racct.h> #include <sys/resourcevar.h> #include <sys/sf_buf.h> #include <sys/smp.h> @@ -876,8 +876,8 @@ if (data_size > lim_cur(imgp->proc, RLIMIT_DATA) || text_size > maxtsiz || total_size > lim_cur(imgp->proc, RLIMIT_VMEM) || - rusage_set(imgp->proc, RUSAGE_DATA, data_size) != 0 || - rusage_set(imgp->proc, RUSAGE_VMEM, total_size) != 0) { + racct_set(imgp->proc, RACCT_DATA, data_size) != 0 || + racct_set(imgp->proc, RACCT_VMEM, total_size) != 0) { PROC_UNLOCK(imgp->proc); return (ENOMEM); } @@ -1105,7 +1105,7 @@ __elfN(puthdr)(td, (void *)NULL, &hdrsize, seginfo.count); PROC_LOCK(td->td_proc); - error = rusage_add(td->td_proc, RUSAGE_CORE, hdrsize + seginfo.size); + error = racct_add(td->td_proc, RACCT_CORE, hdrsize + seginfo.size); PROC_UNLOCK(td->td_proc); if (error != 0) { error = EFAULT; ==== //depot/projects/soc2009/trasz_limits/sys/kern/imgact_gzip.c#11 (text+ko) ==== @@ -33,6 +33,7 @@ #include <sys/mman.h> #include <sys/mutex.h> #include <sys/proc.h> +#include <sys/racct.h> #include <sys/resourcevar.h> #include <sys/sysent.h> #include <sys/systm.h> @@ -217,7 +218,7 @@ /* data + bss can't exceed rlimit */ gz->a_out.a_data + gz->bss_size > lim_cur(gz->ip->proc, RLIMIT_DATA) || - rusage_set(gz->ip->proc, RUSAGE_DATA, + racct_set(gz->ip->proc, RACCT_DATA, gz->a_out.a_data + gz->bss_size) != 0) { PROC_UNLOCK(gz->ip->proc); gz->where = __LINE__; ==== //depot/projects/soc2009/trasz_limits/sys/kern/init_main.c#40 (text+ko) ==== @@ -49,7 +49,6 @@ #include <sys/param.h> #include <sys/kernel.h> -#include <sys/container.h> #include <sys/exec.h> #include <sys/file.h> #include <sys/filedesc.h> @@ -62,6 +61,7 @@ #include <sys/syscallsubr.h> #include <sys/sysctl.h> #include <sys/proc.h> +#include <sys/racct.h> #include <sys/resourcevar.h> #include <sys/systm.h> #include <sys/signalvar.h> @@ -528,7 +528,7 @@ p->p_cpulimit = RLIM_INFINITY; /* Initialize resource accounting structures. */ - container_create(&p->p_container); + racct_create(&p->p_racct); p->p_stats = pstats_alloc(); @@ -558,7 +558,7 @@ */ (void)chgproccnt(p->p_ucred->cr_ruidinfo, 1, 0); PROC_LOCK(p); - rusage_add_force(p, RUSAGE_NPROC, 1); + racct_add_force(p, RACCT_NPROC, 1); PROC_UNLOCK(p); } SYSINIT(p0init, SI_SUB_INTRINSIC, SI_ORDER_FIRST, proc0_init, NULL); ==== //depot/projects/soc2009/trasz_limits/sys/kern/kern_descrip.c#24 (text+ko) ==== @@ -45,7 +45,6 @@ #include <sys/systm.h> #include <sys/conf.h> -#include <sys/container.h> #include <sys/domain.h> #include <sys/fcntl.h> #include <sys/file.h> @@ -63,6 +62,7 @@ #include <sys/priv.h> #include <sys/proc.h> #include <sys/protosw.h> +#include <sys/racct.h> #include <sys/resourcevar.h> #include <sys/signalvar.h> #include <sys/socketvar.h> @@ -282,7 +282,7 @@ PROC_LOCK(p); td->td_retval[0] = min((int)lim_cur(p, RLIMIT_NOFILE), maxfilesperproc); - lim = rusage_get_limit(td->td_proc, RUSAGE_NOFILE); + lim = racct_get_limit(td->td_proc, RACCT_NOFILE); PROC_UNLOCK(p); if (lim < td->td_retval[0]) td->td_retval[0] = lim; @@ -802,13 +802,13 @@ /* * The resource limits are here instead of e.g. fdalloc(), * because the file descriptor table may be shared between - * processes, so we can't really use rusage_add()/rusage_sub(). + * processes, so we can't really use racct_add()/racct_sub(). * Instead of counting the number of actually allocated * descriptors, just put the limit on the size of the file * descriptor table. */ PROC_LOCK(p); - error = rusage_set(p, RUSAGE_NOFILE, new + 1); + error = racct_set(p, RACCT_NOFILE, new + 1); PROC_UNLOCK(p); if (error != 0) { FILEDESC_XUNLOCK(fdp); @@ -1486,7 +1486,7 @@ if (fd < fdp->fd_nfiles) break; PROC_LOCK(p); - error = rusage_set(p, RUSAGE_NOFILE, min(fdp->fd_nfiles * 2, maxfd)); + error = racct_set(p, RACCT_NOFILE, min(fdp->fd_nfiles * 2, maxfd)); PROC_UNLOCK(p); if (error != 0) return (EMFILE); @@ -1523,7 +1523,7 @@ /* * XXX: This is only called from uipc_usrreq.c:unp_externalize(); - * call rusage_add() from there instead of dealing with containers + * call racct_add() from there instead of dealing with containers * here. */ PROC_LOCK(p); @@ -1782,7 +1782,7 @@ return; PROC_LOCK(td->td_proc); - rusage_set(td->td_proc, RUSAGE_NOFILE, 0); + racct_set(td->td_proc, RACCT_NOFILE, 0); PROC_UNLOCK(td->td_proc); /* Check for special need to clear POSIX style locks */ ==== //depot/projects/soc2009/trasz_limits/sys/kern/kern_exit.c#32 (text+ko) ==== @@ -56,6 +56,7 @@ #include <sys/wait.h> #include <sys/vmmeter.h> #include <sys/vnode.h> +#include <sys/racct.h> #include <sys/resourcevar.h> #include <sys/sbuf.h> #include <sys/signalvar.h> @@ -66,7 +67,6 @@ #include <sys/ptrace.h> #include <sys/acct.h> /* for acct_process() function prototype */ #include <sys/filedesc.h> -#include <sys/container.h> #include <sys/sdt.h> #include <sys/shm.h> #include <sys/sem.h> @@ -177,7 +177,7 @@ } KASSERT(p->p_numthreads == 1, ("exit1: proc %p exiting with %d threads", p, p->p_numthreads)); - rusage_sub(p, RUSAGE_NTHR, 1); + racct_sub(p, RACCT_NTHR, 1); /* * Wakeup anyone in procfs' PIOCWAIT. They should have a hold * on our vmspace, so we should block below until they have @@ -743,11 +743,11 @@ (void)chgproccnt(p->p_ucred->cr_ruidinfo, -1, 0); /* - * Destroy resource container associated with the process. + * Destroy resource accounting information associated with the process. */ - container_proc_exit(p); + racct_proc_exit(p); PROC_LOCK(p->p_pptr); - rusage_sub(p->p_pptr, RUSAGE_NPROC, 1); + racct_sub(p->p_pptr, RACCT_NPROC, 1); PROC_UNLOCK(p->p_pptr); /* @@ -910,10 +910,10 @@ return; PROC_LOCK(parent); - rusage_add_force(parent, RUSAGE_NPROC, 1); + racct_add_force(parent, RACCT_NPROC, 1); PROC_UNLOCK(parent); PROC_LOCK(child->p_pptr); - rusage_sub(child->p_pptr, RUSAGE_NPROC, 1); + racct_sub(child->p_pptr, RACCT_NPROC, 1); sigqueue_take(child->p_ksi); PROC_UNLOCK(child->p_pptr); LIST_REMOVE(child, p_sibling); ==== //depot/projects/soc2009/trasz_limits/sys/kern/kern_fork.c#36 (text+ko) ==== @@ -46,7 +46,6 @@ #include <sys/sysproto.h> #include <sys/eventhandler.h> #include <sys/filedesc.h> -#include <sys/container.h> #include <sys/jail.h> #include <sys/kernel.h> #include <sys/kthread.h> @@ -57,6 +56,7 @@ #include <sys/priv.h> #include <sys/proc.h> #include <sys/pioctl.h> +#include <sys/racct.h> #include <sys/resourcevar.h> #include <sys/sched.h> #include <sys/syscall.h> @@ -735,7 +735,7 @@ } PROC_LOCK(p1); - error = rusage_add(p1, RUSAGE_NPROC, 1); + error = racct_add(p1, RACCT_NPROC, 1); PROC_UNLOCK(p1); if (error != 0) return (EAGAIN); @@ -797,9 +797,9 @@ newproc->p_ucred = p1->p_ucred; /* - * Initialize resource container for the child process. + * Initialize resource accounting for the child process. */ - error = container_proc_fork(p1, newproc); + error = racct_proc_fork(p1, newproc); if (error != 0) { error = EAGAIN; goto fail1; @@ -826,7 +826,7 @@ * After fork, there is exactly one thread running. */ PROC_LOCK(newproc); - error = rusage_set(newproc, RUSAGE_NTHR, 1); + error = racct_set(newproc, RACCT_NTHR, 1); PROC_UNLOCK(newproc); if (error != 0) { error = EAGAIN; @@ -860,7 +860,7 @@ error = EAGAIN; fail: - container_proc_exit(newproc); + racct_proc_exit(newproc); sx_sunlock(&proctree_lock); if (ppsratecheck(&lastfail, &curfail, 1)) printf("maxproc limit exceeded by uid %i, please see tuning(7) and login.conf(5).\n", @@ -875,7 +875,7 @@ uma_zfree(proc_zone, newproc); pause("fork", hz / 2); PROC_LOCK(p1); - rusage_sub(p1, RUSAGE_NPROC, 1); + racct_sub(p1, RACCT_NPROC, 1); PROC_UNLOCK(p1); return (error); } ==== //depot/projects/soc2009/trasz_limits/sys/kern/kern_jail.c#39 (text+ko) ==== @@ -38,7 +38,6 @@ #include <sys/types.h> #include <sys/kernel.h> #include <sys/systm.h> -#include <sys/container.h> #include <sys/errno.h> #include <sys/sysproto.h> #include <sys/malloc.h> @@ -50,6 +49,7 @@ #include <sys/jail.h> #include <sys/lock.h> #include <sys/mutex.h> +#include <sys/racct.h> #include <sys/rctl.h> #include <sys/sx.h> #include <sys/sysent.h> @@ -1197,7 +1197,7 @@ root = mypr->pr_root; vref(root); } - container_create(&pr->pr_container); + racct_create(&pr->pr_racct); strlcpy(pr->pr_hostuuid, DEFAULT_HOSTUUID, HOSTUUIDLEN); pr->pr_flags |= PR_HOST; #if defined(INET) || defined(INET6) @@ -2298,8 +2298,8 @@ newcred->cr_prison = pr; p->p_ucred = newcred; PROC_UNLOCK(p); -#ifdef CONTAINERS - container_proc_ucred_changed(p, oldcred, newcred); +#ifdef RACCT + racct_proc_ucred_changed(p, oldcred, newcred); #endif crfree(oldcred); prison_deref(ppr, PD_DEREF | PD_DEUREF); @@ -2534,9 +2534,9 @@ cpuset_rel(pr->pr_cpuset); osd_jail_exit(pr); #ifdef RCTL - rctl_container_release(pr->pr_container); + rctl_racct_release(pr->pr_racct); #endif - container_destroy(&pr->pr_container); + racct_destroy(&pr->pr_racct); free(pr, M_PRISON); /* Removing a prison frees a reference on its parent. */ @@ -4274,14 +4274,14 @@ "B", "Jail may create sockets other than just UNIX/IPv4/IPv6/route"); void -prison_container_foreach(void (*callback)(struct container *container, +prison_racct_foreach(void (*callback)(struct racct *racct, void *arg2, void *arg3), void *arg2, void *arg3) { struct prison *pr; sx_slock(&allprison_lock); TAILQ_FOREACH(pr, &allprison, pr_list) - (callback)(pr->pr_container, arg2, arg3); + (callback)(pr->pr_racct, arg2, arg3); sx_sunlock(&allprison_lock); } ==== //depot/projects/soc2009/trasz_limits/sys/kern/kern_loginclass.c#35 (text+ko) ==== @@ -46,7 +46,6 @@ __FBSDID("$FreeBSD: src/sys/kern/kern_loginclass.c,v 1.1 2011/03/05 12:40:35 trasz Exp $"); #include <sys/param.h> -#include <sys/container.h> #include <sys/eventhandler.h> #include <sys/kernel.h> #include <sys/lock.h> @@ -57,6 +56,7 @@ #include <sys/priv.h> #include <sys/proc.h> #include <sys/queue.h> +#include <sys/racct.h> #include <sys/refcount.h> #include <sys/sysproto.h> #include <sys/systm.h> @@ -91,7 +91,7 @@ mtx_lock(&loginclasses_lock); if (refcount_release(&lc->lc_refcount)) { - container_destroy(&lc->lc_container); + racct_destroy(&lc->lc_racct); LIST_REMOVE(lc, lc_next); mtx_unlock(&loginclasses_lock); free(lc, M_LOGINCLASS); @@ -117,7 +117,7 @@ return (NULL); newlc = malloc(sizeof(*newlc), M_LOGINCLASS, M_ZERO | M_WAITOK); - container_create(&newlc->lc_container); + racct_create(&newlc->lc_racct); mtx_lock(&loginclasses_lock); LIST_FOREACH(lc, &loginclasses, lc_next) { @@ -127,7 +127,7 @@ /* Found loginclass with a matching name? */ loginclass_hold(lc); mtx_unlock(&loginclasses_lock); - container_destroy(&newlc->lc_container); + racct_destroy(&newlc->lc_racct); free(newlc, M_LOGINCLASS); return (lc); } @@ -209,8 +209,8 @@ newcred->cr_loginclass = newlc; p->p_ucred = newcred; PROC_UNLOCK(p); -#ifdef CONTAINERS - container_proc_ucred_changed(p, oldcred, newcred); +#ifdef RACCT + racct_proc_ucred_changed(p, oldcred, newcred); #endif loginclass_free(oldcred->cr_loginclass); crfree(oldcred); @@ -219,14 +219,14 @@ } void -loginclass_container_foreach(void (*callback)(struct container *container, +loginclass_racct_foreach(void (*callback)(struct racct *racct, void *arg2, void *arg3), void *arg2, void *arg3) { struct loginclass *lc; mtx_lock(&loginclasses_lock); LIST_FOREACH(lc, &loginclasses, lc_next) - (callback)(lc->lc_container, arg2, arg3); + (callback)(lc->lc_racct, arg2, arg3); mtx_unlock(&loginclasses_lock); } ==== //depot/projects/soc2009/trasz_limits/sys/kern/kern_prot.c#35 (text+ko) ==== @@ -51,7 +51,6 @@ #include <sys/param.h> #include <sys/systm.h> #include <sys/acct.h> -#include <sys/container.h> #include <sys/kdb.h> #include <sys/kernel.h> #include <sys/lock.h> @@ -65,6 +64,7 @@ #include <sys/sysproto.h> #include <sys/jail.h> #include <sys/pioctl.h> +#include <sys/racct.h> #include <sys/resourcevar.h> #include <sys/socket.h> #include <sys/socketvar.h> @@ -585,8 +585,8 @@ } p->p_ucred = newcred; PROC_UNLOCK(p); -#ifdef CONTAINERS - container_proc_ucred_changed(p, oldcred, newcred); +#ifdef RACCT + racct_proc_ucred_changed(p, oldcred, newcred); #endif uifree(uip); crfree(oldcred); @@ -926,8 +926,8 @@ } p->p_ucred = newcred; PROC_UNLOCK(p); -#ifdef CONTAINERS - container_proc_ucred_changed(p, oldcred, newcred); +#ifdef RACCT + racct_proc_ucred_changed(p, oldcred, newcred); #endif uifree(ruip); uifree(euip); @@ -1067,8 +1067,8 @@ } p->p_ucred = newcred; PROC_UNLOCK(p); -#ifdef CONTAINERS - container_proc_ucred_changed(p, oldcred, newcred); +#ifdef RACCT + racct_proc_ucred_changed(p, oldcred, newcred); #endif uifree(ruip); uifree(euip); ==== //depot/projects/soc2009/trasz_limits/sys/kern/kern_racct.c#1 (text+ko) ==== @@ -35,7 +35,6 @@ #include "opt_kdtrace.h" #include <sys/param.h> -#include <sys/container.h> #include <sys/eventhandler.h> #include <sys/param.h> #include <sys/jail.h> @@ -46,6 +45,7 @@ #include <sys/malloc.h> #include <sys/mutex.h> #include <sys/proc.h> +#include <sys/racct.h> #include <sys/resourcevar.h> #include <sys/sbuf.h> #include <sys/sched.h> @@ -60,178 +60,178 @@ #include <sys/rctl.h> #endif -#ifdef CONTAINERS +#ifdef RACCT -FEATURE(containers, "Resource Containers"); +FEATURE(racct, "Resource Accounting"); -static struct mtx container_lock; -MTX_SYSINIT(container_lock, &container_lock, "container lock", MTX_DEF); +static struct mtx racct_lock; +MTX_SYSINIT(racct_lock, &racct_lock, "racct lock", MTX_DEF); -static uma_zone_t container_zone; +static uma_zone_t racct_zone; -static void container_sub(struct container *dest, const struct container *src); -static void rusage_sub_cred_locked(struct ucred *cred, int resource, uint64_t amount); -static void rusage_add_cred_locked(struct ucred *cred, int resource, uint64_t amount); +static void racct_sub_racct(struct racct *dest, const struct racct *src); +static void racct_sub_cred_locked(struct ucred *cred, int resource, uint64_t amount); +static void racct_add_cred_locked(struct ucred *cred, int resource, uint64_t amount); -SDT_PROVIDER_DEFINE(container); -SDT_PROBE_DEFINE3(container, kernel, rusage, add, add, "struct proc *", "int", "uint64_t"); -SDT_PROBE_DEFINE3(container, kernel, rusage, add_failure, add-failure, "struct proc *", "int", "uint64_t"); -SDT_PROBE_DEFINE3(container, kernel, rusage, add_cred, add-cred, "struct ucred *", "int", "uint64_t"); -SDT_PROBE_DEFINE3(container, kernel, rusage, add_force, add-force, "struct proc *", "int", "uint64_t"); -SDT_PROBE_DEFINE3(container, kernel, rusage, set, set, "struct proc *", "int", "uint64_t"); -SDT_PROBE_DEFINE3(container, kernel, rusage, set_failure, set-failure, "struct proc *", "int", "uint64_t"); -SDT_PROBE_DEFINE3(container, kernel, rusage, sub, sub, "struct proc *", "int", "uint64_t"); -SDT_PROBE_DEFINE3(container, kernel, rusage, sub_cred, sub-cred, "struct ucred *", "int", "uint64_t"); -SDT_PROBE_DEFINE1(container, kernel, container, create, create, "struct container *"); -SDT_PROBE_DEFINE1(container, kernel, container, destroy, destroy, "struct container *"); -SDT_PROBE_DEFINE2(container, kernel, container, join, join, "struct container *", "struct container *"); -SDT_PROBE_DEFINE2(container, kernel, container, join_failure, join-failure, "struct container *", "struct container *"); -SDT_PROBE_DEFINE2(container, kernel, container, leave, leave, "struct container *", "struct container *"); +SDT_PROVIDER_DEFINE(racct); +SDT_PROBE_DEFINE3(racct, kernel, rusage, add, add, "struct proc *", "int", "uint64_t"); +SDT_PROBE_DEFINE3(racct, kernel, rusage, add_failure, add-failure, "struct proc *", "int", "uint64_t"); +SDT_PROBE_DEFINE3(racct, kernel, rusage, add_cred, add-cred, "struct ucred *", "int", "uint64_t"); +SDT_PROBE_DEFINE3(racct, kernel, rusage, add_force, add-force, "struct proc *", "int", "uint64_t"); +SDT_PROBE_DEFINE3(racct, kernel, rusage, set, set, "struct proc *", "int", "uint64_t"); +SDT_PROBE_DEFINE3(racct, kernel, rusage, set_failure, set-failure, "struct proc *", "int", "uint64_t"); +SDT_PROBE_DEFINE3(racct, kernel, rusage, sub, sub, "struct proc *", "int", "uint64_t"); +SDT_PROBE_DEFINE3(racct, kernel, rusage, sub_cred, sub-cred, "struct ucred *", "int", "uint64_t"); +SDT_PROBE_DEFINE1(racct, kernel, racct, create, create, "struct racct *"); +SDT_PROBE_DEFINE1(racct, kernel, racct, destroy, destroy, "struct racct *"); +SDT_PROBE_DEFINE2(racct, kernel, racct, join, join, "struct racct *", "struct racct *"); +SDT_PROBE_DEFINE2(racct, kernel, racct, join_failure, join-failure, "struct racct *", "struct racct *"); +SDT_PROBE_DEFINE2(racct, kernel, racct, leave, leave, "struct racct *", "struct racct *"); -int rusage_types[] = { - [RUSAGE_CPU] = RUSAGE_IN_THOUSANDS, - [RUSAGE_FSIZE] = RUSAGE_RECLAIMABLE | RUSAGE_INHERITABLE | RUSAGE_DENIABLE, - [RUSAGE_DATA] = RUSAGE_RECLAIMABLE | RUSAGE_INHERITABLE | RUSAGE_DENIABLE, - [RUSAGE_STACK] = RUSAGE_RECLAIMABLE | RUSAGE_INHERITABLE | RUSAGE_DENIABLE, - [RUSAGE_CORE] = RUSAGE_DENIABLE, - [RUSAGE_RSS] = RUSAGE_RECLAIMABLE, - [RUSAGE_MEMLOCK] = RUSAGE_RECLAIMABLE | RUSAGE_DENIABLE, - [RUSAGE_NPROC] = RUSAGE_RECLAIMABLE | RUSAGE_DENIABLE, - [RUSAGE_NOFILE] = RUSAGE_RECLAIMABLE | RUSAGE_INHERITABLE | RUSAGE_DENIABLE, - [RUSAGE_SBSIZE] = RUSAGE_RECLAIMABLE | RUSAGE_DENIABLE | RUSAGE_SLOPPY, - [RUSAGE_VMEM] = RUSAGE_RECLAIMABLE | RUSAGE_INHERITABLE | RUSAGE_DENIABLE, - [RUSAGE_NPTS] = RUSAGE_RECLAIMABLE | RUSAGE_DENIABLE | RUSAGE_SLOPPY, - [RUSAGE_SWAP] = RUSAGE_RECLAIMABLE | RUSAGE_DENIABLE | RUSAGE_SLOPPY, - [RUSAGE_NTHR] = RUSAGE_RECLAIMABLE | RUSAGE_DENIABLE, - [RUSAGE_MSGQQUEUED] = RUSAGE_RECLAIMABLE | RUSAGE_DENIABLE | RUSAGE_SLOPPY, - [RUSAGE_MSGQSIZE] = RUSAGE_RECLAIMABLE | RUSAGE_DENIABLE | RUSAGE_SLOPPY, - [RUSAGE_NMSGQ] = RUSAGE_RECLAIMABLE | RUSAGE_DENIABLE | RUSAGE_SLOPPY, - [RUSAGE_NSEM] = RUSAGE_RECLAIMABLE | RUSAGE_DENIABLE | RUSAGE_SLOPPY, - [RUSAGE_NSEMOP] = RUSAGE_RECLAIMABLE | RUSAGE_INHERITABLE | RUSAGE_DENIABLE, - [RUSAGE_NSHM] = RUSAGE_RECLAIMABLE | RUSAGE_DENIABLE | RUSAGE_SLOPPY, - [RUSAGE_SHMSIZE] = RUSAGE_RECLAIMABLE | RUSAGE_DENIABLE | RUSAGE_SLOPPY, - [RUSAGE_WALLCLOCK] = RUSAGE_IN_THOUSANDS }; +int racct_types[] = { + [RACCT_CPU] = RACCT_IN_THOUSANDS, + [RACCT_FSIZE] = RACCT_RECLAIMABLE | RACCT_INHERITABLE | RACCT_DENIABLE, + [RACCT_DATA] = RACCT_RECLAIMABLE | RACCT_INHERITABLE | RACCT_DENIABLE, + [RACCT_STACK] = RACCT_RECLAIMABLE | RACCT_INHERITABLE | RACCT_DENIABLE, + [RACCT_CORE] = RACCT_DENIABLE, + [RACCT_RSS] = RACCT_RECLAIMABLE, + [RACCT_MEMLOCK] = RACCT_RECLAIMABLE | RACCT_DENIABLE, + [RACCT_NPROC] = RACCT_RECLAIMABLE | RACCT_DENIABLE, + [RACCT_NOFILE] = RACCT_RECLAIMABLE | RACCT_INHERITABLE | RACCT_DENIABLE, + [RACCT_SBSIZE] = RACCT_RECLAIMABLE | RACCT_DENIABLE | RACCT_SLOPPY, + [RACCT_VMEM] = RACCT_RECLAIMABLE | RACCT_INHERITABLE | RACCT_DENIABLE, + [RACCT_NPTS] = RACCT_RECLAIMABLE | RACCT_DENIABLE | RACCT_SLOPPY, + [RACCT_SWAP] = RACCT_RECLAIMABLE | RACCT_DENIABLE | RACCT_SLOPPY, + [RACCT_NTHR] = RACCT_RECLAIMABLE | RACCT_DENIABLE, + [RACCT_MSGQQUEUED] = RACCT_RECLAIMABLE | RACCT_DENIABLE | RACCT_SLOPPY, + [RACCT_MSGQSIZE] = RACCT_RECLAIMABLE | RACCT_DENIABLE | RACCT_SLOPPY, + [RACCT_NMSGQ] = RACCT_RECLAIMABLE | RACCT_DENIABLE | RACCT_SLOPPY, + [RACCT_NSEM] = RACCT_RECLAIMABLE | RACCT_DENIABLE | RACCT_SLOPPY, + [RACCT_NSEMOP] = RACCT_RECLAIMABLE | RACCT_INHERITABLE | RACCT_DENIABLE, + [RACCT_NSHM] = RACCT_RECLAIMABLE | RACCT_DENIABLE | RACCT_SLOPPY, + [RACCT_SHMSIZE] = RACCT_RECLAIMABLE | RACCT_DENIABLE | RACCT_SLOPPY, + [RACCT_WALLCLOCK] = RACCT_IN_THOUSANDS }; static void -container_add(struct container *dest, const struct container *src) +racct_add_racct(struct racct *dest, const struct racct *src) { int i; - mtx_assert(&container_lock, MA_OWNED); + mtx_assert(&racct_lock, MA_OWNED); /* * Update resource usage in dest. */ - for (i = 0; i <= RUSAGE_MAX; i++) { - KASSERT(dest->c_resources[i] >= 0, + for (i = 0; i <= RACCT_MAX; i++) { + KASSERT(dest->r_resources[i] >= 0, ("resource usage propagation meltdown: dest < 0")); - KASSERT(src->c_resources[i] >= 0, + KASSERT(src->r_resources[i] >= 0, ("resource usage propagation meltdown: src < 0")); - dest->c_resources[i] += src->c_resources[i]; + dest->r_resources[i] += src->r_resources[i]; } } static void -container_sub(struct container *dest, const struct container *src) +racct_sub_racct(struct racct *dest, const struct racct *src) { int i; - mtx_assert(&container_lock, MA_OWNED); + mtx_assert(&racct_lock, MA_OWNED); /* * Update resource usage in dest. */ - for (i = 0; i <= RUSAGE_MAX; i++) { - if (!rusage_is_sloppy(i) && - !rusage_is_dampened(i)) { - KASSERT(dest->c_resources[i] >= 0, + for (i = 0; i <= RACCT_MAX; i++) { + if (!racct_is_sloppy(i) && + !racct_is_dampened(i)) { + KASSERT(dest->r_resources[i] >= 0, ("resource usage propagation meltdown: dest < 0")); - KASSERT(src->c_resources[i] >= 0, + KASSERT(src->r_resources[i] >= 0, ("resource usage propagation meltdown: src < 0")); - KASSERT(src->c_resources[i] <= dest->c_resources[i], + KASSERT(src->r_resources[i] <= dest->r_resources[i], ("resource usage propagation meltdown: src > dest")); } - if (rusage_is_reclaimable(i)) { - dest->c_resources[i] -= src->c_resources[i]; - if (dest->c_resources[i] < 0) { - KASSERT(rusage_is_sloppy(i) || - rusage_is_dampened(i), - ("container_sub: usage < 0")); - dest->c_resources[i] = 0; + if (racct_is_reclaimable(i)) { + dest->r_resources[i] -= src->r_resources[i]; + if (dest->r_resources[i] < 0) { + KASSERT(racct_is_sloppy(i) || + racct_is_dampened(i), + ("racct_sub_racct: usage < 0")); + dest->r_resources[i] = 0; } } } } void -container_create(struct container **containerp) +racct_create(struct racct **racctp) { - SDT_PROBE(container, kernel, container, create, containerp, 0, 0, 0, 0); + SDT_PROBE(racct, kernel, racct, create, racctp, 0, 0, 0, 0); - KASSERT(*containerp == NULL, ("container already allocated")); + KASSERT(*racctp == NULL, ("racct already allocated")); - *containerp = uma_zalloc(container_zone, M_WAITOK | M_ZERO); + *racctp = uma_zalloc(racct_zone, M_WAITOK | M_ZERO); } static void -container_destroy_locked(struct container **containerp) +racct_destroy_locked(struct racct **racctp) { int i; - struct container *container; + struct racct *racct; - SDT_PROBE(container, kernel, container, destroy, containerp, 0, 0, 0, 0); + SDT_PROBE(racct, kernel, racct, destroy, racctp, 0, 0, 0, 0); - mtx_assert(&container_lock, MA_OWNED); - KASSERT(containerp != NULL, ("NULL containerp")); - KASSERT(*containerp != NULL, ("NULL container")); + mtx_assert(&racct_lock, MA_OWNED); + KASSERT(racctp != NULL, ("NULL racctp")); + KASSERT(*racctp != NULL, ("NULL racct")); - container = *containerp; + racct = *racctp; - for (i = 0; i <= RUSAGE_MAX; i++) { - if (rusage_is_sloppy(i)) + for (i = 0; i <= RACCT_MAX; i++) { + if (racct_is_sloppy(i)) continue; - if (!rusage_is_reclaimable(i)) + if (!racct_is_reclaimable(i)) continue; - if (rusage_is_dampened(i)) + if (racct_is_dampened(i)) continue; - KASSERT(container->c_resources[i] == 0, - ("destroying non-empty container: " + KASSERT(racct->r_resources[i] == 0, + ("destroying non-empty racct: " "%ju allocated for resource %d\n", - container->c_resources[i], i)); + racct->r_resources[i], i)); } - uma_zfree(container_zone, container); - *containerp = NULL; + uma_zfree(racct_zone, racct); + *racctp = NULL; } void -container_destroy(struct container **container) +racct_destroy(struct racct **racct) { - mtx_lock(&container_lock); - container_destroy_locked(container); - mtx_unlock(&container_lock); + mtx_lock(&racct_lock); + racct_destroy_locked(racct); + mtx_unlock(&racct_lock); } /* - * Increase consumption of 'resource' by 'amount' for 'container' + * Increase consumption of 'resource' by 'amount' for 'racct' * and all its parents. Differently from other cases, 'amount' here * may be less than zero. */ static void -container_alloc_resource(struct container *container, int resource, +racct_alloc_resource(struct racct *racct, int resource, uint64_t amount) { - mtx_assert(&container_lock, MA_OWNED); - KASSERT(container != NULL, ("NULL container")); + mtx_assert(&racct_lock, MA_OWNED); + KASSERT(racct != NULL, ("NULL racct")); - container->c_resources[resource] += amount; - if (container->c_resources[resource] < 0) { - KASSERT(rusage_is_sloppy(resource) || - rusage_is_dampened(resource), - ("container_alloc_resource: usage < 0")); - container->c_resources[resource] = 0; + racct->r_resources[resource] += amount; + if (racct->r_resources[resource] < 0) { + KASSERT(racct_is_sloppy(resource) || + racct_is_dampened(resource), + ("racct_alloc_resource: usage < 0")); + racct->r_resources[resource] = 0; } } @@ -240,7 +240,7 @@ * Return 0 if it's below limits, or errno, if it's not. */ int -rusage_add(struct proc *p, int resource, uint64_t amount) +racct_add(struct proc *p, int resource, uint64_t amount) { #ifdef RCTL int error; @@ -249,45 +249,45 @@ if (p->p_flag & P_SYSTEM) return (0); - SDT_PROBE(container, kernel, rusage, add, p, resource, amount, 0, 0); + SDT_PROBE(racct, kernel, rusage, add, p, resource, amount, 0, 0); /* * We need proc lock to dereference p->p_ucred. */ PROC_LOCK_ASSERT(p, MA_OWNED); - KASSERT(amount >= 0, ("rusage_add: invalid amount for resource %d: %ju", + KASSERT(amount >= 0, ("racct_add: invalid amount for resource %d: %ju", resource, amount)); - mtx_lock(&container_lock); + mtx_lock(&racct_lock); #ifdef RCTL error = rctl_enforce(p, resource, amount); - if (error && rusage_is_deniable(resource)) { - SDT_PROBE(container, kernel, rusage, add_failure, p, resource, amount, 0, 0); - mtx_unlock(&container_lock); >>> TRUNCATED FOR MAIL (1000 lines) <<<
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201103270857.p2R8veDJ001325>
