![Balbir Singh](/assets/img/avatar_default.png)
This patch is inspired by the discussion at http://lkml.org/lkml/2007/4/11/187 and implements per cgroup statistics as suggested by Andrew Morton in http://lkml.org/lkml/2007/4/11/263. The patch is on top of 2.6.21-mm1 with Paul's cgroups v9 patches (forward ported) This patch implements per cgroup statistics infrastructure and re-uses code from the taskstats interface. A new set of cgroup operations are registered with commands and attributes. It should be very easy to *extend* per cgroup statistics, by adding members to the cgroupstats structure. The current model for cgroupstats is a pull, a push model (to post statistics on interesting events), should be very easy to add. Currently user space requests for statistics by passing the cgroup file descriptor. Statistics about the state of all the tasks in the cgroup is returned to user space. TODO's/NOTE: This patch provides an infrastructure for implementing cgroup statistics. Based on the needs of each controller, we can incrementally add more statistics, event based support for notification of statistics, accumulation of taskstats into cgroup statistics in the future. Sample output # ./cgroupstats -C /cgroup/a sleeping 2, blocked 0, running 1, stopped 0, uninterruptible 0 # ./cgroupstats -C /cgroup/ sleeping 154, blocked 0, running 0, stopped 0, uninterruptible 0 If the approach looks good, I'll enhance and post the user space utility for the same Feedback, comments, test results are always welcome! [akpm@linux-foundation.org: build fix] Signed-off-by: Balbir Singh <balbir@linux.vnet.ibm.com> Cc: Paul Menage <menage@google.com> Cc: Jay Lan <jlan@engr.sgi.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
352 lines
7.5 KiB
Makefile
352 lines
7.5 KiB
Makefile
header-y += byteorder/
|
|
header-y += dvb/
|
|
header-y += hdlc/
|
|
header-y += isdn/
|
|
header-y += nfsd/
|
|
header-y += raid/
|
|
header-y += spi/
|
|
header-y += sunrpc/
|
|
header-y += tc_act/
|
|
header-y += tc_ematch/
|
|
header-y += netfilter/
|
|
header-y += netfilter_arp/
|
|
header-y += netfilter_bridge/
|
|
header-y += netfilter_ipv4/
|
|
header-y += netfilter_ipv6/
|
|
header-y += usb/
|
|
|
|
header-y += affs_hardblocks.h
|
|
header-y += aio_abi.h
|
|
header-y += a.out.h
|
|
header-y += arcfb.h
|
|
header-y += atmapi.h
|
|
header-y += atmbr2684.h
|
|
header-y += atmclip.h
|
|
header-y += atm_eni.h
|
|
header-y += atm_he.h
|
|
header-y += atm_idt77105.h
|
|
header-y += atmioc.h
|
|
header-y += atmlec.h
|
|
header-y += atmmpc.h
|
|
header-y += atm_nicstar.h
|
|
header-y += atmppp.h
|
|
header-y += atmsap.h
|
|
header-y += atmsvc.h
|
|
header-y += atm_zatm.h
|
|
header-y += auto_fs4.h
|
|
header-y += auxvec.h
|
|
header-y += ax25.h
|
|
header-y += b1lli.h
|
|
header-y += baycom.h
|
|
header-y += bfs_fs.h
|
|
header-y += blkpg.h
|
|
header-y += bpqether.h
|
|
header-y += cdk.h
|
|
header-y += chio.h
|
|
header-y += coda_psdev.h
|
|
header-y += coff.h
|
|
header-y += comstats.h
|
|
header-y += const.h
|
|
header-y += cgroupstats.h
|
|
header-y += cycx_cfm.h
|
|
header-y += dlm_device.h
|
|
header-y += dlm_netlink.h
|
|
header-y += dm-ioctl.h
|
|
header-y += dn.h
|
|
header-y += dqblk_v1.h
|
|
header-y += dqblk_v2.h
|
|
header-y += dqblk_xfs.h
|
|
header-y += efs_fs_sb.h
|
|
header-y += elf-fdpic.h
|
|
header-y += elf.h
|
|
header-y += elf-em.h
|
|
header-y += fadvise.h
|
|
header-y += fd.h
|
|
header-y += fdreg.h
|
|
header-y += fib_rules.h
|
|
header-y += firewire-cdev.h
|
|
header-y += firewire-constants.h
|
|
header-y += fuse.h
|
|
header-y += genetlink.h
|
|
header-y += gen_stats.h
|
|
header-y += gigaset_dev.h
|
|
header-y += hdsmart.h
|
|
header-y += hysdn_if.h
|
|
header-y += i2c-dev.h
|
|
header-y += i8k.h
|
|
header-y += if_arcnet.h
|
|
header-y += if_bonding.h
|
|
header-y += if_cablemodem.h
|
|
header-y += if_fc.h
|
|
header-y += if.h
|
|
header-y += if_hippi.h
|
|
header-y += if_infiniband.h
|
|
header-y += if_packet.h
|
|
header-y += if_plip.h
|
|
header-y += if_ppp.h
|
|
header-y += if_slip.h
|
|
header-y += if_strip.h
|
|
header-y += if_tunnel.h
|
|
header-y += in6.h
|
|
header-y += in_route.h
|
|
header-y += ioctl.h
|
|
header-y += ipmi_msgdefs.h
|
|
header-y += ipsec.h
|
|
header-y += ipx.h
|
|
header-y += irda.h
|
|
header-y += iso_fs.h
|
|
header-y += ixjuser.h
|
|
header-y += jffs2.h
|
|
header-y += keyctl.h
|
|
header-y += kvm.h
|
|
header-y += limits.h
|
|
header-y += lock_dlm_plock.h
|
|
header-y += magic.h
|
|
header-y += major.h
|
|
header-y += matroxfb.h
|
|
header-y += meye.h
|
|
header-y += minix_fs.h
|
|
header-y += mmtimer.h
|
|
header-y += mqueue.h
|
|
header-y += mtio.h
|
|
header-y += ncp_no.h
|
|
header-y += neighbour.h
|
|
header-y += netfilter_arp.h
|
|
header-y += netrom.h
|
|
header-y += nfs2.h
|
|
header-y += nfs4_mount.h
|
|
header-y += nfs_mount.h
|
|
header-y += nl80211.h
|
|
header-y += oom.h
|
|
header-y += param.h
|
|
header-y += pci_regs.h
|
|
header-y += pfkeyv2.h
|
|
header-y += pg.h
|
|
header-y += phantom.h
|
|
header-y += pkt_cls.h
|
|
header-y += pkt_sched.h
|
|
header-y += posix_types.h
|
|
header-y += ppdev.h
|
|
header-y += prctl.h
|
|
header-y += ps2esdi.h
|
|
header-y += qnxtypes.h
|
|
header-y += quotaio_v1.h
|
|
header-y += quotaio_v2.h
|
|
header-y += radeonfb.h
|
|
header-y += raw.h
|
|
header-y += resource.h
|
|
header-y += rose.h
|
|
header-y += serial_reg.h
|
|
header-y += smbno.h
|
|
header-y += snmp.h
|
|
header-y += sockios.h
|
|
header-y += som.h
|
|
header-y += sound.h
|
|
header-y += taskstats.h
|
|
header-y += telephony.h
|
|
header-y += termios.h
|
|
header-y += ticable.h
|
|
header-y += times.h
|
|
header-y += tiocl.h
|
|
header-y += tipc.h
|
|
header-y += toshiba.h
|
|
header-y += ultrasound.h
|
|
header-y += un.h
|
|
header-y += utime.h
|
|
header-y += video_decoder.h
|
|
header-y += video_encoder.h
|
|
header-y += videotext.h
|
|
header-y += vt.h
|
|
header-y += x25.h
|
|
|
|
unifdef-y += acct.h
|
|
unifdef-y += adb.h
|
|
unifdef-y += adfs_fs.h
|
|
unifdef-y += agpgart.h
|
|
unifdef-y += apm_bios.h
|
|
unifdef-y += atalk.h
|
|
unifdef-y += atmarp.h
|
|
unifdef-y += atmdev.h
|
|
unifdef-y += atm.h
|
|
unifdef-y += atm_tcp.h
|
|
unifdef-y += audit.h
|
|
unifdef-y += auto_fs.h
|
|
unifdef-y += binfmts.h
|
|
unifdef-y += capability.h
|
|
unifdef-y += capi.h
|
|
unifdef-y += cciss_ioctl.h
|
|
unifdef-y += cdrom.h
|
|
unifdef-y += cm4000_cs.h
|
|
unifdef-y += cn_proc.h
|
|
unifdef-y += coda.h
|
|
unifdef-y += connector.h
|
|
unifdef-y += cramfs_fs.h
|
|
unifdef-y += cuda.h
|
|
unifdef-y += cyclades.h
|
|
unifdef-y += dccp.h
|
|
unifdef-y += dirent.h
|
|
unifdef-y += dlm.h
|
|
unifdef-y += elfcore.h
|
|
unifdef-y += errno.h
|
|
unifdef-y += errqueue.h
|
|
unifdef-y += ethtool.h
|
|
unifdef-y += eventpoll.h
|
|
unifdef-y += signalfd.h
|
|
unifdef-y += ext2_fs.h
|
|
unifdef-y += ext3_fs.h
|
|
unifdef-y += fb.h
|
|
unifdef-y += fcntl.h
|
|
unifdef-y += filter.h
|
|
unifdef-y += flat.h
|
|
unifdef-y += futex.h
|
|
unifdef-y += fs.h
|
|
unifdef-y += gameport.h
|
|
unifdef-y += generic_serial.h
|
|
unifdef-y += genhd.h
|
|
unifdef-y += gfs2_ondisk.h
|
|
unifdef-y += hayesesp.h
|
|
unifdef-y += hdlcdrv.h
|
|
unifdef-y += hdlc.h
|
|
unifdef-y += hdreg.h
|
|
unifdef-y += hiddev.h
|
|
unifdef-y += hpet.h
|
|
unifdef-y += i2c.h
|
|
unifdef-y += i2o-dev.h
|
|
unifdef-y += icmp.h
|
|
unifdef-y += icmpv6.h
|
|
unifdef-y += if_addr.h
|
|
unifdef-y += if_arp.h
|
|
unifdef-y += if_bridge.h
|
|
unifdef-y += if_ec.h
|
|
unifdef-y += if_eql.h
|
|
unifdef-y += if_ether.h
|
|
unifdef-y += if_fddi.h
|
|
unifdef-y += if_frad.h
|
|
unifdef-y += if_ltalk.h
|
|
unifdef-y += if_link.h
|
|
unifdef-y += if_pppol2tp.h
|
|
unifdef-y += if_pppox.h
|
|
unifdef-y += if_shaper.h
|
|
unifdef-y += if_tr.h
|
|
unifdef-y += if_tun.h
|
|
unifdef-y += if_vlan.h
|
|
unifdef-y += if_wanpipe.h
|
|
unifdef-y += igmp.h
|
|
unifdef-y += inet_diag.h
|
|
unifdef-y += in.h
|
|
unifdef-y += inotify.h
|
|
unifdef-y += input.h
|
|
unifdef-y += ip.h
|
|
unifdef-y += ipc.h
|
|
unifdef-y += ipmi.h
|
|
unifdef-y += ipv6.h
|
|
unifdef-y += ipv6_route.h
|
|
unifdef-y += ip6_tunnel.h
|
|
unifdef-y += isdn.h
|
|
unifdef-y += isdnif.h
|
|
unifdef-y += isdn_divertif.h
|
|
unifdef-y += isdn_ppp.h
|
|
unifdef-y += jbd.h
|
|
unifdef-y += joystick.h
|
|
unifdef-y += kdev_t.h
|
|
unifdef-y += kd.h
|
|
unifdef-y += kernelcapi.h
|
|
unifdef-y += kernel.h
|
|
unifdef-y += keyboard.h
|
|
unifdef-y += llc.h
|
|
unifdef-y += loop.h
|
|
unifdef-y += lp.h
|
|
unifdef-y += mempolicy.h
|
|
unifdef-y += mii.h
|
|
unifdef-y += mman.h
|
|
unifdef-y += mroute.h
|
|
unifdef-y += msdos_fs.h
|
|
unifdef-y += msg.h
|
|
unifdef-y += nbd.h
|
|
unifdef-y += ncp_fs.h
|
|
unifdef-y += ncp.h
|
|
unifdef-y += ncp_mount.h
|
|
unifdef-y += netdevice.h
|
|
unifdef-y += netfilter_bridge.h
|
|
unifdef-y += netfilter_decnet.h
|
|
unifdef-y += netfilter.h
|
|
unifdef-y += netfilter_ipv4.h
|
|
unifdef-y += netfilter_ipv6.h
|
|
unifdef-y += net.h
|
|
unifdef-y += netlink.h
|
|
unifdef-y += nfs3.h
|
|
unifdef-y += nfs4.h
|
|
unifdef-y += nfsacl.h
|
|
unifdef-y += nfs_fs.h
|
|
unifdef-y += nfs.h
|
|
unifdef-y += nfs_idmap.h
|
|
unifdef-y += n_r3964.h
|
|
unifdef-y += nubus.h
|
|
unifdef-y += nvram.h
|
|
unifdef-y += oom.h
|
|
unifdef-y += parport.h
|
|
unifdef-y += patchkey.h
|
|
unifdef-y += pci.h
|
|
unifdef-y += personality.h
|
|
unifdef-y += pktcdvd.h
|
|
unifdef-y += pmu.h
|
|
unifdef-y += poll.h
|
|
unifdef-y += ppp_defs.h
|
|
unifdef-y += ppp-comp.h
|
|
unifdef-y += ptrace.h
|
|
unifdef-y += qnx4_fs.h
|
|
unifdef-y += quota.h
|
|
unifdef-y += random.h
|
|
unifdef-y += reboot.h
|
|
unifdef-y += reiserfs_fs.h
|
|
unifdef-y += reiserfs_xattr.h
|
|
unifdef-y += romfs_fs.h
|
|
unifdef-y += route.h
|
|
unifdef-y += rtc.h
|
|
unifdef-y += rtnetlink.h
|
|
unifdef-y += scc.h
|
|
unifdef-y += sched.h
|
|
unifdef-y += sdla.h
|
|
unifdef-y += selinux_netlink.h
|
|
unifdef-y += sem.h
|
|
unifdef-y += serial_core.h
|
|
unifdef-y += serial.h
|
|
unifdef-y += serio.h
|
|
unifdef-y += shm.h
|
|
unifdef-y += signal.h
|
|
unifdef-y += smb_fs.h
|
|
unifdef-y += smb.h
|
|
unifdef-y += smb_mount.h
|
|
unifdef-y += socket.h
|
|
unifdef-y += sonet.h
|
|
unifdef-y += sonypi.h
|
|
unifdef-y += soundcard.h
|
|
unifdef-y += stat.h
|
|
unifdef-y += stddef.h
|
|
unifdef-y += synclink.h
|
|
unifdef-y += sysctl.h
|
|
unifdef-y += tcp.h
|
|
unifdef-y += time.h
|
|
unifdef-y += timex.h
|
|
unifdef-y += tty.h
|
|
unifdef-y += types.h
|
|
unifdef-y += udf_fs_i.h
|
|
unifdef-y += udp.h
|
|
unifdef-y += ufs_fs.h
|
|
unifdef-y += uinput.h
|
|
unifdef-y += uio.h
|
|
unifdef-y += unistd.h
|
|
unifdef-y += usbdevice_fs.h
|
|
unifdef-y += user.h
|
|
unifdef-y += utsname.h
|
|
unifdef-y += videodev2.h
|
|
unifdef-y += videodev.h
|
|
unifdef-y += wait.h
|
|
unifdef-y += wanrouter.h
|
|
unifdef-y += watchdog.h
|
|
unifdef-y += wireless.h
|
|
unifdef-y += xattr.h
|
|
unifdef-y += xfrm.h
|
|
|
|
objhdr-y += version.h
|