[1/3] iocost_monitor: fix kernel queue kobj changes

Message ID 20230804065039.8885-1-chengming.zhou@linux.dev
State New
Headers
Series [1/3] iocost_monitor: fix kernel queue kobj changes |

Commit Message

Chengming Zhou Aug. 4, 2023, 6:50 a.m. UTC
  From: Chengming Zhou <zhouchengming@bytedance.com>

When I use iocost_monitor on nvme0n1, this error shows up:
"Could not find ioc for nvme0n1"

There is no kobj in struct queue in recent kernel, it seems that the commit
2bd85221a625 ("block: untangle request_queue refcounting from sysfs")
move the queue kobj to struct gendisk.

Fix it by using mq_kobj which is at the same level with queue kobj.

Signed-off-by: Chengming Zhou <zhouchengming@bytedance.com>
---
 tools/cgroup/iocost_monitor.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
  

Comments

Jens Axboe Aug. 8, 2023, 9:46 p.m. UTC | #1
On Fri, 04 Aug 2023 14:50:37 +0800, chengming.zhou@linux.dev wrote:
> When I use iocost_monitor on nvme0n1, this error shows up:
> "Could not find ioc for nvme0n1"
> 
> There is no kobj in struct queue in recent kernel, it seems that the commit
> 2bd85221a625 ("block: untangle request_queue refcounting from sysfs")
> move the queue kobj to struct gendisk.
> 
> [...]

Applied, thanks!

[1/3] iocost_monitor: fix kernel queue kobj changes
      commit: 2eae9c4912b6cfdfadcd4fa8ac26879e18a504a1
[2/3] iocost_monitor: print vrate inuse along with base_vrate
      commit: 8e93c1acd15e6a754c19ef12f6e69641f37e267a
[3/3] iocost_monitor: improve it by adding iocg wait_ms
      commit: 68392b002023cb6dadd3d5044268470a7201b313

Best regards,
  

Patch

diff --git a/tools/cgroup/iocost_monitor.py b/tools/cgroup/iocost_monitor.py
index 0dbbc67400fc..7aa076cb559e 100644
--- a/tools/cgroup/iocost_monitor.py
+++ b/tools/cgroup/iocost_monitor.py
@@ -221,7 +221,7 @@  ioc = None
 for i, ptr in radix_tree_for_each(blkcg_root.blkg_tree.address_of_()):
     blkg = drgn.Object(prog, 'struct blkcg_gq', address=ptr)
     try:
-        if devname == blkg.q.kobj.parent.name.string_().decode('utf-8'):
+        if devname == blkg.q.mq_kobj.parent.name.string_().decode('utf-8'):
             q_id = blkg.q.id.value_()
             if blkg.pd[plid]:
                 root_iocg = container_of(blkg.pd[plid], 'struct ioc_gq', 'pd')