閘道是管線架構,管線的每個階段之間會有一個遞交佇列。由於透過閘道的流量會有突增的特性,預期遞交佇列中偶爾會出現封包累積。不過,如果在某些佇列中佇列長度持續過高,則表示有容量問題。
下列範例顯示用來檢視遞交佇列輸出的 debug.py
命令的輸出。
為求簡潔,輸出已遭到截斷而只會顯示第一個和最後一個項目。您可以在命令中排除 -v
選項,以透過表格格式檢視輸出。
vcadmin@vcg1-example:~$ /opt/vc/bin/debug.py -v --handoff { "handoffq": [ { "deq": 1087872263, "drops": 0, "dummy": 81805328, "enq": 1087872265, "head": 81805328, "lockfree": 0, "next": 0, "qlength": 2, "qlimit": 2048, "sleeping": 1, "state": "UNMONITORED", "tail": 81805328, "wmark": 948, "wokenup": 817162303 }, … { "deq": -1801919228, "drops": 0, "dummy": 176733280, "enq": -1801919223, "head": 176733280, "lockfree": 0, "name": "glob_ls_0", "next": 0, "qlength": 5, "qlimit": 1024, "sleeping": 1, "state": "UNMONITORED", "tail": 176733280, "wmark": 1024, "wokenup": 1567885088 } ] } vcadmin@vcg1-example:~$
您需要記下 qlength 和 wmark 的值。
qlength 資料行指出佇列中目前已緩衝的封包數。wmark 資料行則表示佇列曾經達到的最大深度,這會指出閘道有多接近捨棄封包。這些捨棄的影響和修復方法主要取決於受監控的佇列。
您應同時監控關鍵佇列和非關鍵佇列。