16ec54a57SEdward Tomasz Napierala.\"- 26ec54a57SEdward Tomasz Napierala.\" Copyright (c) 2009 Edward Tomasz Napierala 36ec54a57SEdward Tomasz Napierala.\" All rights reserved. 46ec54a57SEdward Tomasz Napierala.\" 56ec54a57SEdward Tomasz Napierala.\" Redistribution and use in source and binary forms, with or without 66ec54a57SEdward Tomasz Napierala.\" modification, are permitted provided that the following conditions 76ec54a57SEdward Tomasz Napierala.\" are met: 86ec54a57SEdward Tomasz Napierala.\" 1. Redistributions of source code must retain the above copyright 96ec54a57SEdward Tomasz Napierala.\" notice, this list of conditions and the following disclaimer. 106ec54a57SEdward Tomasz Napierala.\" 2. Redistributions in binary form must reproduce the above copyright 116ec54a57SEdward Tomasz Napierala.\" notice, this list of conditions and the following disclaimer in the 126ec54a57SEdward Tomasz Napierala.\" documentation and/or other materials provided with the distribution. 136ec54a57SEdward Tomasz Napierala.\" 146ec54a57SEdward Tomasz Napierala.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 156ec54a57SEdward Tomasz Napierala.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 166ec54a57SEdward Tomasz Napierala.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 176ec54a57SEdward Tomasz Napierala.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR THE VOICES IN HIS HEAD BE 186ec54a57SEdward Tomasz Napierala.\" LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 196ec54a57SEdward Tomasz Napierala.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 206ec54a57SEdward Tomasz Napierala.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 216ec54a57SEdward Tomasz Napierala.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 226ec54a57SEdward Tomasz Napierala.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 236ec54a57SEdward Tomasz Napierala.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 246ec54a57SEdward Tomasz Napierala.\" POSSIBILITY OF SUCH DAMAGE. 256ec54a57SEdward Tomasz Napierala.\" 266ec54a57SEdward Tomasz Napierala.\" $FreeBSD$ 276ec54a57SEdward Tomasz Napierala.\" 28f9f0cd1fSEdward Tomasz Napierala.Dd February 26, 2018 296ec54a57SEdward Tomasz Napierala.Dt RCTL 8 306ec54a57SEdward Tomasz Napierala.Os 316ec54a57SEdward Tomasz Napierala.Sh NAME 326ec54a57SEdward Tomasz Napierala.Nm rctl 336ec54a57SEdward Tomasz Napierala.Nd display and update resource limits database 346ec54a57SEdward Tomasz Napierala.Sh SYNOPSIS 356ec54a57SEdward Tomasz Napierala.Nm 366ec54a57SEdward Tomasz Napierala.Op Fl h 376ec54a57SEdward Tomasz Napierala.Op Fl n 380971623eSEdward Tomasz Napierala.Op Ar filter Ar ... 396ec54a57SEdward Tomasz Napierala.Nm 406ec54a57SEdward Tomasz Napierala.Fl a 410971623eSEdward Tomasz Napierala.Ar rule Ar ... 426ec54a57SEdward Tomasz Napierala.Nm 43c0a04e01SBryan Drewery.Fl l 446ec54a57SEdward Tomasz Napierala.Op Fl h 456ec54a57SEdward Tomasz Napierala.Op Fl n 460971623eSEdward Tomasz Napierala.Ar filter Ar ... 476ec54a57SEdward Tomasz Napierala.Nm 486ec54a57SEdward Tomasz Napierala.Fl r 490971623eSEdward Tomasz Napierala.Ar filter Ar ... 506ec54a57SEdward Tomasz Napierala.Nm 516ec54a57SEdward Tomasz Napierala.Fl u 52c0a04e01SBryan Drewery.Op Fl h 530971623eSEdward Tomasz Napierala.Ar filter Ar ... 546ec54a57SEdward Tomasz Napierala.Sh DESCRIPTION 556ec54a57SEdward Tomasz NapieralaWhen called without options, the 566ec54a57SEdward Tomasz Napierala.Nm 576ec54a57SEdward Tomasz Napieralacommand writes currently defined RCTL rules to standard output. 586ec54a57SEdward Tomasz Napierala.Pp 596ec54a57SEdward Tomasz NapieralaIf a 606ec54a57SEdward Tomasz Napierala.Ar filter 616ec54a57SEdward Tomasz Napieralaargument is specified, only rules matching the filter are displayed. 626ec54a57SEdward Tomasz NapieralaThe options are as follows: 636ec54a57SEdward Tomasz Napierala.Bl -tag -width indent 646ec54a57SEdward Tomasz Napierala.It Fl a Ar rule 656ec54a57SEdward Tomasz NapieralaAdd 666ec54a57SEdward Tomasz Napierala.Ar rule 676ec54a57SEdward Tomasz Napieralato the RCTL database. 686ec54a57SEdward Tomasz Napierala.It Fl l Ar filter 696ec54a57SEdward Tomasz NapieralaDisplay rules applicable to the process defined by 706ec54a57SEdward Tomasz Napierala.Ar filter . 71aeb99b56SEdward Tomasz NapieralaNote that this is different from showing the rules when called without 72aeb99b56SEdward Tomasz Napieralaany options, as it shows not just the rules with subject equal to that 73aeb99b56SEdward Tomasz Napieralaof process, but also rules for the user, jail, and login class applicable 74aeb99b56SEdward Tomasz Napieralato the process. 756ec54a57SEdward Tomasz Napierala.It Fl r Ar filter 766ec54a57SEdward Tomasz NapieralaRemove rules matching 776ec54a57SEdward Tomasz Napierala.Ar filter 786ec54a57SEdward Tomasz Napieralafrom the RCTL database. 796ec54a57SEdward Tomasz Napierala.It Fl u Ar filter 80859f4b70SEdward Tomasz NapieralaDisplay resource utilization for a subject 81c0a04e01SBryan Drewery.Po 82c0a04e01SBryan Drewery.Sy process , 83c0a04e01SBryan Drewery.Sy user , 84c0a04e01SBryan Drewery.Sy loginclass 85c0a04e01SBryan Dreweryor 86c0a04e01SBryan Drewery.Sy jail 87c0a04e01SBryan Drewery.Pc 88c0a04e01SBryan Drewerymatching the 896ec54a57SEdward Tomasz Napierala.Ar filter . 906ec54a57SEdward Tomasz Napierala.It Fl h 916ec54a57SEdward Tomasz Napierala"Human-readable" output. 926ec54a57SEdward Tomasz NapieralaUse unit suffixes: Byte, Kilobyte, Megabyte, 936ec54a57SEdward Tomasz NapieralaGigabyte, Terabyte and Petabyte. 946ec54a57SEdward Tomasz Napierala.It Fl n 956ec54a57SEdward Tomasz NapieralaDisplay user IDs numerically rather than converting them to a user name. 96b2e52cedSUlrich Spörlein.El 97c0a04e01SBryan Drewery.Pp 98c0a04e01SBryan DreweryModifying rules affects all currently running and future processes matching 99c0a04e01SBryan Drewerythe rule. 1006ec54a57SEdward Tomasz Napierala.Sh RULE SYNTAX 1016ec54a57SEdward Tomasz NapieralaSyntax for a rule is subject:subject-id:resource:action=amount/per. 1026ec54a57SEdward Tomasz Napierala.Pp 103c0a04e01SBryan Drewery.Bl -tag -width "subject-id" -compact -offset indent 104c0a04e01SBryan Drewery.It subject 105c0a04e01SBryan Drewerydefines the kind of entity the rule applies to. 106c0a04e01SBryan DreweryIt can be either 107c0a04e01SBryan Drewery.Sy process , 108c0a04e01SBryan Drewery.Sy user , 109c0a04e01SBryan Drewery.Sy loginclass , 110c0a04e01SBryan Dreweryor 111c0a04e01SBryan Drewery.Sy jail . 112c0a04e01SBryan Drewery.It subject-id 113c0a04e01SBryan Dreweryidentifies the 114c0a04e01SBryan Drewery.Em subject . 115c0a04e01SBryan DreweryIt can be a process ID, user name, numerical user ID, login class name from 116c0a04e01SBryan Drewery.Xr login.conf 5 , 117aeb99b56SEdward Tomasz Napieralaor jail name. 118c0a04e01SBryan Drewery.It resource 119c0a04e01SBryan Dreweryidentifies the resource the rule controls. 120c0a04e01SBryan DrewerySee the 121c0a04e01SBryan Drewery.Sx RESOURCES 122c0a04e01SBryan Drewerysection below for details. 123c0a04e01SBryan Drewery.It action 124c0a04e01SBryan Drewerydefines what will happen when a process exceeds the allowed 125c0a04e01SBryan Drewery.Em amount . 126c0a04e01SBryan DrewerySee the 127c0a04e01SBryan Drewery.Sx ACTIONS 128c0a04e01SBryan Drewerysection below for details. 129c0a04e01SBryan Drewery.It amount 130c0a04e01SBryan Drewerydefines how much of the resource a process can use before 131c0a04e01SBryan Drewerythe defined 132c0a04e01SBryan Drewery.Em action 133c0a04e01SBryan Drewerytriggers. 134c0a04e01SBryan DreweryResources which limit bytes may use prefixes from 135c0a04e01SBryan Drewery.Xr expand_number 3 . 136c0a04e01SBryan Drewery.It per 137c0a04e01SBryan Drewerydefines what entity the 138c0a04e01SBryan Drewery.Em amount 139c0a04e01SBryan Drewerygets accounted for. 140*bd67d6b2SEitan AdlerFor example, rule "loginclass:users:vmemoryuse:deny=100M/process" means 1416ec54a57SEdward Tomasz Napieralathat each process of any user belonging to login class "users" may allocate 1426ec54a57SEdward Tomasz Napieralaup to 100MB of virtual memory. 143*bd67d6b2SEitan AdlerRule "loginclass:users:vmemoryuse:deny=100M/user" would mean that for each 1446ec54a57SEdward Tomasz Napieralauser belonging to the login class "users", the sum of virtual memory allocated 14520d3bac0SEdward Tomasz Napieralaby all the processes of that user will not exceed 100MB. 146*bd67d6b2SEitan AdlerRule "loginclass:users:vmemoryuse:deny=100M/loginclass" would mean that the sum of 1476ec54a57SEdward Tomasz Napieralavirtual memory allocated by all processes of all users belonging to that login 1486ec54a57SEdward Tomasz Napieralaclass will not exceed 100MB. 149c0a04e01SBryan Drewery.El 1506ec54a57SEdward Tomasz Napierala.Pp 151c0a04e01SBryan DreweryA valid rule has all those fields specified, except for 152c0a04e01SBryan Drewery.Em per , 153c0a04e01SBryan Drewerywhich defaults 154c0a04e01SBryan Dreweryto the value of 155c0a04e01SBryan Drewery.Em subject . 1566ec54a57SEdward Tomasz Napierala.Pp 157c0a04e01SBryan DreweryA filter is a rule for which one of more fields other than 158c0a04e01SBryan Drewery.Em per 159c0a04e01SBryan Dreweryis left empty. 1606ec54a57SEdward Tomasz NapieralaFor example, a filter that matches every rule could be written as ":::=/", 1616ec54a57SEdward Tomasz Napieralaor, in short, ":". 1626ec54a57SEdward Tomasz NapieralaA filter that matches all the login classes would be "loginclass:". 163c0a04e01SBryan DreweryA filter that matches all defined rules for 164c0a04e01SBryan Drewery.Sy maxproc 165c0a04e01SBryan Dreweryresource would be 166a29460e0SEdward Tomasz Napierala"::maxproc". 167c0a04e01SBryan Drewery.Sh SUBJECTS 168c0a04e01SBryan Drewery.Bl -column -offset 3n "pseudoterminals" ".Sy username or numerical User ID" 169c0a04e01SBryan Drewery.It Sy process Ta numerical Process ID 170c0a04e01SBryan Drewery.It Sy user Ta user name or numerical User ID 171c0a04e01SBryan Drewery.It Sy loginclass Ta login class from 172c0a04e01SBryan Drewery.Xr login.conf 5 173c0a04e01SBryan Drewery.It Sy jail Ta jail name 174c0a04e01SBryan Drewery.El 1756ec54a57SEdward Tomasz Napierala.Sh RESOURCES 17685a2f1b4SEdward Tomasz Napierala.Bl -column -offset 3n "pseudoterminals" 177c0a04e01SBryan Drewery.It Sy cputime Ta "CPU time, in seconds" 178c0a04e01SBryan Drewery.It Sy datasize Ta "data size, in bytes" 179c0a04e01SBryan Drewery.It Sy stacksize Ta "stack size, in bytes" 180c0a04e01SBryan Drewery.It Sy coredumpsize Ta "core dump size, in bytes" 181c0a04e01SBryan Drewery.It Sy memoryuse Ta "resident set size, in bytes" 182c0a04e01SBryan Drewery.It Sy memorylocked Ta "locked memory, in bytes" 183c0a04e01SBryan Drewery.It Sy maxproc Ta "number of processes" 184c0a04e01SBryan Drewery.It Sy openfiles Ta "file descriptor table size" 185c0a04e01SBryan Drewery.It Sy vmemoryuse Ta "address space limit, in bytes" 186c0a04e01SBryan Drewery.It Sy pseudoterminals Ta "number of PTYs" 187d051ac80SEdward Tomasz Napierala.It Sy swapuse Ta "swap space that may be reserved or used, in bytes" 188c0a04e01SBryan Drewery.It Sy nthr Ta "number of threads" 189c0a04e01SBryan Drewery.It Sy msgqqueued Ta "number of queued SysV messages" 190c0a04e01SBryan Drewery.It Sy msgqsize Ta "SysV message queue size, in bytes" 191c0a04e01SBryan Drewery.It Sy nmsgq Ta "number of SysV message queues" 192c0a04e01SBryan Drewery.It Sy nsem Ta "number of SysV semaphores" 193c0a04e01SBryan Drewery.It Sy nsemop Ta "number of SysV semaphores modified in a single semop(2) call" 194c0a04e01SBryan Drewery.It Sy nshm Ta "number of SysV shared memory segments" 195c0a04e01SBryan Drewery.It Sy shmsize Ta "SysV shared memory size, in bytes" 196c0a04e01SBryan Drewery.It Sy wallclock Ta "wallclock time, in seconds" 197c0a04e01SBryan Drewery.It Sy pcpu Ta "%CPU, in percents of a single CPU core" 198ae34b6ffSEdward Tomasz Napierala.It Sy readbps Ta "filesystem reads, in bytes per second" 199ae34b6ffSEdward Tomasz Napierala.It Sy writebps Ta "filesystem writes, in bytes per second" 200ae34b6ffSEdward Tomasz Napierala.It Sy readiops Ta "filesystem reads, in operations per second" 201ae34b6ffSEdward Tomasz Napierala.It Sy writeiops Ta "filesystem writes, in operations per second" 2026ec54a57SEdward Tomasz Napierala.El 2036ec54a57SEdward Tomasz Napierala.Sh ACTIONS 20485a2f1b4SEdward Tomasz Napierala.Bl -column -offset 3n "pseudoterminals" 205c0a04e01SBryan Drewery.It Sy deny Ta deny the allocation; not supported for 206ae34b6ffSEdward Tomasz Napierala.Sy cputime , 207ae34b6ffSEdward Tomasz Napierala.Sy wallclock , 208ae34b6ffSEdward Tomasz Napierala.Sy readbps , 209ae34b6ffSEdward Tomasz Napierala.Sy writebps , 210ae34b6ffSEdward Tomasz Napierala.Sy readiops , 211c0a04e01SBryan Dreweryand 212ae34b6ffSEdward Tomasz Napierala.Sy writeiops 213c0a04e01SBryan Drewery.It Sy log Ta "log a warning to the console" 214c0a04e01SBryan Drewery.It Sy devctl Ta "send notification to" 2156ec54a57SEdward Tomasz Napierala.Xr devd 8 216c0a04e01SBryan Dreweryusing 217c0a04e01SBryan Drewery.Sy system 218c0a04e01SBryan Drewery= "RCTL", 219c0a04e01SBryan Drewery.Sy subsystem 220c0a04e01SBryan Drewery= "rule", 221c0a04e01SBryan Drewery.Sy type 222c0a04e01SBryan Drewery= "matched" 223c0a04e01SBryan Drewery.It sig* e.g. 224c0a04e01SBryan Drewery.Sy sigterm ; 225c0a04e01SBryan Drewerysend a signal to the offending process. 2266ec54a57SEdward Tomasz NapieralaSee 2276ec54a57SEdward Tomasz Napierala.Xr signal 3 228c0a04e01SBryan Dreweryfor a list of supported signals 229ae34b6ffSEdward Tomasz Napierala.It Sy throttle Ta "slow down process execution"; only supported for 230ae34b6ffSEdward Tomasz Napierala.Sy readbps , 231ae34b6ffSEdward Tomasz Napierala.Sy writebps , 232ae34b6ffSEdward Tomasz Napierala.Sy readiops , 233ae34b6ffSEdward Tomasz Napieralaand 234ae34b6ffSEdward Tomasz Napierala.Sy writeiops . 235c0a04e01SBryan Drewery.El 2366ec54a57SEdward Tomasz Napierala.Pp 2376ec54a57SEdward Tomasz NapieralaNot all actions are supported for all resources. 238c0a04e01SBryan DreweryAttempting to add a rule with an action not supported by a given resource will 239c0a04e01SBryan Dreweryresult in error. 2406ec54a57SEdward Tomasz Napierala.Sh EXIT STATUS 2416ec54a57SEdward Tomasz Napierala.Ex -std 2426ec54a57SEdward Tomasz Napierala.Sh EXAMPLES 2430a44395eSBryan DreweryPrevent user "joe" from allocating more than 1GB of virtual memory: 2440a44395eSBryan Drewery.Dl Nm Fl a Ar user:joe:vmemoryuse:deny=1g 2456ec54a57SEdward Tomasz Napierala.Pp 2460a44395eSBryan DreweryRemove all RCTL rules: 2470a44395eSBryan Drewery.Dl Nm Fl r Ar \&: 2486ec54a57SEdward Tomasz Napierala.Pp 249859f4b70SEdward Tomasz NapieralaDisplay resource utilization information for jail named "www": 2500a44395eSBryan Drewery.Dl Nm Fl hu Ar jail:www 2516ec54a57SEdward Tomasz Napierala.Pp 2520a44395eSBryan DreweryDisplay all the rules applicable to process with PID 512: 2530a44395eSBryan Drewery.Dl Nm Fl l Ar process:512 254c0a04e01SBryan Drewery.Pp 255c0a04e01SBryan DreweryDisplay all rules: 256c0a04e01SBryan Drewery.Dl Nm 257c0a04e01SBryan Drewery.Pp 258c0a04e01SBryan DreweryDisplay all rules matching user "joe": 259c0a04e01SBryan Drewery.Dl Nm Ar user:joe 260c0a04e01SBryan Drewery.Pp 261c0a04e01SBryan DreweryDisplay all rules matching login classes: 262c0a04e01SBryan Drewery.Dl Nm Ar loginclass: 2636ec54a57SEdward Tomasz Napierala.Sh SEE ALSO 264f9f0cd1fSEdward Tomasz Napierala.Xr cpuset 1 , 265f2e34224SEdward Tomasz Napierala.Xr rctl 4 , 266d8c4c833SEdward Tomasz Napierala.Xr rctl.conf 5 2676ec54a57SEdward Tomasz Napierala.Sh HISTORY 2686ec54a57SEdward Tomasz NapieralaThe 2696ec54a57SEdward Tomasz Napierala.Nm 2706ec54a57SEdward Tomasz Napieralacommand appeared in 2716ec54a57SEdward Tomasz Napierala.Fx 9.0 . 2726ec54a57SEdward Tomasz Napierala.Sh AUTHORS 2736ec54a57SEdward Tomasz Napierala.An -nosplit 2746ec54a57SEdward Tomasz NapieralaThe 2756ec54a57SEdward Tomasz Napierala.Nm 2761de5b5ebSEdward Tomasz Napieralawas developed by 2772b7af31cSBaptiste Daroussin.An Edward Tomasz Napierala Aq Mt trasz@FreeBSD.org 2781de5b5ebSEdward Tomasz Napieralaunder sponsorship from the FreeBSD Foundation. 279c0a04e01SBryan Drewery.Sh BUGS 280c0a04e01SBryan DreweryLimiting 281c0a04e01SBryan Drewery.Sy memoryuse 282c0a04e01SBryan Drewerymay kill the machine due to thrashing. 283ae34b6ffSEdward Tomasz Napierala.Pp 284ae34b6ffSEdward Tomasz NapieralaThe 285ae34b6ffSEdward Tomasz Napierala.Sy readiops 286ae34b6ffSEdward Tomasz Napieralaand 287ae34b6ffSEdward Tomasz Napierala.Sy writeiops 288ae34b6ffSEdward Tomasz Napieralacounters are only approximations. 289ae34b6ffSEdward Tomasz NapieralaLike 290ae34b6ffSEdward Tomasz Napierala.Sy readbps 291ae34b6ffSEdward Tomasz Napieralaand 292ae34b6ffSEdward Tomasz Napierala.Sy writebps , 293ae34b6ffSEdward Tomasz Napieralathey are calculated in the filesystem layer, where it is difficult 294ae34b6ffSEdward Tomasz Napieralaor even impossible to observe actual disk device operations. 295ae34b6ffSEdward Tomasz Napierala.Pp 296ae34b6ffSEdward Tomasz NapieralaThe 297ae34b6ffSEdward Tomasz Napierala.Sy writebps 298ae34b6ffSEdward Tomasz Napieralaand 299ae34b6ffSEdward Tomasz Napierala.Sy writeiops 300ae34b6ffSEdward Tomasz Napieralaresources generally account for writes to the filesystem cache, 301ae34b6ffSEdward Tomasz Napieralanot to actual devices. 302