實時優化 鏈路延遲計算

2021-09-19 20:30:10 字數 1291 閱讀 3573

如何為自動駕駛程式計算鏈路延遲?

換種思路, 其實可以大問題分解成小問題: 通過各部分task/io的執**況, 來證明某個鏈路的延遲.

stop鏈路如下, 從決策一直到底盤:

decider --> planning --> control --> guardian --> chassis
這裡的程式邏輯如下:

(time-based, 100hz)表示是定時觸發, 頻率為100hz

decider --> planning(time-based, 10hz) --> control(time-based, 100hz) --> guardian(event-based) --> chassis(time-based, 100hz)
如下假設是decider到planning發decision的乙個io情況:

max_delay(測量) = planning收到queue - decider發出 = cpu排程響應時間 + 處理時間 = 10ms
根據上面的資料, 該io的deadline可以設定到10ms

關於deadline概念:

planning的timer callback執**況如下:

max_delay(測量) = planning完成task- timer wakeup = cpu排程響應時間 + 處理時間 = 10ms
根據上面的資料, planning的timer task的deadline可以設定10ms

(time-based任務的deadline的start為timer wakeup時間, event-based任務的deadline的start為event input的時間)

最終:

decider到planning消費decision的延遲 = planning週期間隔(100ms) + planning timer deadline(10ms) + io deadline(10ms) = 120ms
其他地方同理, 乙個個計算過來疊加, 就可以得到整個鏈路的預期最大延遲.

這樣算過來的值會偏大, 但還是足夠合理.

使用上述方法, 鏈路的延遲就簡化為deadline一種可變數.

控制了deadline, 就可以保證所有鏈路延遲的確定.

即時是做了實時性優化, 也不能保證task/io的執行就不會超過deadline

Ruby 延遲計算與優化

ruby 的延遲計算大家已經用得很多了,下面就是乙個範例 def current user current user user.where id session user id first endend def foo current user current user endend但這個範例有乙個...

asterisk ss7 鏈路計算

相信不少人對 chan ss7或libss7能夠處理多少路呼叫懷有疑問。或者說,對於我的系統來說,究竟需要幾條鏈路呢?當然,如果是在asterisk常用的中小企業ip pbx和 呼叫中心市場裡,是完全不必考慮這些問題的,我們主要是針對運營級市場來 在 上有乙個計算 7號信令處理能力的計算方法 引用 ...

spark實時計算效能優化

1 計算提供兩種模式,一種是jar包本地計算 一種是jsf服務。在執行時衝突,storm也在用服務。4 第三步在此擴量到1000,採用增加執行緒方式,效能達到25ms左右。已在預發 5 第四步召回集在擴量,如效能瓶頸是io,則使用jar包本地計算,但與jdq衝突。需要將線上上報遷移到統一上報服務,服...