在追蹤中,緩衝模式是指追蹤供應程式填滿緩衝區時的行為。如果追蹤服務供應商的緩衝區在追蹤記錄執行期間填滿,可能會導致追蹤記錄不完整。
每個追蹤提供者的行為皆獨立於其他追蹤提供者。如果其中一個追蹤提供者填滿緩衝區,其他追蹤提供者仍可繼續將追蹤事件記錄到其自己的緩衝區,直到追蹤停止為止。
有三種緩衝模式:
如要瞭解 fuchsia.tracing.provider
FIDL 的 BufferingMode
,請參閱 BufferingMode
。
一次性
在此緩衝區模式中,系統只有一組持久的緩衝區。如果追蹤提供者的緩衝區已滿,追蹤提供者就會停止記錄事件。
圓形
在此緩衝區模式中,追蹤緩衝區分為三部分:持久型緩衝區和兩個滾動緩衝區。持久型緩衝區用於記錄不應遺失的記錄。其中包括執行緒和字串參照的記錄。
啟動追蹤記錄時,追蹤提供者會將資料寫入第一個滾動式緩衝區。一旦一個滾動緩衝區填滿,追蹤提供者就會將資料寫入另一個滾動緩衝區。
如果緩衝區填充耐用,追蹤提供者就會停止追蹤。這項行為不會影響其他追蹤服務供應商。
正在串流播放
在此緩衝區模式中,追蹤緩衝區分為三部分:持久型緩衝區和兩個滾動緩衝區。持久型緩衝區用於記錄不應遺失的記錄。其中包括執行緒和字串參照的記錄。
啟動追蹤記錄時,追蹤提供者會將資料寫入第一個滾動式緩衝區。一旦一個滾動式緩衝區填滿後,追蹤提供者就會通知追蹤記錄管理員,指出其中一個滾動式緩衝區已滿,並將資料寫入另一個滾動緩衝區。如果無法使用其他滾動緩衝區,系統會捨棄資料,直到滾動式緩衝區可供使用為止。在填入內容的點之間,以及追蹤記錄管理員回報已儲存緩衝區內容後,就不再提供滾動式緩衝區。
資料捨棄的可能性取決於追蹤提供者建立記錄的頻率,以及追蹤記錄管理工具儲存緩衝區的速率。捨棄的資料可能會導致部分追蹤記錄不完整,但在大多數情況下,比起等候儲存緩衝區,藉此影響程式效能。
如果緩衝區填充耐用,追蹤提供者就會停止追蹤。這項行為不會影響其他追蹤服務供應商。