linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH V2 00/12]blktrace: output cgroup info
@ 2017-06-14 16:11 Shaohua Li
  2017-06-14 16:11 ` [PATCH V2 01/12] kernfs: implement i_generation Shaohua Li
                   ` (11 more replies)
  0 siblings, 12 replies; 15+ messages in thread
From: Shaohua Li @ 2017-06-14 16:11 UTC (permalink / raw)
  To: linux-kernel, linux-block
  Cc: tj, gregkh, hch, axboe, rostedt, lizefan, Kernel-team, Shaohua Li

From: Shaohua Li <shli@fb.com>

Hi,

Currently blktrace isn't cgroup aware. blktrace prints out task name of current
context, but the task of current context isn't always in the cgroup where the
BIO comes from. We can't use task name to find out IO cgroup. For example,
Writeback BIOs always comes from flusher thread but the BIOs are for different
blk cgroups. Request could be requeued and dispatched from completely different
tasks. MD/DM are another examples. This brings challenges if we want to use
blktrace for performance tunning with cgroup enabled.

This patchset try to fix the gap. We print out cgroup fhandle info in blktrace.
Userspace can use open_by_handle_at() syscall to find the cgroup by fhandle. Or
userspace can use name_to_handle_at() syscall to find fhandle for a cgroup and
use a BPF program to filter out blktrace for a specific cgroup.

The first 6 patches adds export operation handlers for kernfs, so userspace can
use open_by_handle_at/name_to_handle_at to a kernfs file. Later patches make
blktrace output cgroup info.

Note, we export 64-bit inode number and 32-bit generation number for fhandle.
Currently kernfs only supports 32-bit inode number actually because idr only
supports 32-bit allocation. We had plan to support 64-bit inode number soon, as
Tejun has concerns the 32-bit inode/generation could wrap easily. This patchset
hasn't converted inode number to 64-bit yet.

Thanks,
Shaohua

V1 -> V2:
- Fix a bug in cgroup association
- Fix build errors reported by 0day
- Address some issues pointed out by Tejun

Shaohua Li (12):
  kernfs: implement i_generation
  kernfs: use idr instead of ida to manage inode number
  kernfs: add an API to get kernfs node from inode number
  kernfs: don't set dentry->d_fsdata
  kernfs: introduce kernfs_node_id
  kernfs: add exportfs operations
  cgroup: export fhandle info for a cgroup
  blktrace: export cgroup info in trace
  block: always attach cgroup info into bio
  block: call __bio_free in bio_endio
  blktrace: add an option to allow displying cgroup path
  block: use standard blktrace API to output cgroup info for debug notes

 arch/x86/kernel/cpu/intel_rdt_rdtgroup.c |   2 +-
 block/bfq-iosched.h                      |  13 +-
 block/bio-integrity.c                    |   1 +
 block/bio.c                              |   2 +
 block/blk-throttle.c                     |  13 +-
 block/cfq-iosched.c                      |  15 +-
 fs/kernfs/dir.c                          | 101 +++++++++---
 fs/kernfs/file.c                         |  10 +-
 fs/kernfs/inode.c                        |   9 +-
 fs/kernfs/kernfs-internal.h              |   9 ++
 fs/kernfs/mount.c                        | 144 +++++++++++++++--
 fs/kernfs/symlink.c                      |   6 +-
 fs/sysfs/mount.c                         |   2 +-
 include/linux/blk-cgroup.h               |  17 +-
 include/linux/blktrace_api.h             |  13 +-
 include/linux/cgroup.h                   |  16 +-
 include/linux/exportfs.h                 |  11 ++
 include/linux/kernfs.h                   |  36 ++++-
 include/uapi/linux/blktrace_api.h        |   3 +
 kernel/cgroup/cgroup.c                   |  15 +-
 kernel/trace/blktrace.c                  | 259 ++++++++++++++++++++++---------
 21 files changed, 523 insertions(+), 174 deletions(-)

-- 
2.9.3

^ permalink raw reply	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2017-06-15 20:15 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-06-14 16:11 [PATCH V2 00/12]blktrace: output cgroup info Shaohua Li
2017-06-14 16:11 ` [PATCH V2 01/12] kernfs: implement i_generation Shaohua Li
2017-06-14 16:12 ` [PATCH V2 02/12] kernfs: use idr instead of ida to manage inode number Shaohua Li
2017-06-14 16:12 ` [PATCH V2 03/12] kernfs: add an API to get kernfs node from " Shaohua Li
2017-06-14 16:12 ` [PATCH V2 04/12] kernfs: don't set dentry->d_fsdata Shaohua Li
2017-06-14 16:12 ` [PATCH V2 05/12] kernfs: introduce kernfs_node_id Shaohua Li
2017-06-15 20:14   ` kbuild test robot
2017-06-14 16:12 ` [PATCH V2 06/12] kernfs: add exportfs operations Shaohua Li
2017-06-14 16:12 ` [PATCH V2 07/12] cgroup: export fhandle info for a cgroup Shaohua Li
2017-06-14 16:12 ` [PATCH V2 08/12] blktrace: export cgroup info in trace Shaohua Li
2017-06-14 16:12 ` [PATCH V2 09/12] block: always attach cgroup info into bio Shaohua Li
2017-06-14 16:12 ` [PATCH V2 10/12] block: call __bio_free in bio_endio Shaohua Li
2017-06-14 16:12 ` [PATCH V2 11/12] blktrace: add an option to allow displying cgroup path Shaohua Li
2017-06-14 16:12 ` [PATCH V2 12/12] block: use standard blktrace API to output cgroup info for debug notes Shaohua Li
2017-06-15 13:56   ` kbuild test robot

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).