)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"693778a0250125399ba5271c1ba1b4118690ee07","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"9531ffaf_ad0d1b1d","updated":"2022-06-17 11:17:16.000000000","message":"I have tried the tool while looking at the memory consumption and it\u0027s convenient.","commit_id":"64df92fff396444ad85442bfa878fd7c2fa0f64f"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"c9544569bb855a02d7f88f7ad7c0123862a11a7b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"6122f04d_05e78487","updated":"2022-06-21 13:57:32.000000000","message":"recheck clearly not related","commit_id":"970bbe0dc7a6a38328abc75c8198fd2af7c49a1a"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"73f88b6ddd3c4525d805f250d7d23c1e192efc2b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"5ae83739_0f7ff586","updated":"2022-06-23 14:48:33.000000000","message":"recheck stream9 job now disabled","commit_id":"970bbe0dc7a6a38328abc75c8198fd2af7c49a1a"}],"tools/perftop.py":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"693778a0250125399ba5271c1ba1b4118690ee07","unresolved":true,"context_lines":[{"line_number":20,"context_line":"    total \u003d 0"},{"line_number":21,"context_line":"    for mem, thing in reversed(sorted(services + procs)):"},{"line_number":22,"context_line":"        pt.add_row([mem \u003e\u003e 20, thing])"},{"line_number":23,"context_line":"        total +\u003d int(mem)"},{"line_number":24,"context_line":"        count +\u003d 1"},{"line_number":25,"context_line":"        if count \u003e\u003d top:"},{"line_number":26,"context_line":"            break"}],"source_content_type":"text/x-python","patch_set":1,"id":"d7d8f671_2ec70fd6","line":23,"range":{"start_line":23,"start_character":8,"end_line":23,"end_character":25},"updated":"2022-06-17 11:17:16.000000000","message":"I think total is an interesting value in itself, so it would be convenient to be able to get it with, or without memory top.\n\nI have this patch locally with a --total argument to enable the total to be displayed independently.  Helpful to compare full runs across time (for example when we change Python version).","commit_id":"64df92fff396444ad85442bfa878fd7c2fa0f64f"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"1af06614d8a654c1379cb7a4501b7577531103d3","unresolved":false,"context_lines":[{"line_number":20,"context_line":"    total \u003d 0"},{"line_number":21,"context_line":"    for mem, thing in reversed(sorted(services + procs)):"},{"line_number":22,"context_line":"        pt.add_row([mem \u003e\u003e 20, thing])"},{"line_number":23,"context_line":"        total +\u003d int(mem)"},{"line_number":24,"context_line":"        count +\u003d 1"},{"line_number":25,"context_line":"        if count \u003e\u003d top:"},{"line_number":26,"context_line":"            break"}],"source_content_type":"text/x-python","patch_set":1,"id":"2f279a4e_ae03194e","line":23,"range":{"start_line":23,"start_character":8,"end_line":23,"end_character":25},"in_reply_to":"d7d8f671_2ec70fd6","updated":"2022-06-17 14:51:28.000000000","message":"Ack, I made this include total always in the table, but feel free to push on top of this (or another patch) if you also want it out of table format.","commit_id":"64df92fff396444ad85442bfa878fd7c2fa0f64f"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"693778a0250125399ba5271c1ba1b4118690ee07","unresolved":true,"context_lines":[{"line_number":31,"context_line":"    print(pt)"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"def do_db(data, top):"},{"line_number":35,"context_line":"    pt \u003d prettytable.PrettyTable([\u0027db\u0027, \u0027op\u0027, \u0027count\u0027])"},{"line_number":36,"context_line":"    count \u003d 0"},{"line_number":37,"context_line":"    for db in reversed(sorted(data[\u0027db\u0027], key\u003dlambda d: d[\u0027count\u0027])):"}],"source_content_type":"text/x-python","patch_set":1,"id":"55d33133_eaa2f917","line":34,"updated":"2022-06-17 11:17:16.000000000","message":"Similarly we may want to know who is the one making most of the requests (grouping by by db).","commit_id":"64df92fff396444ad85442bfa878fd7c2fa0f64f"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"1af06614d8a654c1379cb7a4501b7577531103d3","unresolved":true,"context_lines":[{"line_number":31,"context_line":"    print(pt)"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"def do_db(data, top):"},{"line_number":35,"context_line":"    pt \u003d prettytable.PrettyTable([\u0027db\u0027, \u0027op\u0027, \u0027count\u0027])"},{"line_number":36,"context_line":"    count \u003d 0"},{"line_number":37,"context_line":"    for db in reversed(sorted(data[\u0027db\u0027], key\u003dlambda d: d[\u0027count\u0027])):"}],"source_content_type":"text/x-python","patch_set":1,"id":"b61a1964_be6de3e3","line":34,"in_reply_to":"55d33133_eaa2f917","updated":"2022-06-17 14:51:28.000000000","message":"We don\u0027t really now which sub-service is making the db requests at the moment. Did you mean show the biggest single line per db? Or did you mean just have an option to combine all of them into one line per db?\n\nWe could probably scrape out argv[0] in the dbcounter to get the binary name of a sub-service that is making a call I guess, but we don\u0027t have that info today.","commit_id":"64df92fff396444ad85442bfa878fd7c2fa0f64f"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"693778a0250125399ba5271c1ba1b4118690ee07","unresolved":true,"context_lines":[{"line_number":58,"context_line":"        count +\u003d 1"},{"line_number":59,"context_line":"        if count \u003e\u003d top:"},{"line_number":60,"context_line":"            break"},{"line_number":61,"context_line":"    print(pt)"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"def main():"}],"source_content_type":"text/x-python","patch_set":1,"id":"e9fb20dd_ef0ae97e","line":61,"updated":"2022-06-17 11:17:16.000000000","message":"This shows the service that is getting most of the API requests and who is making them, and I think we may additionally want to know who is the one making more requests (grouping by client identifier).","commit_id":"64df92fff396444ad85442bfa878fd7c2fa0f64f"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"1af06614d8a654c1379cb7a4501b7577531103d3","unresolved":true,"context_lines":[{"line_number":58,"context_line":"        count +\u003d 1"},{"line_number":59,"context_line":"        if count \u003e\u003d top:"},{"line_number":60,"context_line":"            break"},{"line_number":61,"context_line":"    print(pt)"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"def main():"}],"source_content_type":"text/x-python","patch_set":1,"id":"2fead9cc_92fee7ea","line":61,"in_reply_to":"e9fb20dd_ef0ae97e","updated":"2022-06-17 14:51:28.000000000","message":"Ack, it\u0027s not really all that good at knowing who it is (like every service consuming glance will be listed as glanceclient). But, I added this.","commit_id":"64df92fff396444ad85442bfa878fd7c2fa0f64f"}]}
