Skip to content

Commit 1f1696a

Browse files
authored
Add all parameter to show/clear queue watermark command (sonic-net#1149)
Signed-off-by: Petro Bratash [email protected] Depends on sonic-net/sonic-swss#1653 - What I did Add new commands : show queue persistent-watermark all show queue watermark all sonic-clear queue watermark all sonic-clear queue persistent-watermark all - How I did it Add q_shared_all type to watermarkstat file - How to verify it Execute: show queue persistent-watermark all show queue watermark all sonic-clear queue watermark all sonic-clear queue persistent-watermark all
1 parent 1ee04fb commit 1f1696a

File tree

6 files changed

+288
-9
lines changed

6 files changed

+288
-9
lines changed

clear/main.py

+11
Original file line numberDiff line numberDiff line change
@@ -272,6 +272,12 @@ def clear_wm_q_multi():
272272
command = 'watermarkstat -c -t q_shared_multi'
273273
run_command(command)
274274

275+
@watermark.command('all')
276+
def clear_wm_q_all():
277+
"""Clear user WM for all queues"""
278+
command = 'watermarkstat -c -t q_shared_all'
279+
run_command(command)
280+
275281
@queue.group(name='persistent-watermark')
276282
def persistent_watermark():
277283
"""Clear queue persistent WM. One does not simply clear WM, root is required"""
@@ -290,6 +296,11 @@ def clear_pwm_q_multi():
290296
command = 'watermarkstat -c -p -t q_shared_multi'
291297
run_command(command)
292298

299+
@persistent_watermark.command('all')
300+
def clear_pwm_q_all():
301+
"""Clear persistent WM for all queues"""
302+
command = 'watermarkstat -c -p -t q_shared_all'
303+
run_command(command)
293304

294305
@cli.group(name='headroom-pool')
295306
def headroom_pool():

scripts/watermarkstat

+18-5
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ class Watermarkstat(object):
6363
def __init__(self):
6464
self.counters_db = SonicV2Connector(use_unix_socket_path=False)
6565
self.counters_db.connect(self.counters_db.COUNTERS_DB)
66-
66+
6767
# connect APP DB for clear notifications
6868
self.app_db = SonicV2Connector(use_unix_socket_path=False)
6969
self.app_db.connect(self.counters_db.APPL_DB)
@@ -107,12 +107,14 @@ class Watermarkstat(object):
107107

108108
self.port_uc_queues_map = {}
109109
self.port_mc_queues_map = {}
110+
self.port_all_queues_map = {}
110111
self.port_pg_map = {}
111112
self.port_name_map = {}
112113

113114
for port in self.counter_port_name_map:
114115
self.port_uc_queues_map[port] = {}
115116
self.port_mc_queues_map[port] = {}
117+
self.port_all_queues_map[port] = {}
116118
self.port_pg_map[port] = {}
117119
self.port_name_map[self.counter_port_name_map[port]] = port
118120

@@ -130,6 +132,9 @@ class Watermarkstat(object):
130132
elif get_queue_type(counter_queue_name_map[queue]) == QUEUE_TYPE_MC:
131133
self.port_mc_queues_map[port][queue] = counter_queue_name_map[queue]
132134

135+
elif get_queue_type(counter_queue_name_map[queue]) == QUEUE_TYPE_ALL:
136+
self.port_all_queues_map[port][queue] = counter_queue_name_map[queue]
137+
133138
# Get PGs for each port
134139
counter_pg_name_map = self.counters_db.get_all(self.counters_db.COUNTERS_DB, COUNTERS_PG_NAME_MAP)
135140
if counter_pg_name_map is None:
@@ -167,6 +172,11 @@ class Watermarkstat(object):
167172
"idx_func": self.get_queue_index,
168173
"wm_name" : "SAI_QUEUE_STAT_SHARED_WATERMARK_BYTES",
169174
"header_prefix": "MC"},
175+
"q_shared_all": {"message" : "Egress shared pool occupancy per all queues:",
176+
"obj_map" : self.port_all_queues_map,
177+
"idx_func": self.get_queue_index,
178+
"wm_name" : "SAI_QUEUE_STAT_SHARED_WATERMARK_BYTES",
179+
"header_prefix": "ALL"},
170180
"buffer_pool" : {"message": "Shared pool maximum occupancy:",
171181
"wm_name": "SAI_BUFFER_POOL_STAT_WATERMARK_BYTES",
172182
"header" : headerBufferPool},
@@ -271,6 +281,9 @@ def main():
271281
Examples:
272282
watermarkstat -t pg_headroom
273283
watermarkstat -t pg_shared
284+
watermarkstat -t q_shared_all
285+
watermarkstat -p -t q_shared_all
286+
watermarkstat -t q_shared_all -c
274287
watermarkstat -t q_shared_uni -c
275288
watermarkstat -t q_shared_multi -c
276289
watermarkstat -p -t pg_shared
@@ -283,17 +296,17 @@ Examples:
283296
parser.add_argument('-c', '--clear', action='store_true', help='Clear watermarks request')
284297
parser.add_argument('-p', '--persistent', action='store_true', help='Do the operations on the persistent watermark')
285298
parser.add_argument('-t', '--type', required=True, action='store',
286-
choices=['pg_headroom', 'pg_shared', 'q_shared_uni', 'q_shared_multi', 'buffer_pool', 'headroom_pool'],
299+
choices=['pg_headroom', 'pg_shared', 'q_shared_uni', 'q_shared_multi', 'buffer_pool', 'headroom_pool', 'q_shared_all'],
287300
help='The type of watermark')
288301
parser.add_argument('-v', '--version', action='version', version='%(prog)s 1.0')
289302
args = parser.parse_args()
290303
watermarkstat = Watermarkstat()
291-
304+
292305
if args.clear:
293306
watermarkstat.send_clear_notification(("PERSISTENT" if args.persistent else "USER", args.type.upper()))
294307
sys.exit(0)
295-
296-
table_prefix = PERSISTENT_TABLE_PREFIX if args.persistent else USER_TABLE_PREFIX
308+
309+
table_prefix = PERSISTENT_TABLE_PREFIX if args.persistent else USER_TABLE_PREFIX
297310
watermarkstat.print_all_stat(table_prefix, args.type)
298311
sys.exit(0)
299312

show/main.py

+13
Original file line numberDiff line numberDiff line change
@@ -556,6 +556,13 @@ def wm_q_multi():
556556
command = 'watermarkstat -t q_shared_multi'
557557
run_command(command)
558558

559+
# 'all' subcommand ("show queue watermarks all")
560+
@watermark.command('all')
561+
def wm_q_all():
562+
"""Show user WM for all queues"""
563+
command = 'watermarkstat -t q_shared_all'
564+
run_command(command)
565+
559566
#
560567
# 'persistent-watermarks' subgroup ("show queue persistent-watermarks ...")
561568
#
@@ -579,6 +586,12 @@ def pwm_q_multi():
579586
command = 'watermarkstat -p -t q_shared_multi'
580587
run_command(command)
581588

589+
# 'all' subcommand ("show queue persistent-watermarks all")
590+
@persistent_watermark.command('all')
591+
def pwm_q_all():
592+
"""Show persistent WM for all queues"""
593+
command = 'watermarkstat -p -t q_shared_all'
594+
run_command(command)
582595

583596
#
584597
# 'priority-group' group ("show priority-group ...")

0 commit comments

Comments
 (0)