Edward Tomasz Napierala
16befafd16
Accessing td_state requires thread lock to be held.
...
Submitted by: Rudo Tomori
Reviewed by: kib
2013-03-14 23:20:18 +00:00
Edward Tomasz Napierala
baf85d0a22
Improve KASSERT messages in racct, to make it clear which resource
...
caused the problem.
Submitted by: mjg
2012-11-15 15:55:49 +00:00
Edward Tomasz Napierala
84c9193ba0
Fix kassert that's not really valid for %CPU accounting. The problem
...
here is race between decaying the resource usage in containers, and updating
per-process usage; basically, the former may cause per-container usage
to get smaller than per-process usage.
Submitted by: Rudo Tomori
2012-11-15 14:11:34 +00:00
Edward Tomasz Napierala
84590fd8e5
Don't divide by zero.
...
Tested by: swills
2012-11-13 11:29:08 +00:00
Edward Tomasz Napierala
36af98697d
Add CPU percentage limit enforcement to RCTL. The resouce name is "pcpu".
...
It was implemented by Rudolf Tomori during Google Summer of Code 2012.
2012-10-26 16:01:08 +00:00
Edward Tomasz Napierala
ab27d5d88a
Fix panic with RACCT that could occur in low memory (or out of swap)
...
situations, due to fork1() calling racct_proc_exit() without calling
racct_proc_fork() first.
Submitted by: Mateusz Guzik <mjguzik at gmail dot com> (earlier version)
Reviewed by: Mateusz Guzik <mjguzik at gmail dot com>
2012-05-22 15:58:27 +00:00
Edward Tomasz Napierala
0b18eb6d74
Stop treating system processes as special. This fixes panics
...
like the one triggered by this:
# kldload geom_vinum
# pwait `pgrep -S gv_worker` &
# kldunload geom_vinum
or this:
GEOM_JOURNAL: Shutting down geom gjournal 3464572051.
panic: destroying non-empty racct: 1 allocated for resource 6
which were tracked by jh@ to be caused by checking p->p_flag,
while it wasn't initialised yet. Basically, during fork, the code
checked p_flag, concluded the process isn't marked as P_SYSTEM,
incremented the counter, and later on, when exiting, checked that
the process was marked as P_SYSTEM, and thus didn't decrement it.
Also, I believe there wasn't any good reason for checking P_SYSTEM
in the first place.
Tested by: jh
2012-04-17 14:31:02 +00:00
Jaakko Heinonen
59f513cd09
Cast wallclock.tv_sec to uint64_t to avoid overflow in the calculation.
...
PR: kern/161552
Reviewed by: trasz
Tested by: Nikos Vassiliadis
MFC after: 1 week
2012-03-18 19:13:32 +00:00
Edward Tomasz Napierala
0a53cd5742
Remove useless thread_{lock,unlock}() in raccd.
2012-03-10 14:38:49 +00:00
Edward Tomasz Napierala
c34bbd2ada
Make racct and rctl correctly handle jail renaming. Previously
...
they would continue using old name, the one jail was created with.
PR: bin/165207
2012-03-06 11:05:50 +00:00
Andriy Gapon
0e225211a0
kern_racct: move sys/systm.h inclusion to its proper place
...
This should fix the build failure introduced with r228424.
Also remove duplicate inclusion of sys/param.h.
Pointyhat to: avg
MFC after: 1 week
2011-12-12 07:46:10 +00:00
Edward Tomasz Napierala
c0c0936205
Actually enforce limit for inheritable resources on fork.
...
MFC after: 3 days
2011-10-04 14:56:33 +00:00
Edward Tomasz Napierala
2d8696d1e8
Move some code inside the racct_proc_fork(); it spares a few lock operations
...
and it's more logical this way.
MFC after: 3 days
2011-10-03 17:40:55 +00:00
Edward Tomasz Napierala
72a401d918
Fix another bug introduced in r225641, which caused rctl to access certain
...
fields in 'struct proc' before they got initialized in do_fork().
MFC after: 3 days
2011-10-03 16:23:20 +00:00
Edward Tomasz Napierala
ac6fafe6c2
Fix bug introduced in r225641, which would cause panic if racct_proc_fork()
...
returned error -- the racct_destroy_locked() would get called twice.
MFC after: 3 days
2011-10-03 15:32:15 +00:00
Edward Tomasz Napierala
2419d7f93b
Fix panic that happens when fork(2) fails due to a limit other than
...
the rctl one - for example, it happens when someone reaches maximum
number of processes in the system.
Approved by: re (kib)
2011-09-03 08:08:24 +00:00
Edward Tomasz Napierala
85a2f1b4f2
Rename resource names to match these in login.conf.
2011-07-14 19:18:17 +00:00
Edward Tomasz Napierala
4fe8477539
Style fix - macros are supposed to be uppercase.
2011-07-07 17:44:42 +00:00
Edward Tomasz Napierala
7e2548ae0a
Remove definitions for RACCT_FSIZE and RACCT_SBSIZE - these two are rather
...
performance-sensitive and not that useful, so I won't be merging them
before 9.0.
2011-05-27 19:57:58 +00:00
Edward Tomasz Napierala
a7ad07bff3
Change the way rctl interfaces with jails by introducing prison_racct
...
structure, which acts as a proxy between them. This makes jail rules
persistent, i.e. they can be added before jail gets created, and they
don't disappear when the jail gets destroyed.
2011-05-03 07:32:58 +00:00
Edward Tomasz Napierala
c98fe0a557
Add missing stubs.
2011-04-05 19:50:34 +00:00
Edward Tomasz Napierala
d31b45e164
Remove pointless (always true) KASSERTs.
...
Submitted by: pjd
2011-03-29 19:19:10 +00:00
Edward Tomasz Napierala
097055e26d
Add racct. It's an API to keep per-process, per-jail, per-loginclass
...
and per-loginclass resource accounting information, to be used by the new
resource limits code. It's connected to the build, but the code that
actually calls the new functions will come later.
Sponsored by: The FreeBSD Foundation
Reviewed by: kib (earlier version)
2011-03-29 17:47:25 +00:00