From owner-p4-projects@FreeBSD.ORG Sun Jan 30 16:11:48 2011 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 461321065679; Sun, 30 Jan 2011 16:11:48 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 08DF1106566B for ; Sun, 30 Jan 2011 16:11:48 +0000 (UTC) (envelope-from trasz@freebsd.org) Received: from skunkworks.freebsd.org (skunkworks.freebsd.org [IPv6:2001:4f8:fff6::2d]) by mx1.freebsd.org (Postfix) with ESMTP id B3B6D8FC12 for ; Sun, 30 Jan 2011 16:11:47 +0000 (UTC) Received: from skunkworks.freebsd.org (localhost [127.0.0.1]) by skunkworks.freebsd.org (8.14.4/8.14.4) with ESMTP id p0UGBl12057783 for ; Sun, 30 Jan 2011 16:11:47 GMT (envelope-from trasz@freebsd.org) Received: (from perforce@localhost) by skunkworks.freebsd.org (8.14.4/8.14.4/Submit) id p0UGBle9057780 for perforce@freebsd.org; Sun, 30 Jan 2011 16:11:47 GMT (envelope-from trasz@freebsd.org) Date: Sun, 30 Jan 2011 16:11:47 GMT Message-Id: <201101301611.p0UGBle9057780@skunkworks.freebsd.org> X-Authentication-Warning: skunkworks.freebsd.org: perforce set sender to trasz@freebsd.org using -f From: Edward Tomasz Napierala To: Perforce Change Reviews Precedence: bulk Cc: Subject: PERFORCE change 188344 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 30 Jan 2011 16:11:48 -0000 http://p4web.freebsd.org/@@188344?ac=10 Change 188344 by trasz@trasz_victim on 2011/01/30 16:11:02 Instead of P_THROTTLED flag and kicking processes into idle scheduling class and back we'll need something less aggressive. This is just a WIP, since p4 doesn't have 'stash' functionality. Affected files ... .. //depot/projects/soc2009/trasz_limits/sys/kern/kern_container.c#69 edit .. //depot/projects/soc2009/trasz_limits/sys/sys/proc.h#32 edit Differences ... ==== //depot/projects/soc2009/trasz_limits/sys/kern/kern_container.c#69 (text+ko) ==== @@ -773,11 +773,11 @@ PROC_LOCK_ASSERT(p, MA_OWNED); if (throttle) { - p->p_flag |= P_THROTTLED; + p->p_throttle++; newpri = PRI_MIN_IDLE; type = RTP_PRIO_IDLE; - } else if (p->p_flag & P_THROTTLED) { - p->p_flag &= ~P_THROTTLED; + } else if (p->p_throttle > 0) { + p->p_throttle--; newpri = PRI_MIN_TIMESHARE; type = RTP_PRIO_NORMAL; } else ==== //depot/projects/soc2009/trasz_limits/sys/sys/proc.h#32 (text+ko) ==== @@ -546,6 +546,7 @@ rlim_t p_cpulimit; /* (c) Current CPU limit in seconds. */ signed char p_nice; /* (c) Process "nice" value. */ int p_fibnum; /* in this routing domain XXX MRT */ + u_int p_throttle; /* (c) Resource usage accounting. */ /* End area that is copied on creation. */ #define p_endcopy p_xstat @@ -611,7 +612,6 @@ #define P_INMEM 0x10000000 /* Loaded into memory. */ #define P_SWAPPINGOUT 0x20000000 /* Process is being swapped out. */ #define P_SWAPPINGIN 0x40000000 /* Process is being swapped in. */ -#define P_THROTTLED 0x80000000 /* Throttled due to %cpu usage */ #define P_STOPPED (P_STOPPED_SIG|P_STOPPED_SINGLE|P_STOPPED_TRACE) #define P_SHOULDSTOP(p) ((p)->p_flag & P_STOPPED)