閘道是管線架構,管線的每個階段之間會有一個遞交佇列。由於透過閘道的流量會有突增的特性,預期遞交佇列中偶爾會出現封包累積。不過,如果在某些佇列中佇列長度持續過高,則表示有容量問題。

下列範例顯示用來檢視遞交佇列輸出的 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:~$ 

您需要記下 qlengthwmark 的值。

qlength 資料行指出佇列中目前已緩衝的封包數。wmark 資料行則表示佇列曾經達到的最大深度,這會指出閘道有多接近捨棄封包。這些捨棄的影響和修復方法主要取決於受監控的佇列。

您應同時監控關鍵佇列和非關鍵佇列。