Date: Fri, 16 May 2014 19:54:00 GMT From: Dustin Wenz <dustinwenz@ebureau.com> To: freebsd-gnats-submit@FreeBSD.org Subject: kern/189870: Possible bad CPU resource limit assumption in kern_racct.c Message-ID: <201405161954.s4GJs0RO072292@cgiserv.freebsd.org> Resent-Message-ID: <201405162000.s4GK00CA093470@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 189870
>Category: kern
>Synopsis: Possible bad CPU resource limit assumption in kern_racct.c
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: update
>Submitter-Id: current-users
>Arrival-Date: Fri May 16 20:00:00 UTC 2014
>Closed-Date:
>Last-Modified:
>Originator: Dustin Wenz
>Release: FreeBSD 10.0 r265159
>Organization:
eBureau
>Environment:
FreeBSD ixsys02.office.ebureau.com 10.0-STABLE FreeBSD 10.0-STABLE #2 r265159: Thu May 1 15:07:17 CDT 2014 root@setup.dc.ebureau.com:/usr/obj/usr/src/sys/ALTQKERNEL amd64
>Description:
I've been having a difficult time using the new CPU percentage limits in FreeBSD 10. It seems that if you specify a limit beyond 110% (say, 500%), the process (or jail, etc.) that you are trying to control becomes unthrottled, and can use the CPU until all logical cores are busy.
>How-To-Repeat:
Run a process that uses 20 cores at 100% utilization (2000%) in total. Attempt to limit that process to only 1000% using rctl.
rctl -a 'process:PID:pcpu:deny=1000/process'
Note that the process is not throttled.
>Fix:
My workaround is to remove these lines in kern_racct.c from function racct_alloc_resource():
if ((resource == RACCT_PCTCPU) &&
(racct->r_resources[RACCT_PCTCPU] > 100 * 1000000))
racct->r_resources[RACCT_PCTCPU] = 100 * 1000000;
I'm not sure if there needs to really be any cap on the reported %CPU from the kernel. If so, it should be at least the number of logical cores available * 100 * 1000000.
>Release-Note:
>Audit-Trail:
>Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201405161954.s4GJs0RO072292>
