如何為自動駕駛程式計算鏈路延遲?
換種思路, 其實可以大問題分解成小問題: 通過各部分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衝突。需要將線上上報遷移到統一上報服務,服...