Ingo Molnar
b2c77a57e4
This implements the cputime accounting on full dynticks CPUs.
...
Typical cputime stats infrastructure relies on the timer tick and
its periodic polling on the CPU to account the amount of time
spent by the CPUs and the tasks per high level domains such as
userspace, kernelspace, guest, ...
Now we are preparing to implement full dynticks capability on
Linux for Real Time and HPC users who want full CPU isolation.
This feature requires a cputime accounting that doesn't depend
on the timer tick.
To implement it, this new cputime infrastructure plugs into
kernel/user/guest boundaries to take snapshots of cputime and
flush these to the stats when needed. This performs pretty
much like CONFIG_VIRT_CPU_ACCOUNTING except that context location
and cputime snaphots are synchronized between write and read
side such that the latter can safely retrieve the pending tickless
cputime of a task and add it to its latest cputime snapshot to
return the correct result to the user.
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.12 (GNU/Linux)
iQIcBAABAgAGBQJRBsKnAAoJEIUkVEdQjox3lMgP/2R6DU2f8PyGIao3hne4M3Pu
L3q+mAG53b24Dy014KeW7gd8yv45fE7wp/rs8CGLte9VzbLkRCDSFQPgBuXVagRj
tV5nfAuqD0wHTnA+HhBE3l3C2RKAPGIu79rBpnIR/QIPPl8Z3Dby8YgmxEQKDf8G
j7MEBu2LthSuqEi2ZXemnO5r0oEnQAzAp4TTi/M38k0Fmt59nOGyjLnI+xHYCBMa
1pnz7j3jjR9NJExGu8iVvbo+jupuQngP8qmkLXHvYnj/TEJNwzO1hHVoSwOpjYpS
9ycl+T8IKQLbAkBywLtq3Mzde43xt/t8wYyGZ0oAV+Z7MIpz/9YIfDJwqQeqoNbD
dAdbNjKMbsxCgmrnyqSagfMQg/r3CPZ4vf40TMCaN4gNUJC4Ie+E4kPRKRh59+PB
Ukthmqujn0f40LAa+HXTUuzafd3b0s/ewH+8FuQ6LAG9b5+WnoN8JTJ5u6+ydokO
ZleeOowuRZZEg+abQ8Sm2GRm/BzN29gi/npb//I+ZDXWv/+3yccgsiPjCRzCAAaO
g1RmYryFSRUwHQbGNNypVWVuOLWvrBQ4jqbGO7BBuBByZMSHryKxR6mb+inH3qLE
xIDM9SdSJisc292OzoFKwVZki4MaXaadJXJduVvqYlZQvXXs7eAa4wo3euhtVITD
NLQO5OZXE4oIQmDFb0FV
=1Tzp
-----END PGP SIGNATURE-----
Merge tag 'full-dynticks-cputime-for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/frederic/linux-dynticks into sched/core
Pull full-dynticks (user-space execution is undisturbed and
receives no timer IRQs) preparation changes that convert the
cputime accounting code to be full-dynticks ready,
from Frederic Weisbecker:
"This implements the cputime accounting on full dynticks CPUs.
Typical cputime stats infrastructure relies on the timer tick and
its periodic polling on the CPU to account the amount of time
spent by the CPUs and the tasks per high level domains such as
userspace, kernelspace, guest, ...
Now we are preparing to implement full dynticks capability on
Linux for Real Time and HPC users who want full CPU isolation.
This feature requires a cputime accounting that doesn't depend
on the timer tick.
To implement it, this new cputime infrastructure plugs into
kernel/user/guest boundaries to take snapshots of cputime and
flush these to the stats when needed. This performs pretty
much like CONFIG_VIRT_CPU_ACCOUNTING except that context location
and cputime snaphots are synchronized between write and read
side such that the latter can safely retrieve the pending tickless
cputime of a task and add it to its latest cputime snapshot to
return the correct result to the user."
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
2013-02-05 13:10:33 +01:00
..
9p
The following changes since commit 4cbe5a555f:
2012-10-12 09:59:23 +09:00
adfs
adfs: drop vmtruncate
2012-12-20 14:00:01 -05:00
affs
affs: drop vmtruncate
2012-12-20 14:00:01 -05:00
afs
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
2012-10-02 20:25:04 -07:00
autofs4
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace
2012-12-17 15:44:47 -08:00
befs
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
2012-10-02 20:25:04 -07:00
bfs
bfs: drop vmtruncate
2012-12-20 14:00:01 -05:00
btrfs
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
2012-12-20 18:14:31 -08:00
cachefiles
FS-Cache: Mark cancellation of in-progress operation
2012-12-20 22:34:00 +00:00
ceph
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client
2012-12-20 14:00:13 -08:00
cifs
CIFS: Don't let read only caching for mandatory byte-range locked files
2013-01-01 23:04:30 -06:00
coda
fs: push rcu_barrier() from deactivate_locked_super() to filesystems
2012-10-02 21:35:55 -04:00
configfs
lseek: the "whence" argument is called "whence"
2012-12-17 17:15:12 -08:00
cramfs
userns: Convert cramfs to use kuid/kgid where appropriate
2012-09-21 03:13:08 -07:00
debugfs
debugfs: convert gid= argument from decimal, not octal
2013-01-11 05:56:01 -08:00
devpts
TTY: devpts, document devpts inode operations
2012-10-22 16:50:13 -07:00
dlm
dlm: fix lvb invalidation conditions
2012-11-16 11:20:42 -06:00
ecryptfs
fs/ecryptfs/crypto.c: make ecryptfs_encode_for_filename() static
2012-12-18 10:10:13 -06:00
efs
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
2012-10-02 20:25:04 -07:00
exofs
exofs: don't leak io_state and pages on read error
2012-12-14 12:17:32 +02:00
exportfs
Merge branch 'for-3.8' of git://linux-nfs.org/~bfields/linux
2012-12-20 14:04:11 -08:00
ext2
ext2: fix return values on parse_options() failure
2012-10-09 23:23:53 +02:00
ext3
lseek: the "whence" argument is called "whence"
2012-12-17 17:15:12 -08:00
ext4
ext4: remove duplicate call to ext4_bread() in ext4_init_new_dir()
2013-01-06 23:40:25 -05:00
f2fs
f2fs: use _safe() version of list_for_each
2013-01-22 10:49:00 +09:00
fat
fat: fix incorrect function comment
2012-12-20 17:40:20 -08:00
freevxfs
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
2012-10-02 20:25:04 -07:00
fscache
FS-Cache: Clear remaining page count on retrieval cancellation
2012-12-20 22:35:15 +00:00
fuse
fuse: remove unused variable in fuse_try_move_page()
2013-01-17 13:09:59 +01:00
gfs2
GFS2: Reset rd_last_alloc when it reaches the end of the rgrp
2013-01-02 10:05:27 +00:00
hfs
hfs: drop vmtruncate
2012-12-20 14:00:01 -05:00
hfsplus
Merge branch 'akpm' (Andrew's patch-bomb)
2012-12-20 20:00:43 -08:00
hostfs
Merge branch 'for-linus-37rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rw/uml
2012-10-10 11:15:20 +09:00
hpfs
hpfs: drop vmtruncate
2012-12-20 18:40:00 -05:00
hppfs
pidns: Use task_active_pid_ns where appropriate
2012-11-19 05:59:09 -08:00
hugetlbfs
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial
2012-12-13 12:00:02 -08:00
isofs
tmpfs,ceph,gfs2,isofs,reiserfs,xfs: fix fh_len checking
2012-10-09 23:33:55 -04:00
jbd
jbd: don't wake kjournald unnecessarily
2013-01-14 22:50:45 +01:00
jbd2
Various bug fixes for ext4. Perhaps the most serious bug fixed is one
2013-01-02 09:57:34 -08:00
jffs2
jffs2: hold erase_completion_lock on exit
2012-11-18 11:59:01 +02:00
jfs
jfs: drop vmtruncate
2012-12-20 18:40:52 -05:00
lockd
lockd: Remove BUG_ON()s from fs/lockd/clntproc.c
2012-11-04 14:43:40 -05:00
logfs
logfs: drop vmtruncate
2012-12-20 18:40:53 -05:00
minix
minix: drop vmtruncate
2012-12-20 18:40:53 -05:00
ncpfs
ncpfs: drop vmtruncate
2012-12-20 18:40:54 -05:00
nfs
nfs: avoid dereferencing null pointer in initiate_bulk_draining
2013-01-05 14:26:51 -05:00
nfs_common
nfsd
Revert "nfsd: warn on odd reply state in nfsd_vfs_read"
2012-12-21 17:07:45 -08:00
nilfs2
nilfs2: drop vmtruncate
2012-12-20 18:40:54 -05:00
nls
notify
Merge branch 'for-next' of git://git.infradead.org/users/eparis/notify
2012-12-20 20:11:52 -08:00
ntfs
ntfs: drop vmtruncate
2012-12-20 18:40:55 -05:00
ocfs2
ocfs2: drop vmtruncate
2012-12-20 14:00:01 -05:00
omfs
omfs: drop vmtruncate
2012-12-20 14:00:01 -05:00
openpromfs
fs: push rcu_barrier() from deactivate_locked_super() to filesystems
2012-10-02 21:35:55 -04:00
proc
cputime: Use accessors to read task cputime stats
2013-01-27 19:23:31 +01:00
pstore
pstore: remove __dev* attributes.
2013-01-03 15:57:14 -08:00
qnx4
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
2012-10-02 20:25:04 -07:00
qnx6
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
2012-10-02 20:25:04 -07:00
quota
quota: Use the pre-processor to compile out quotactl_cmd_write when !CONFIG_BLOCK
2012-12-13 16:33:24 +01:00
ramfs
don't pass nameidata to ->create()
2012-07-14 16:34:47 +04:00
reiserfs
reiserfs: drop vmtruncate
2012-12-20 14:00:01 -05:00
romfs
fs: push rcu_barrier() from deactivate_locked_super() to filesystems
2012-10-02 21:35:55 -04:00
squashfs
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
2012-10-02 20:25:04 -07:00
sysfs
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace
2012-12-17 15:44:47 -08:00
sysv
sysv: drop vmtruncate
2012-12-20 14:00:01 -05:00
ubifs
ubifs: use prandom_bytes
2012-12-17 17:15:26 -08:00
udf
UDF: Fix a null pointer dereference in udf_sb_free_partitions
2013-01-14 22:53:47 +01:00
ufs
ufs: drop vmtruncate
2012-12-20 14:00:01 -05:00
xfs
xfs: recalculate leaf entry pointer after compacting a dir2 block
2013-01-16 16:08:55 -06:00
aio.c
aio: now fput() is OK from interrupt context; get rid of manual delayed __fput()
2012-07-22 23:57:59 +04:00
anon_inodes.c
attr.c
userns: Allow chown and setgid preservation
2012-11-20 04:17:24 -08:00
bad_inode.c
lseek: the "whence" argument is called "whence"
2012-12-17 17:15:12 -08:00
binfmt_aout.c
get rid of pt_regs argument of ->load_binary()
2012-11-28 21:53:38 -05:00
binfmt_elf.c
cputime: Use accessors to read task cputime stats
2013-01-27 19:23:31 +01:00
binfmt_elf_fdpic.c
cputime: Use accessors to read task cputime stats
2013-01-27 19:23:31 +01:00
binfmt_em86.c
exec: use -ELOOP for max recursion depth
2012-12-17 17:15:23 -08:00
binfmt_flat.c
get rid of pt_regs argument of ->load_binary()
2012-11-28 21:53:38 -05:00
binfmt_misc.c
exec: do not leave bprm->interp on stack
2012-12-20 17:40:19 -08:00
binfmt_script.c
exec: do not leave bprm->interp on stack
2012-12-20 17:40:19 -08:00
binfmt_som.c
get rid of pt_regs argument of ->load_binary()
2012-11-28 21:53:38 -05:00
bio-integrity.c
block: Ues bi_pool for bio_integrity_alloc()
2012-09-09 10:35:38 +02:00
bio.c
vfs: fix: don't increase bio_slab_max if krealloc() fails
2012-10-22 22:00:26 +02:00
block_dev.c
lseek: the "whence" argument is called "whence"
2012-12-17 17:15:12 -08:00
buffer.c
vfs: add missing virtual cache flush after editing partial pages
2013-01-14 13:17:50 -08:00
char_dev.c
char_dev: pin parent kobject
2012-10-22 08:50:37 +03:00
compat.c
vfs: define struct filename and have getname() return it
2012-10-12 20:14:55 -04:00
compat_binfmt_elf.c
coredump: extend core dump note section to contain file names of mapped files
2012-10-06 03:05:17 +09:00
compat_ioctl.c
Merge 3.7-rc3 into tty-next
2012-10-29 09:00:57 -07:00
coredump.c
do_coredump(): get rid of pt_regs argument
2012-11-29 00:01:25 -05:00
coredump.h
coredump: update coredump-related headers
2012-10-06 03:05:15 +09:00
dcache.c
vfs: d_obtain_alias() needs to use "/" as default name.
2012-12-20 18:49:10 -05:00
dcookies.c
direct-io.c
direct-io: don't read inode->i_blkbits multiple times
2012-11-29 12:38:44 -08:00
drop_caches.c
eventfd.c
fs, eventfd: add procfs fdinfo helper
2012-12-17 17:15:27 -08:00
eventpoll.c
epoll: prevent missed events on EPOLL_CTL_MOD
2013-01-02 09:16:43 -08:00
exec.c
fs/exec.c: work around icc miscompilation
2013-01-11 14:54:55 -08:00
fcntl.c
Fix F_DUPFD_CLOEXEC breakage
2012-10-09 15:52:31 +09:00
fhandle.c
Merge branch 'for-3.8' of git://linux-nfs.org/~bfields/linux
2012-12-20 14:04:11 -08:00
fifo.c
fifo: Do not restart open() if it already found a partner
2012-07-16 08:33:14 -07:00
file.c
misc: remove __dev* attributes.
2013-01-03 15:57:16 -08:00
file_table.c
fs: Fix imbalance in freeze protection in mark_files_ro()
2012-12-20 13:57:36 -05:00
filesystems.c
vfs: define struct filename and have getname() return it
2012-10-12 20:14:55 -04:00
fs-writeback.c
writeback: fix a typo in comment
2012-12-12 17:38:34 -08:00
fs_struct.c
kill daemonize()
2012-11-28 21:49:02 -05:00
generic_acl.c
userns: Pass a userns parameter into posix_acl_to_xattr and posix_acl_from_xattr
2012-09-18 01:01:35 -07:00
inode.c
mm: redefine address_space.assoc_mapping
2012-12-11 17:22:26 -08:00
internal.h
writeback: put unused inodes to LRU after writeback completion
2012-11-26 17:41:24 -08:00
ioctl.c
switch simple cases of fget_light to fdget
2012-09-26 22:20:08 -04:00
ioprio.c
Kconfig
fuse: Move CUSE Kconfig entry from fs/Kconfig into fs/fuse/Kconfig
2013-01-17 13:08:45 +01:00
Kconfig.binfmt
coredump: make core dump functionality optional
2012-10-06 03:05:15 +09:00
libfs.c
vfs: drop vmtruncate
2012-12-20 18:46:29 -05:00
locks.c
UAPI Disintegration 2012-10-09
2012-10-09 18:35:22 -04:00
Makefile
f2fs: update Kconfig and Makefile
2012-12-11 13:43:42 +09:00
mbcache.c
mount.h
proc: Usable inode numbers for the namespace file descriptors.
2012-11-20 04:19:49 -08:00
mpage.c
namei.c
vfs: fix renameat to retry on ESTALE errors
2012-12-20 18:50:05 -05:00
namespace.c
vfs, freeze: use ACCESS_ONCE() to guard access to ->mnt_flags
2012-12-20 13:36:18 -05:00
no-block.c
open.c
vfs: make fchownat retry once on ESTALE errors
2012-12-20 18:50:07 -05:00
pipe.c
pipe(2) - race-free error recovery
2012-09-26 21:08:52 -04:00
pnode.c
VFS: Make clone_mnt()/copy_tree()/collect_mounts() return errors
2012-07-14 16:37:27 +04:00
pnode.h
vfs: Only support slave subtrees across different user namespaces
2012-11-19 05:59:20 -08:00
posix_acl.c
userns: Convert vfs posix_acl support to use kuids and kgids
2012-09-18 01:01:35 -07:00
proc_namespace.c
get rid of magic in proc_namespace.c
2012-07-14 16:32:48 +04:00
read_write.c
sendfile: allows bypassing of notifier events
2012-12-20 17:40:21 -08:00
read_write.h
compat: fs: Generic compat_sys_sendfile implementation
2012-10-02 21:35:55 -04:00
readdir.c
switch simple cases of fget_light to fdget
2012-09-26 22:20:08 -04:00
select.c
switch simple cases of fget_light to fdget
2012-09-26 22:20:08 -04:00
seq_file.c
seq_file: fix new kernel-doc warnings
2013-01-10 14:35:24 -08:00
signalfd.c
fs, epoll: add procfs fdinfo helper
2012-12-17 17:15:27 -08:00
splice.c
tcp: fix MSG_SENDPAGE_NOTLAST logic
2013-01-06 20:58:13 -08:00
stack.c
stat.c
vfs: fix readlinkat to retry on ESTALE
2012-12-20 18:50:01 -05:00
statfs.c
vfs: fix user_statfs to retry once on ESTALE errors
2012-12-20 18:50:07 -05:00
super.c
vfs: drop lock/unlock super
2012-10-09 23:33:39 -04:00
sync.c
switch simple cases of fget_light to fdget
2012-09-26 22:20:08 -04:00
timerfd.c
switch simple cases of fget_light to fdget
2012-09-26 22:20:08 -04:00
utimes.c
vfs: allow utimensat() calls to retry once on an ESTALE error
2012-12-20 18:50:08 -05:00
xattr.c
vfs: make lremovexattr retry once on ESTALE error
2012-12-20 18:50:11 -05:00
xattr_acl.c
userns: Fix posix_acl_file_xattr_userns gid conversion
2012-10-12 13:16:48 -07:00