Skip to content

Commit cadf28f

Browse files
committed
Revert "Add support for headroom pool watermark (sonic-net#1453)"
This reverts commit 599ed41.
1 parent 5859499 commit cadf28f

File tree

4 files changed

+55
-73
lines changed

4 files changed

+55
-73
lines changed

orchagent/bufferorch.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ extern sai_object_id_t gSwitchId;
2323
static const vector<sai_buffer_pool_stat_t> bufferPoolWatermarkStatIds =
2424
{
2525
SAI_BUFFER_POOL_STAT_WATERMARK_BYTES,
26-
SAI_BUFFER_POOL_STAT_XOFF_ROOM_WATERMARK_BYTES
2726
};
2827

2928
type_map BufferOrch::m_buffer_type_maps = {

orchagent/watermark_bufferpool.lua

Lines changed: 39 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -12,46 +12,51 @@ local persistent_table_name = 'PERSISTENT_WATERMARKS'
1212
local periodic_table_name = 'PERIODIC_WATERMARKS'
1313

1414
local sai_buffer_pool_watermark_stat_name = 'SAI_BUFFER_POOL_STAT_WATERMARK_BYTES'
15-
local sai_hdrm_pool_watermark_stat_name = 'SAI_BUFFER_POOL_STAT_XOFF_ROOM_WATERMARK_BYTES'
1615

17-
local rets = redis.call('SELECT', counters_db)
16+
local rets = {}
17+
18+
redis.call('SELECT', counters_db)
1819

1920
-- Iterate through each buffer pool oid
2021
local n = table.getn(KEYS)
2122
for i = n, 1, -1 do
2223
-- Get new watermark value from COUNTERS
23-
local buffer_pool_wm = redis.call('HGET', counters_table_name .. ':' .. KEYS[i], sai_buffer_pool_watermark_stat_name)
24-
local hdrm_pool_wm = redis.call('HGET', counters_table_name .. ':' .. KEYS[i], sai_hdrm_pool_watermark_stat_name)
25-
26-
-- Get last value from *_WATERMARKS
27-
local user_buffer_pool_wm = redis.call('HGET', user_table_name .. ':' .. KEYS[i], sai_buffer_pool_watermark_stat_name)
28-
local persistent_buffer_pool_wm = redis.call('HGET', persistent_table_name .. ':' .. KEYS[i], sai_buffer_pool_watermark_stat_name)
29-
local periodic_buffer_pool_wm = redis.call('HGET', periodic_table_name .. ':' .. KEYS[i], sai_buffer_pool_watermark_stat_name)
30-
31-
local user_hdrm_pool_wm = redis.call('HGET', user_table_name .. ':' .. KEYS[i], sai_hdrm_pool_watermark_stat_name)
32-
local persistent_hdrm_pool_wm = redis.call('HGET', persistent_table_name .. ':' .. KEYS[i], sai_hdrm_pool_watermark_stat_name)
33-
local periodic_hdrm_pool_wm = redis.call('HGET', periodic_table_name .. ':' .. KEYS[i], sai_hdrm_pool_watermark_stat_name)
34-
35-
if buffer_pool_wm then
36-
buffer_pool_wm = tonumber(buffer_pool_wm)
37-
38-
redis.call('HSET', user_table_name .. ':' .. KEYS[i], sai_buffer_pool_watermark_stat_name,
39-
user_buffer_pool_wm and math.max(buffer_pool_wm, user_buffer_pool_wm) or buffer_pool_wm)
40-
redis.call('HSET', persistent_table_name .. ':' .. KEYS[i], sai_buffer_pool_watermark_stat_name,
41-
persistent_buffer_pool_wm and math.max(buffer_pool_wm, persistent_buffer_pool_wm) or buffer_pool_wm)
42-
redis.call('HSET', periodic_table_name .. ':' .. KEYS[i], sai_buffer_pool_watermark_stat_name,
43-
periodic_buffer_pool_wm and math.max(buffer_pool_wm, periodic_buffer_pool_wm) or buffer_pool_wm)
44-
end
45-
46-
if hdrm_pool_wm then
47-
hdrm_pool_wm = tonumber(hdrm_pool_wm)
48-
49-
redis.call('HSET', user_table_name .. ':' .. KEYS[i], sai_hdrm_pool_watermark_stat_name,
50-
user_hdrm_pool_wm and math.max(hdrm_pool_wm, user_hdrm_pool_wm) or hdrm_pool_wm)
51-
redis.call('HSET', persistent_table_name .. ':' .. KEYS[i], sai_hdrm_pool_watermark_stat_name,
52-
persistent_hdrm_pool_wm and math.max(hdrm_pool_wm, persistent_hdrm_pool_wm) or hdrm_pool_wm)
53-
redis.call('HSET', periodic_table_name .. ':' .. KEYS[i], sai_hdrm_pool_watermark_stat_name,
54-
periodic_hdrm_pool_wm and math.max(hdrm_pool_wm, periodic_hdrm_pool_wm) or hdrm_pool_wm)
24+
local wm = redis.call('HGET', counters_table_name .. ':' .. KEYS[i], sai_buffer_pool_watermark_stat_name)
25+
if wm then
26+
wm = tonumber(wm)
27+
28+
-- Get last value from *_WATERMARKS
29+
local user_wm_last = redis.call('HGET', user_table_name .. ':' .. KEYS[i], sai_buffer_pool_watermark_stat_name)
30+
31+
-- Set higher value to *_WATERMARKS
32+
if user_wm_last then
33+
user_wm_last = tonumber(user_wm_last)
34+
if wm > user_wm_last then
35+
redis.call('HSET', user_table_name .. ':' .. KEYS[i], sai_buffer_pool_watermark_stat_name, wm)
36+
end
37+
else
38+
redis.call('HSET', user_table_name .. ':' .. KEYS[i], sai_buffer_pool_watermark_stat_name, wm)
39+
end
40+
41+
local persistent_wm_last = redis.call('HGET', persistent_table_name .. ':' .. KEYS[i], sai_buffer_pool_watermark_stat_name)
42+
if persistent_wm_last then
43+
persistent_wm_last = tonumber(persistent_wm_last)
44+
if wm > persistent_wm_last then
45+
redis.call('HSET', persistent_table_name .. ':' .. KEYS[i], sai_buffer_pool_watermark_stat_name, wm)
46+
end
47+
else
48+
redis.call('HSET', persistent_table_name .. ':' .. KEYS[i], sai_buffer_pool_watermark_stat_name, wm)
49+
end
50+
51+
local periodic_wm_last = redis.call('HGET', periodic_table_name .. ':' .. KEYS[i], sai_buffer_pool_watermark_stat_name)
52+
if periodic_wm_last then
53+
periodic_wm_last = tonumber(periodic_wm_last)
54+
if wm > periodic_wm_last then
55+
redis.call('HSET', periodic_table_name .. ':' .. KEYS[i], sai_buffer_pool_watermark_stat_name, wm)
56+
end
57+
else
58+
redis.call('HSET', periodic_table_name .. ':' .. KEYS[i], sai_buffer_pool_watermark_stat_name, wm)
59+
end
5560
end
5661
end
5762

orchagent/watermarkorch.cpp

Lines changed: 15 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
#define CLEAR_QUEUE_SHARED_UNI_REQUEST "Q_SHARED_UNI"
1414
#define CLEAR_QUEUE_SHARED_MULTI_REQUEST "Q_SHARED_MULTI"
1515
#define CLEAR_BUFFER_POOL_REQUEST "BUFFER_POOL"
16-
#define CLEAR_HEADROOM_POOL_REQUEST "HEADROOM_POOL"
1716

1817
extern PortsOrch *gPortsOrch;
1918
extern BufferOrch *gBufferOrch;
@@ -183,38 +182,32 @@ void WatermarkOrch::doTask(NotificationConsumer &consumer)
183182
if (data == CLEAR_PG_HEADROOM_REQUEST)
184183
{
185184
clearSingleWm(table,
186-
"SAI_INGRESS_PRIORITY_GROUP_STAT_XOFF_ROOM_WATERMARK_BYTES",
187-
m_pg_ids);
185+
"SAI_INGRESS_PRIORITY_GROUP_STAT_XOFF_ROOM_WATERMARK_BYTES",
186+
m_pg_ids);
188187
}
189188
else if (data == CLEAR_PG_SHARED_REQUEST)
190189
{
191190
clearSingleWm(table,
192-
"SAI_INGRESS_PRIORITY_GROUP_STAT_SHARED_WATERMARK_BYTES",
193-
m_pg_ids);
191+
"SAI_INGRESS_PRIORITY_GROUP_STAT_SHARED_WATERMARK_BYTES",
192+
m_pg_ids);
194193
}
195194
else if (data == CLEAR_QUEUE_SHARED_UNI_REQUEST)
196195
{
197196
clearSingleWm(table,
198-
"SAI_QUEUE_STAT_SHARED_WATERMARK_BYTES",
199-
m_unicast_queue_ids);
197+
"SAI_QUEUE_STAT_SHARED_WATERMARK_BYTES",
198+
m_unicast_queue_ids);
200199
}
201200
else if (data == CLEAR_QUEUE_SHARED_MULTI_REQUEST)
202201
{
203202
clearSingleWm(table,
204-
"SAI_QUEUE_STAT_SHARED_WATERMARK_BYTES",
205-
m_multicast_queue_ids);
203+
"SAI_QUEUE_STAT_SHARED_WATERMARK_BYTES",
204+
m_multicast_queue_ids);
206205
}
207206
else if (data == CLEAR_BUFFER_POOL_REQUEST)
208207
{
209208
clearSingleWm(table,
210-
"SAI_BUFFER_POOL_STAT_WATERMARK_BYTES",
211-
gBufferOrch->getBufferPoolNameOidMap());
212-
}
213-
else if (data == CLEAR_HEADROOM_POOL_REQUEST)
214-
{
215-
clearSingleWm(table,
216-
"SAI_BUFFER_POOL_STAT_XOFF_ROOM_WATERMARK_BYTES",
217-
gBufferOrch->getBufferPoolNameOidMap());
209+
"SAI_BUFFER_POOL_STAT_WATERMARK_BYTES",
210+
gBufferOrch->getBufferPoolNameOidMap());
218211
}
219212
else
220213
{
@@ -250,23 +243,15 @@ void WatermarkOrch::doTask(SelectableTimer &timer)
250243
}
251244

252245
clearSingleWm(m_periodicWatermarkTable.get(),
253-
"SAI_INGRESS_PRIORITY_GROUP_STAT_XOFF_ROOM_WATERMARK_BYTES",
254-
m_pg_ids);
255-
clearSingleWm(m_periodicWatermarkTable.get(),
256-
"SAI_INGRESS_PRIORITY_GROUP_STAT_SHARED_WATERMARK_BYTES",
257-
m_pg_ids);
246+
"SAI_INGRESS_PRIORITY_GROUP_STAT_XOFF_ROOM_WATERMARK_BYTES", m_pg_ids);
258247
clearSingleWm(m_periodicWatermarkTable.get(),
259-
"SAI_QUEUE_STAT_SHARED_WATERMARK_BYTES",
260-
m_unicast_queue_ids);
248+
"SAI_INGRESS_PRIORITY_GROUP_STAT_SHARED_WATERMARK_BYTES", m_pg_ids);
261249
clearSingleWm(m_periodicWatermarkTable.get(),
262-
"SAI_QUEUE_STAT_SHARED_WATERMARK_BYTES",
263-
m_multicast_queue_ids);
250+
"SAI_QUEUE_STAT_SHARED_WATERMARK_BYTES", m_unicast_queue_ids);
264251
clearSingleWm(m_periodicWatermarkTable.get(),
265-
"SAI_BUFFER_POOL_STAT_WATERMARK_BYTES",
266-
gBufferOrch->getBufferPoolNameOidMap());
252+
"SAI_QUEUE_STAT_SHARED_WATERMARK_BYTES", m_multicast_queue_ids);
267253
clearSingleWm(m_periodicWatermarkTable.get(),
268-
"SAI_BUFFER_POOL_STAT_XOFF_ROOM_WATERMARK_BYTES",
269-
gBufferOrch->getBufferPoolNameOidMap());
254+
"SAI_BUFFER_POOL_STAT_WATERMARK_BYTES", gBufferOrch->getBufferPoolNameOidMap());
270255
SWSS_LOG_DEBUG("Periodic watermark cleared by timer!");
271256
}
272257
}

tests/test_watermark.py

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ class SaiWmStats:
1212
pg_shared = "SAI_INGRESS_PRIORITY_GROUP_STAT_SHARED_WATERMARK_BYTES"
1313
pg_headroom = "SAI_INGRESS_PRIORITY_GROUP_STAT_XOFF_ROOM_WATERMARK_BYTES"
1414
buffer_pool = "SAI_BUFFER_POOL_STAT_WATERMARK_BYTES"
15-
hdrm_pool = "SAI_BUFFER_POOL_STAT_XOFF_ROOM_WATERMARK_BYTES"
1615

1716

1817
class WmTables:
@@ -24,7 +23,7 @@ class WmTables:
2423
class WmFCEntry:
2524
queue_stats_entry = {"QUEUE_COUNTER_ID_LIST": SaiWmStats.queue_shared}
2625
pg_stats_entry = {"PG_COUNTER_ID_LIST": "{},{}".format(SaiWmStats.pg_shared, SaiWmStats.pg_headroom)}
27-
buffer_stats_entry = {"BUFFER_POOL_COUNTER_ID_LIST": "{},{}".format(SaiWmStats.buffer_pool, SaiWmStats.hdrm_pool)}
26+
buffer_stats_entry = {"BUFFER_POOL_COUNTER_ID_LIST": SaiWmStats.buffer_pool}
2827

2928

3029
class TestWatermark(object):
@@ -81,7 +80,6 @@ def populate_asic_all(self, dvs, val):
8180
self.populate_asic(dvs, "SAI_OBJECT_TYPE_INGRESS_PRIORITY_GROUP", SaiWmStats.pg_shared, val)
8281
self.populate_asic(dvs, "SAI_OBJECT_TYPE_INGRESS_PRIORITY_GROUP", SaiWmStats.pg_headroom, val)
8382
self.populate_asic(dvs, "SAI_OBJECT_TYPE_BUFFER_POOL", SaiWmStats.buffer_pool, val)
84-
self.populate_asic(dvs, "SAI_OBJECT_TYPE_BUFFER_POOL", SaiWmStats.hdrm_pool, val)
8583
time.sleep(self.DEFAULT_POLL_INTERVAL)
8684

8785
def verify_value(self, dvs, obj_ids, table_name, watermark_name, expected_value):
@@ -183,7 +181,6 @@ def test_telemetry_period(self, dvs):
183181
self.verify_value(dvs, self.pgs, WmTables.periodic, SaiWmStats.pg_headroom, "0")
184182
self.verify_value(dvs, self.qs, WmTables.periodic, SaiWmStats.queue_shared, "0")
185183
self.verify_value(dvs, self.buffers, WmTables.periodic, SaiWmStats.buffer_pool, "0")
186-
self.verify_value(dvs, self.buffers, WmTables.periodic, SaiWmStats.hdrm_pool, "0")
187184

188185
self.populate_asic_all(dvs, "123")
189186

@@ -196,7 +193,6 @@ def test_telemetry_period(self, dvs):
196193
self.verify_value(dvs, self.pgs, WmTables.periodic, SaiWmStats.pg_headroom, "0")
197194
self.verify_value(dvs, self.qs, WmTables.periodic, SaiWmStats.queue_shared, "0")
198195
self.verify_value(dvs, self.buffers, WmTables.periodic, SaiWmStats.buffer_pool, "0")
199-
self.verify_value(dvs, self.buffers, WmTables.periodic, SaiWmStats.hdrm_pool, "0")
200196

201197
finally:
202198
self.clear_flex_counter(dvs)
@@ -218,7 +214,6 @@ def test_lua_plugins(self, dvs):
218214
self.verify_value(dvs, self.selected_pgs, table_name, SaiWmStats.pg_headroom, "192")
219215
self.verify_value(dvs, self.selected_pgs, table_name, SaiWmStats.pg_shared, "192")
220216
self.verify_value(dvs, self.buffers, table_name, SaiWmStats.buffer_pool, "192")
221-
self.verify_value(dvs, self.buffers, table_name, SaiWmStats.hdrm_pool, "192")
222217

223218
self.populate_asic_all(dvs, "96")
224219

@@ -227,7 +222,6 @@ def test_lua_plugins(self, dvs):
227222
self.verify_value(dvs, self.selected_pgs, table_name, SaiWmStats.pg_headroom, "192")
228223
self.verify_value(dvs, self.selected_pgs, table_name, SaiWmStats.pg_shared, "192")
229224
self.verify_value(dvs, self.buffers, table_name, SaiWmStats.buffer_pool, "192")
230-
self.verify_value(dvs, self.buffers, table_name, SaiWmStats.hdrm_pool, "192")
231225

232226
self.populate_asic_all(dvs, "288")
233227

@@ -236,7 +230,6 @@ def test_lua_plugins(self, dvs):
236230
self.verify_value(dvs, self.selected_pgs, table_name, SaiWmStats.pg_headroom, "288")
237231
self.verify_value(dvs, self.selected_pgs, table_name, SaiWmStats.pg_shared, "288")
238232
self.verify_value(dvs, self.buffers, table_name, SaiWmStats.buffer_pool, "288")
239-
self.verify_value(dvs, self.buffers, table_name, SaiWmStats.hdrm_pool, "288")
240233

241234
finally:
242235
self.clear_flex_counter(dvs)

0 commit comments

Comments
 (0)